Skip to content
This repository was archived by the owner on Nov 4, 2025. It is now read-only.

Commit f4de347

Browse files
committed
0.8 refactor func, add exception, multiclients support
1 parent d0ce0dc commit f4de347

7 files changed

Lines changed: 182 additions & 328 deletions

File tree

README.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
### Неофициальная библиотека для запросов к Единой мобильной платформе города Москвы
22

33
[Сайт](http://mosapps.mos.ru/dev)
4+
[Единая мобильная платформа города Москвы](http://serviceprovider.if.emp.msk.ru/default/auth)
45

56
Для выполнения запросов требуются:
67
- уникальный ключ вашего приложения (token), [выданный Правительством Москвы](http://mosapps.mos.ru/dev).
@@ -66,8 +67,3 @@ python https://bootstrap.pypa.io/get-pip.py
6667
перезагружаем терминал
6768
```
6869

69-
## Создание пакета
70-
```
71-
python setup.py sdist --formats=zip bdist_wheel # или --formats=gztar
72-
twine upload dist/*
73-
```

emp_mos_api/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
from mos import MosAPI, AuthException
1+
2+
from emp_mos_api.mos import MosAPI, Water, Watercounter, \
3+
AuthException, EmpServerException
Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
# -*- coding: utf-8 -*-
22
from __future__ import print_function
33
import argparse
4-
from emp_mos_api.mos import MosAPI, \
5-
get_flat_name, get_flat_address, get_flat_paycode, get_flat_number, \
6-
get_profile_firstname, get_profile_middlename, get_profile_lastname, \
7-
get_profile_birthdate, get_profile_msisdn, get_profile_email
4+
from emp_mos_api import MosAPI, AuthException, EmpServerException
85

9-
10-
# Код написан общим для python2, python3 синтаксисом благодаря
6+
# Код написан общим для python2, python3 благодаря
117
# http://python-future.org/compatible_idioms.html
128

139
if __name__ == "__main__":
@@ -29,18 +25,19 @@
2925
user_agent=args.user_agent,
3026
guid=args.guid,
3127
dev_user_agent=args.dev_user_agent,
32-
dev_app_version=args.dev_app_version)
28+
dev_app_version=args.dev_app_version,
29+
timeout=6)
3330

3431
try:
3532
api.login(args.login, args.pwd)
3633
p = api.get_profile()
3734

38-
print('ФИО: ', get_profile_firstname(p),
39-
' ', get_profile_middlename(p),
40-
' ', get_profile_lastname(p))
41-
print('Дата рождения: ', get_profile_birthdate(p))
42-
print('Телефон: ', get_profile_msisdn(p))
43-
print('Эл. почта: ', get_profile_email(p))
35+
print('ФИО: ', p['firstname'],
36+
' ', p['middlename'],
37+
' ', p['lastname'])
38+
print('Дата рождения: ', p['birthdate'])
39+
print('Телефон: ', p['msisdn'])
40+
print('Эл. почта: ', p['email'])
4441

4542
flats = api.get_flats()
4643

@@ -49,10 +46,19 @@
4946

5047
for f in flats:
5148
print('Квартира #', flats.index(f) + 1)
52-
print('Название: ', get_flat_name(f))
53-
print('Адрес: ', get_flat_address(f))
54-
print('Номер кв: ', get_flat_number(f))
55-
print('Номер платежки: ', get_flat_paycode(f))
49+
print('Название: ', f['name'])
50+
print('Адрес: ', f['address'])
51+
print('Номер кв: ', f['flat_number'])
52+
print('Номер платежки: ', f['paycode'])
5653

54+
except AuthException as err:
55+
print('Некорректный логин или пароль')
56+
except EmpServerException as err:
57+
print('Ошибка сервера: {}'.format(err))
58+
except Exception as err:
59+
print('Ошибка: {}'.format(err))
5760
finally:
58-
api.logout()
61+
try:
62+
api.logout()
63+
except Exception as err:
64+
print('Ошибка: {}'.format(err))
Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
# -*- coding: utf-8 -*-
22
from __future__ import print_function
33
import argparse
4-
from emp_mos_api.mos import MosAPI, \
5-
get_flat_id, get_flat_address, get_flat_paycode, get_flat_number, \
6-
get_watercounters_by_type, get_watercounter_last_value, \
7-
get_watercounter_id, watercounter_new_value_json, \
8-
HOT_WATER, COLD_WATER
4+
from emp_mos_api import MosAPI, Water, Watercounter
95

106

117
if __name__ == "__main__":
@@ -30,51 +26,49 @@
3026
user_agent=args.user_agent,
3127
guid=args.guid,
3228
dev_user_agent=args.dev_user_agent,
33-
dev_app_version=args.dev_app_version)
29+
dev_app_version=args.dev_app_version,
30+
verify=True)
3431

3532
try:
3633
api.login(args.login, args.pwd)
3734

3835
flats = api.get_flats()
3936
assert flats, u'Добавьте квартиру в приложении Госуслуги Москвы'
4037
f = flats[0]
41-
print('Адрес: ', get_flat_address(f))
42-
print('Номер кв: ', get_flat_number(f))
43-
print('Номер платежки: ', get_flat_paycode(f))
38+
print('Адрес: ', f['address'])
39+
print('Номер кв: ', f['flat_number'])
40+
print('Номер платежки: ', f['paycode'])
4441

45-
json_data = api.get_watercounters(get_flat_id(f))
46-
json_wc = api.get_watercounters(json_data)
42+
counters = api.get_watercounters(f['flat_id'])['counters']
4743

4844
new_values = []
4945

50-
#
51-
hots_json = get_watercounters_by_type(HOT_WATER, json_wc) # разбираем ответ
52-
46+
hots_json = list(filter(lambda x: x['type'] == Water.HOT, counters))
5347
if hots_json:
54-
hot_value = get_watercounter_last_value(hots_json[0])
48+
hot_value = Watercounter.last_value(hots_json[0])
5549
print('Текущее показание горячей воды: {:.2f} m3'.format(hot_value))
5650

5751
if args.hot:
58-
new_values.append(watercounter_new_value_json(get_watercounter_id(hots_json[0]), args.hot))
52+
new_values.append(Watercounter.serialize_for_send(hots_json[0], args.hot))
5953
print('Новое показание горячей воды: {:.2f} m3'.format(args.hot))
6054
else:
6155
print('Не найден счетчик горячей воды')
6256

6357
#
64-
colds_json = get_watercounters_by_type(COLD_WATER, json_wc)
58+
colds_json = list(filter(lambda x: x['type'] == Water.COLD, counters))
6559
if colds_json:
66-
cold_value = get_watercounter_last_value(colds_json[0])
60+
cold_value = Watercounter.last_value(colds_json[0])
6761
print('Текущее показание холодной воды: {:.2f} m3'.format(cold_value))
6862

6963
if args.cold:
70-
new_values.append(watercounter_new_value_json(get_watercounter_id(colds_json[0]), args.cold))
64+
new_values.append(Watercounter.serialize_for_send(colds_json[0], args.cold))
7165
print('Новое показание холодной воды: {:.2f} m3'.format(args.cold))
7266
else:
7367
print('Не найден счетчик холодной воды')
7468

7569
if new_values:
76-
api.send_watercounters(get_flat_id(f), new_values)
70+
api.send_watercounters(f['flat_id'], new_values)
7771
print('Показания отправлены на сервер')
7872

7973
finally:
80-
api.logout()
74+
api.logout() #долго

0 commit comments

Comments
 (0)