12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import time
- import boto3
- from django.views import View
- from Model.models import Device_User, Device_Info, RegionCountryModel
- from Object.IOTCore.IotObject import ChinaIOTClient, AsiaIOTClient, EuropeIOTClient, AmericaIOTClient
- from Object.ResponseObject import ResponseObject
- from Service.CommonService import CommonService
- class IotCoreView(View):
- def get(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = request.GET
- operation = kwargs.get('operation', None)
- return self.validate(operation, request_dict)
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = request.POST
- operation = kwargs.get('operation', None)
- return self.validate(operation, request_dict)
- def validate(self, operation, request_dict):
- response = ResponseObject()
- if operation == 'createProvisioningClaim':
- return self.create_provisioning_claim(request_dict, response)
- else:
- return response.json(404)
- def create_provisioning_claim(self, request_dict, response):
- uid = request_dict.get('uid', None)
- token = request_dict.get('token', None)
- time_stamp = request_dict.get('time_stamp', None)
- if uid and token and time_stamp:
- token = CommonService.decode_data(token)
- time_stamp = int(time_stamp)
- now_time = int(time.time())
- distance = now_time - time_stamp
- if token != time_stamp and distance > 600:
- return response.json(404)
- region_country_qs = Device_Info.objects.filter(UID=uid).values('userID__region_country')
- if not region_country_qs.exists():
- return response.json(173)
- region_country_qs = RegionCountryModel.objects.filter(number=region_country_qs[0]['userID__region_country'])
- if region_country_qs.exists():
- user_region = region_country_qs[0]
- if user_region.region_id == 1:
- iotClient = ChinaIOTClient()
- return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
- elif user_region.region_id == 2:
- iotClient = AsiaIOTClient()
- return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
- elif user_region.region_id == 3:
- iotClient = EuropeIOTClient()
- return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
- else:
- iotClient = AmericaIOTClient()
- return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
- else:
- return response.json(444)
|