İçindekiler

Ö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ı."