IotCoreController.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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, Device_Info, RegionCountryModel
  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. region_country_qs = Device_Info.objects.filter(UID=uid).values('userID__region_country')
  39. if not region_country_qs.exists():
  40. return response.json(173)
  41. region_country_qs = RegionCountryModel.objects.filter(number=region_country_qs[0]['userID__region_country'])
  42. if region_country_qs.exists():
  43. user_region = region_country_qs[0]
  44. if user_region.region_id == 1:
  45. iotClient = ChinaIOTClient()
  46. return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
  47. elif user_region.region_id == 2:
  48. iotClient = AsiaIOTClient()
  49. return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
  50. elif user_region.region_id == 3:
  51. iotClient = EuropeIOTClient()
  52. return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
  53. else:
  54. iotClient = AmericaIOTClient()
  55. return response.json(0, {'res': iotClient.create_provisioning_claim('Ansjer_Iot_Queue')})
  56. else:
  57. return response.json(444)