Örnek 3
Senaryo :
İnternetteki bir kaynak üzerindeki resim datasını alıp, ilgili bir stok kartına ekleme. Örnekte Stok Kodu:000010 olan.
Örnekler diademo sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# -*- coding: utf-8 -*-
'''
Örnek çalışma:
İnternetteki bir kaynaktaki resmin stok kartına aktarılması
'''
import sys
import json
from pprint import pprint
import urllib2
import base64
# servis çağrısı atılacak adres ön eki
wsAdresMain = 'https://diademo.ws.dia.com.tr/api/v3/'
# diademo sunucusundaki ilgili firma kodu
firma_kodu = 34
# diademo sunucusundaki ilgili dönem kodu
donem_kodu = 1
def callWs(wsAdres, postBody):
# Gönderilen adrese, gönderilen json çağrısı atar,
# sonuç başarılıysa döndürür, yoksa çıkar
req = urllib2.Request(wsAdres,
data=json.dumps(postBody),
headers={"Content-Type": "application/json"})
wsResult = urllib2.urlopen(req).read()
wsResult = json.loads(wsResult)
# sonuç kodu 200 döndüyse başarılı
if wsResult and wsResult['code'] == '200':
# msg içerisinde sessin id çıkaralım
return wsResult
else:
pprint(wsResult)
sys.exit(0)
############################################
# 1. AŞAMA : SESSION ID ALALIM
# login ws parametreleri
postBody = {"login" :
{"username": 'ws',
"password": 'ws',
"disconnect_same_user": True,
"lang": 'tr',
}
}
wsResult = callWs(wsAdresMain + 'sis/json', postBody)
session_id = wsResult['msg']
print "session_id: %s" % session_id
############################################
# 2. AŞAMA : Hangi stokla çalışacaksa onun _key bilgisini bulalım
# scf_stokkart_listele servisine ilgili filtreyi uygulayarak stoğu alalım
postBody = {"scf_stokkart_listele" :
{"session_id": session_id,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"filters":[{"field": "stokkartkodu", "operator": "=", "value": "000010"}]
}
}
wsResult = callWs(wsAdresMain + 'scf/json', postBody)
stokKartlarResult = wsResult['result']
print u"Stok kart bilgisi alındı"
############################################
# 3. AŞAMA : RESİM DATASINI WEB'DEN ÇEKİP SUNUCUYA GÖNDERELİM
if stokKartlarResult:
# resim datasını internetten çekelim
resimData = urllib2.urlopen("http://www.dia.com.tr/wp-content/uploads/dia-logo-100.png").read()
# resimleri ilgili stok bağlantısını da kullanarak
# aws'ye dosya olarak gönderelim.
postBody = {"sis_aws_dosya_ekle" :
{"session_id": session_id,
"firma_kodu": firma_kodu,
"donem_kodu": donem_kodu,
"kart":
{"kayitturu": "scf_stokkart",
"_key_kayit": stokKartlarResult[0]['_key'], # Gelen listedeki ilk elemana ait _key
"order_id": 1,
"ext": "PNG",
"base64data": base64.b64encode(resimData) # resmi base64 encode edilmiş haliyle gönderiliyoruz
}
}
}
callWs(wsAdresMain + 'sis/json', postBody)
print u"İşlem tamamlandı."