Browse Source

add json to object and http requests

Evgeny Polivanov 1 year ago
parent
commit
a3816aaffd
6 changed files with 82 additions and 3 deletions
  1. 0 0
      2023-04-27-open_template_bot.log
  2. 0 0
      2023-04-27-test.log
  3. 2 0
      BotClass.py
  4. 47 0
      jsonAndRequest.py
  5. 28 3
      open_template_bot.py
  6. 5 0
      requirements.txt

File diff suppressed because it is too large
+ 0 - 0
2023-04-27-open_template_bot.log


File diff suppressed because it is too large
+ 0 - 0
2023-04-27-test.log


+ 2 - 0
BotClass.py

@@ -8,12 +8,14 @@ class JabberBot:
         self.jidd = jid
         jid = xmpp.JID(jid)
         self.user, self.server, self.password, self.port = jid.getNode(), jid.getDomain(), password, port
+        #self.user, self.server, self.password = jid.getNode(), jid.getDomain(), password
         self.connect()
         self.auth()
 
     #Метод проверки подключения к серверу xmpp
     def connect(self): 
         self.conn = xmpp.Client(self.server, self.port,debug = [])
+        #self.conn = xmpp.Client(self.server,debug = [])
         conn_result = self.conn.connect()
         if not conn_result:
             print("Can't connect to server!\n")

+ 47 - 0
jsonAndRequest.py

@@ -0,0 +1,47 @@
+import json
+import requests
+#Тестовый класс User и Address (ВАЖНО!!!) поля классов должны называться также как и поля json объекта
+class Address(object):
+    def __init__(self, street, number):
+        self.street = street
+        self.number = number
+
+    def __str__(self):
+        return "{0} {1}".format(self.street, self.number)
+
+class User(object):
+    def __init__(self, name, address):
+        self.name = name
+        self.address = Address(**address)
+    
+    def __str__(self):
+        return "{0} ,{1}".format(self.name, self.address)
+
+#Функция преобразования json в объект класса 
+def jsonToUser(jsonstring) -> User:
+    jsonObj = json.loads(jsonstring)
+    print(jsonObj)
+    u = User(**jsonObj)
+    return u
+
+#Функция обращения к апи и получение токена
+def requestGetToken() -> str:
+    login = "79876543210"
+    password = "admin12345@"
+    url = "https://user.sharix-app.org/auth/token/login/"
+    data = {
+        "password": password,
+        "phone_number": login
+    }
+    response = requests.post(url, json=data)
+    result = response.json()
+    return result['auth_token']
+#Функция обращения к апи и получение списка пользователей
+def requestGetListUser():
+    auth_token=requestGetToken()
+    print(auth_token)
+    headers = {'Authorization': f'Token {auth_token}'}
+    url = 'https://user.sharix-app.org/platform/api/sharix-users/'
+    response = requests.get(url, headers=headers)
+    print(response)
+    print(response.json())

+ 28 - 3
open_template_bot.py

@@ -7,18 +7,24 @@ import json
 import hashlib
 from datetime import datetime
 
+#test
+import jsonAndRequest as jsreq
+
 #В этом файле содержится только то, что запускает конкретный обработчик
 
 # botname="open_strequest_assigned"
 botname="open_template_bot"
+#botname="test"
 JID=botname+"@"+config.JSERVER
+#JID=f"{botname}@msg.sharix-app.org"
 #PASSWORD=config.PASSWORD
 PORT=config.PORT
 
 #раскомментировать, когда перейдем на разные пароли
 PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD="test1234@"
 
-print (JID, PASSWORD)
+print(JID, PASSWORD)
 
 #таким образом хранится список jid, от которых можно получать сообщения этому боту
 listen_to=["test@msg.sharix-app.org", "test1@msg.sharix-app.org"]
@@ -30,7 +36,23 @@ process_to=["test@msg.sharix-app.org", "test1@msg.sharix-app.org"]
 def message_handler(conn, mess):
     text = mess.getBody()#текст сообщения боту
     user = mess.getFrom()#отправитель сообщения
-   
+    #example json to object user
+    if text is not None:
+        """ example json
+            {
+                "name":"Cristian", 
+                "address":
+                {
+                    "street":"Sesame",
+                    "number":122
+                }
+            }
+        """
+        userObj = jsreq.jsonToUser(text)
+        print(userObj.name)
+        print(userObj.address.street)
+        #HTTP запрос
+        jsreq.requestGetListUser()
     #нужна проверка, данный обработчик вообще должен от данного отправителя получать сообщения или нет. Подсказка ниже
     if user in listen_to:
         print(text)
@@ -43,8 +65,9 @@ def message_handler(conn, mess):
             bot.bot_log(" ".join(str(datetime.now()), str(i), "Заказ успешно добавлен в очередь обработки"))
 
 
+
 def open_bot_template(tasklist):
-    print("Тут описывается работа со списком задач в данном статусе")
+    #print("Тут описывается работа со списком задач в данном статусе")
     for i in range(len(tasklist)):
         #проверяем элемент tasklist[i]
         bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + str(i) + " " + "Заказ в очереди на обработке")
@@ -68,3 +91,5 @@ bot.fake_api_call("Получаем список заказов по назва
 bot.register_handler('message', message_handler)
 bot.start(open_bot_template, tasklist)
 
+
+

+ 5 - 0
requirements.txt

@@ -1,2 +1,7 @@
+certifi==2022.12.7
+charset-normalizer==3.1.0
+idna==3.4
+requests==2.29.0
 six==1.16.0
+urllib3==1.26.15
 xmpppy==0.7.1

Some files were not shown because too many files changed in this diff