IotCoreController.py 2.9 KB

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