Ana içeriğe atla

Groovy Script

import com.apinizer.common.util.*

try{
    // clear table
    def get = new URL("http://192.168.100.100:30080/apigateway/personel/temizle").openConnection()
    get.setRequestMethod("GET")
    get.setDoOutput(true)
    get.setRequestProperty("Content-Type", "application/json")
    get.setRequestProperty("Username", "")
    get.setRequestProperty("Password", "")
    def getRC = get.getResponseCode()
    if(getRC.equals(400)|| getRC.equals(401)) {
        responseErrorMessageToClient="Yetkilendirme Hatası!"
    }
}catch(Exception e){
}

int itemCount = responseBodyTextToClient.count("<item>")

String templateJson = "{" +
    "\"sicil_no\":\"#sicil_no\", " +
    "\"adi\" :\"#adi\"," +
    "\"soyadi\" :\"#soyadi\"," +
    "\"isyeri_kodu\" :\"#isyeri_kodu\"," +
    "\"calistigi_isyeri\" :\"#calistigi_isyeri\"," +
    "\"ik_bilgileri\" :\"#ik_bilgileri\"," +
    "\"calistigi_birim\" :\"#calistigi_birim\"," +
    "\"unvani\" :\"#unvani\"," +
    "\"gorevi\" :\"gorevi\"," +
    "\"dogum_gunu\" :\"#dogum_gunu\"," +
    "\"ise_giris_tarihi\" :\"#ise_giris_tarihi\"," +
    "\"yonetici_adi\" :\"#yonetici_adi\"," +
    "\"yonetici_soyadi\" :\"#yonetici_soyadi\"," +
    "\"yonetici_sicil\" :\"#yonetici_sicil\"," +
    "\"eposta\" :\"#eposta\"," +
    "\"telefon\" :\"#telefon\"," +
    "\"tckimlikno\":\"#tckimlikno\"" +
    "}"

String hataliIdStr=""

for(int i=1; i < itemCount+1; i++){
    String valueJson = templateJson
    String xpathId = "(/ArrayList/item)[" +i+ "]/id"
    String valueId = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpathId, true)
    
    try{
        String xpath = "(/ArrayList/item)[" +i+ "]/secondaryNr"
        String value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#sicil_no", value )
        
        xpath = "(/ArrayList/item)[" +i+ "]/name"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#adi", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/surname"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#soyadi", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/bizUnit/code"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#isyeri_kodu", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/bizUnit/description"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#calistigi_isyeri", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/orgUnit/code"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#ik_bilgileri", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/orgUnit/description"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#calistigi_birim", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/profession"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#unvani", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/jobTitle"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#gorevi", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/birthday"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        if(org.apache.commons.lang3.StringUtils.isNotBlank(value) && value.length()>10){
            value=value.substring(0,10)
        }
        valueJson = valueJson.replace("#dogum_gunu", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/entryDate"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        if(org.apache.commons.lang3.StringUtils.isNotBlank(value) && value.length()>10){
            value=value.substring(0,10)
        }
        valueJson = valueJson.replace("#ise_giris_tarihi", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/supervisor/name"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#yonetici_adi", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/supervisor/surname"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#yonetici_soyadi", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/supervisor/secondaryNr"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#yonetici_sicil", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/contactInfo/email"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#eposta", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/contactInfo/mobile1"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#telefon", value)
        
        xpath = "(/ArrayList/item)[" +i+ "]/officialId"
        value = UtilXmlOperations.extractFromXmlBody( responseBodyTextFromTargetAPI, xpath, true)
        valueJson = valueJson.replace("#tckimlikno", value)
        
        // POST to DB
        def post = new URL("http://192.168.100.100:30080/apigateway/personel/kaydet").openConnection()
        post.setRequestMethod("POST")
        post.setDoOutput(true)
        post.setRequestProperty("Content-Type", "application/json")
        post.setRequestProperty("Username", "")
        post.setRequestProperty("Password", "")
        post.getOutputStream().write(valueJson.getBytes("UTF-8"))
        def postRC = post.getResponseCode()
        
        if(postRC.equals(400)|| postRC.equals(401)) {
            responseErrorMessageToClient="Yetkilendirme Hatası!"
            break
        }
        
        if(!postRC.equals(200)) {
            hataliIdStr=valueId+","+hataliIdStr
        }
    }catch(Exception e){
        hataliIdStr=valueId+","+hataliIdStr
    }
}

if(hataliIdStr.endsWith(",")){
    hataliIdStr = hataliIdStr.substring(0,hataliIdStr.length() - 1)
}

if(org.apache.commons.lang3.StringUtils.isNotBlank(hataliIdStr)){
    responseErrorMessageToClient=hataliIdStr+" id'li kayıtlar kaydedilemedi!"
}else{
    responseBodyTextToClient="<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
        "<soap:Body>" +
        " <result>OK</result>" +
        "</soap:Body>" +
        "</soap:Envelope>"
}

Açıklama

Bu script şu işlemleri gerçekleştirir:
  1. XML Parse İşlemi: Yanıt içindeki <item> elemanları sayılır
  2. Veri Çıkarma: Her item için XPath kullanılarak veriler çıkarılır
  3. JSON Oluşturma: Çıkarılan veriler JSON template’ine yerleştirilir
  4. API Çağrısı: Oluşturulan JSON, POST isteği ile başka bir API’ye gönderilir
  5. Hata Yönetimi: Hata durumunda hata mesajı oluşturulur, başarılı durumda SOAP yanıtı döner
Bu script, response hattında (Response Policy) çalıştırılmalıdır çünkü responseBodyTextFromTargetAPI ve responseBodyTextToClient değişkenlerini kullanmaktadır.