Ana içeriğe atla

Groovy Script

import groovy.xml.XmlSlurper
import groovy.xml.XmlUtil
import groovy.xml.StreamingMarkupBuilder

try {
  def namespacePrefix = 'sch'
  def namespaceUri = 'http://kurum.com/ws/some-func-ws/schemas'
  def userName = request_usernameOrKey

  // XmlSlurper kullanarak XML'i parse et ve namespace'leri tanımla
  def rootNode = new XmlSlurper(false, true).parseText(requestBodyTextFromClient).declareNamespace(
    'soapenv': 'http://schemas.xmlsoap.org/soap/envelope/',
    'sch': 'http://kurum.com/ws/some-func-ws/schemas'
  )

  // Header kısmı mevcut mu kontrol et, değilse oluştur
  def headerNode = rootNode.'soapenv:Header'
  if (!headerNode) {
    headerNode = rootNode.appendNode { 'soapenv:Header' {} }
  }

  // userId öğesini oluştur ve ekle
  def userIdNode = new XmlSlurper(false, true).parseText("<${namespacePrefix}:userId xmlns:${namespacePrefix}='${namespaceUri}'>${userName}</${namespacePrefix}:userId>")
  headerNode.appendNode { mkp.yield userIdNode }

  // Güncellenmiş XML'i dize olarak serileştir
  def outputXml = XmlUtil.serialize(new StreamingMarkupBuilder().bind {
    mkp.declareNamespace('soapenv': 'http://schemas.xmlsoap.org/soap/envelope/', 'sch': 'http://kurum.com/ws/some-func-ws/schemas')
    mkp.yield rootNode
  })

  requestBodyTextToTargetAPI = outputXml
} catch (Exception e) {
  e.printStackTrace()
}

Açıklama

Bu script şu işlemleri gerçekleştirir:
  1. XML Parse: Request body’den gelen XML verisi parse edilir
  2. Header Kontrolü: SOAP Header alanı mevcut mu kontrol edilir, değilse oluşturulur
  3. Username Alma: Authentication’dan gelen username bilgisi alınır
  4. Header’a Ekleme: Username bilgisi Header alanına eklenir
  5. Backend’e Gönderme: Güncellenmiş XML backend’e gönderilir
Bu script, request hattında (Request Policy) çalıştırılmalıdır çünkü requestBodyTextFromClient ve requestBodyTextToTargetAPI değişkenlerini kullanmaktadır.