-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathzapretinfo.py
79 lines (60 loc) · 2.96 KB
/
zapretinfo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__version__ = "0.0.9"
__author__ = "[email protected]"
import suds
from base64 import b64encode
import os
API_URL = "http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl"
# API_URL = "http://vigruzki.rkn.gov.ru/services/OperatorRequestTest/?wsdl"
class ZapretInfoException(RuntimeError):
pass
class ZapretInfo(object):
def __init__(self):
self.cl = suds.client.Client(API_URL)
def getLastDumpDateEx(self):
'''
Метод предназначен для получения временной метки последнего обновления выгрузки из реестра,
а также для получения информации о версиях веб-сервиса, памятки и текущего формата выгрузки.
'''
result = self.cl.service.getLastDumpDateEx()
return result
def getLastDumpDate(self):
'''
Оставлен для совместимости. Аналогичен getLastDumpDateEx, но возвращает только один
параметр lastDumpDate.
'''
result = self.cl.service.getLastDumpDate()
return result
def sendRequest(self, requestFile, signatureFile, versionNum='2.2'):
'''
Метод предназначен для направления запроса на получение выгрузки из реестра.
'''
if not os.path.exists(requestFile):
raise ZapretInfoException('No request file')
if not os.path.exists(signatureFile):
raise ZapretInfoException('No signature file')
with open(requestFile, "rb") as f:
data = f.read()
xml = b64encode(data)
with open(signatureFile, "rb") as f:
data = f.readlines()
if '-----' in data[0]:
sert = ''.join(data[1:-1])
else:
sert = ''.join(data)
sert = b64encode(sert)
result = self.cl.service.sendRequest(xml, sert, versionNum)
return dict(((k, v.encode('utf-8')) if isinstance(v, suds.sax.text.Text) else (k, v)) for (k, v) in result)
def getResult(self, code):
'''
Метод предназначен для получения результата обработки запроса - выгрузки из реестра
'''
result = self.cl.service.getResult(code)
return dict(((k, v.encode('utf-8')) if isinstance(v, suds.sax.text.Text) else (k, v)) for (k, v) in result)
def getResultSocResources(self, code):
'''
Метод предназначен для получения результата обработки запроса - выгрузки из реестра
'''
result = self.cl.service.getResultSocResources(code)
return dict(((k, v.encode('utf-8')) if isinstance(v, suds.sax.text.Text) else (k, v)) for (k, v) in result)