lang vor 4 Jahren
Ursprung
Commit
886da005ff
2 geänderte Dateien mit 42 neuen und 12 gelöschten Zeilen
  1. 41 12
      controller/deviceStatus.py
  2. 1 0
      model/models.py

+ 41 - 12
controller/deviceStatus.py

@@ -49,12 +49,12 @@ class deviceStatus(TemplateView):
             return JsonResponse({'code':404,'msg':'not found'})
         if operation == 'saveAccessToken':
             return self.saveAccessToken(request_dict, response)
-        # 付款完成
+        if operation == 'addOrUpdate':
+            return self.addOrUpdate(request_dict, response)
+        if operation == 'delete':
+            return self.delete(request_dict, response)
         elif operation == 'test':
-            return JsonResponse({'code':404,'msg':'not found'})
-            return self.test(request_dict, response)
-
-
+            return self.discover(request_dict, response)
 
 
     def saveAccessToken(self,request_dict, response):
@@ -72,12 +72,14 @@ class deviceStatus(TemplateView):
                 access_token = access_token,
                 refresh_token = refresh_token,
                 token = token,
+                expiresTime = nowTime + 3200,
                 addTime=nowTime,
                 updTime=nowTime)
         else:
             alexAuth.update(
                 access_token = access_token,
                 refresh_token = refresh_token,
+                expiresTime = nowTime + 3200,
                 token = token,
                 updTime=nowTime
             )
@@ -85,11 +87,32 @@ class deviceStatus(TemplateView):
 
     def discover(self,request_dict, response):
         userID = 158943604783713800138000
+        token = 'cGSOD01pi2BICtGd1SVdjegwrVKV1Kmn'
+        alexAuth = AlexaAuthModel.objects.filter(token=token)
+        if not alexAuth.exists():
+            return JsonResponse({'code':200,'msg':'fail'})
+        else:
+            res = alexAuth.values()
+            access_token = res[0]['access_token']
+            refresh_token = res[0]['refresh_token']
+            token = res[0]['token']
+            return JsonResponse({'code':200,'msg':res[0]['access_token']})
+
 
-    def test(self,request_dict, response):
+    def addOrUpdate(self,request_dict, response):
+        UID = request_dict.get("UID", '')
+        userID = request_dict.get("userID", '')
+        uid_nick = request_dict.get("uid_nick", '')
+
+        if UID != '' and userID != '' and uid_nick != '':
+            return JsonResponse({'code':200,'msg':'success'})
+        else:
+            return JsonResponse({'code':200,'msg':'fail'})
+
+        access_token = 'xx'
         api_uri = 'https://api.amazonalexa.com/v3/events'
         messageId = str(uuid.uuid4())
-        access_token = 'Atza|IwEBIGZVV6GPFAXf1_ySVAZkOfGc2j0rNhAnGW8dQ71KVnBY9XmKoi5xd1742t-64FLiM27ErgW_D9sqfAd2A69F1o63_HyPeTfP1_CpgYj6ohGGoMTAN9id58PBOyXtqoJr698luykXb8cT30LBxTqU8zYcmxwJfMzyr2Mxz6KkNtusSB4mHBEkfmQ-xkZ_87G0sUscbVokLnkd676kQAuPzmuYzY_nLLbkR28x8ohh0F9lGZYyEJjyg8-VXdoqWBMfEYxgCnQo76FOXXDFyVEPg6ZC'
+        access_token = access_token
         bearer_access_token = 'Bearer {access_token}'.format(access_token=access_token)
         headers =  {'content-type': "application/json", 'Authorization': bearer_access_token}
         payload = {
@@ -103,10 +126,10 @@ class deviceStatus(TemplateView):
                 "payload": {
                     "endpoints": [
                         {
-                            "endpointId": "HVTLKFJM6KDTAF9J111A",
-                            "manufacturerName": "Sample Manufacturer",
-                            "description": "Smart Light by Sample Manufacturer",
-                            "friendlyName": "Kitchen Light",
+                            "endpointId": UID,
+                            "manufacturerName": "zosi smart",
+                            "description": "Camera connected via zosi smart",
+                            "friendlyName": uid_nick,
                             "displayCategories": [
                                 "CAMERA"
                             ],
@@ -130,7 +153,6 @@ class deviceStatus(TemplateView):
                                     "version": "3",
                                     "proactivelyReported": True,
                                     # "retrievable": True
-
                                 }
                             ]
                         }
@@ -146,6 +168,13 @@ class deviceStatus(TemplateView):
         request_json = response.json()
         return JsonResponse({'res': request_json})
 
+    def delete(self,request_dict, response):
+        UID = request_dict.get("UID", '')
+        if UID != '':
+            return JsonResponse({'code':200,'msg':'success'})
+        else:
+            return JsonResponse({'code':200,'msg':'fail'})
+
 
     def post_to_api(self, payload):
         connection = http.client.HTTPSConnection("api.amazon.com")

+ 1 - 0
model/models.py

@@ -48,6 +48,7 @@ class AlexaAuthModel(models.Model):
     access_token = models.CharField(max_length=150, unique=True, default='', verbose_name='访问令牌')
     refresh_token = models.CharField(max_length=150, unique=False, default='', verbose_name='刷新令牌')
     token = models.CharField(max_length=150, unique=False, default='', verbose_name='区分用户token')
+    expiresTime = models.IntegerField(verbose_name='过期时间', default=0)
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
     updTime = models.IntegerField(verbose_name='更新时间', default=0)