IotCoreController.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import time
  4. import boto3
  5. from django.views import View
  6. from Model.models import Device_User, UserRegionModel
  7. from Object.IOTCore.IotObject import ChinaIOTClient, AsiaIOTClient, EuropeIOTClient, AmericaIOTClient
  8. from Object.ResponseObject import ResponseObject
  9. from Service.CommonService import CommonService
  10. class IotCoreView(View):
  11. def get(self, request, *args, **kwargs):
  12. request.encoding = 'utf-8'
  13. request_dict = request.GET
  14. operation = kwargs.get('operation', None)
  15. return self.validate(operation, request_dict)
  16. def post(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. request_dict = request.POST
  19. operation = kwargs.get('operation', None)
  20. return self.validate(operation, request_dict)
  21. def validate(self, operation, request_dict):
  22. response = ResponseObject()
  23. if operation == 'createProvisioningClaim':
  24. return self.create_provisioning_claim(request_dict, response)
  25. else:
  26. return response.json(404)
  27. def create_provisioning_claim(self, request_dict, response):
  28. uid = request_dict.get('uid', None)
  29. token = request_dict.get('token', None)
  30. time_stamp = request_dict.get('time_stamp', None)
  31. if uid and token and time_stamp:
  32. token = CommonService.decode_data(token)
  33. time_stamp = int(time_stamp)
  34. now_time = int(time.time())
  35. distance = now_time - time_stamp
  36. if token != time_stamp and distance > 600:
  37. return response.json(404)
  38. user_region_qs = UserRegionModel.objects.filter(user__device_info__UID=uid)
  39. if user_region_qs.exists():
  40. user_region = user_region_qs[0]
  41. if user_region.region_id == 1:
  42. iotClient = ChinaIOTClient()
  43. return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
  44. elif user_region.region_id == 2:
  45. iotClient = AsiaIOTClient()
  46. return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
  47. elif user_region.region_id == 3:
  48. iotClient = EuropeIOTClient()
  49. return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
  50. else:
  51. iotClient = AmericaIOTClient()
  52. return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
  53. else:
  54. return response.json(444)