-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathzapretinfo.py
70 lines (52 loc) · 2.45 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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__version__ = "0.0.9"
__author__ = "[email protected], https://github.com/yegorov-p/python-zapret-info"
import suds.client
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.client = suds.client.Client(API_URL)
def getLastDumpDateEx(self):
"""
Метод предназначен для получения временной метки последнего обновления выгрузки из реестра,
а также для получения информации о версиях веб-сервиса, памятки и текущего формата выгрузки.
"""
result = self.client.service.getLastDumpDateEx()
return result
def getLastDumpDate(self):
"""
Оставлен для совместимости. Аналогичен getLastDumpDateEx, но возвращает только один
параметр lastDumpDate.
"""
result = self.client.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)
xml = xml.decode('utf-8')
with open(signatureFile, "rb") as f:
data = f.read()
sert = b64encode(data)
sert = sert.decode('utf-8')
result = self.client.service.sendRequest(xml, sert, versionNum)
return dict((k, v) for (k, v) in result)
def getResult(self, code):
"""
Метод предназначен для получения результата обработки запроса - выгрузки из реестра
"""
result = self.client.service.getResult(code)
return dict((k, v) for (k, v) in result)