IotCoreController.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import boto3
  4. from django.views import View
  5. from Ansjer.config import AWS_IOT_SES_ACCESS_REGION, AWS_IOT_SES_ACCESS_ID, \
  6. AWS_IOT_SES_ACCESS_SECRET
  7. from Object.ResponseObject import ResponseObject
  8. class IotCoreView(View):
  9. def get(self, request, *args, **kwargs):
  10. request.encoding = 'utf-8'
  11. request_dict = request.GET
  12. operation = kwargs.get('operation', None)
  13. return self.validate(operation, request_dict)
  14. def post(self, request, *args, **kwargs):
  15. request.encoding = 'utf-8'
  16. request_dict = request.POST
  17. operation = kwargs.get('operation', None)
  18. return self.validate(operation, request_dict)
  19. def validate(self, operation, request_dict):
  20. response = ResponseObject()
  21. if operation == 'createProvisioningClaim':
  22. return self.create_provisioning_claim(request_dict, response)
  23. else:
  24. return response.json(404)
  25. def create_provisioning_claim(self, request_dict, response):
  26. country = request_dict.get('country', None)
  27. state = request_dict.get('state', None)
  28. if country and state:
  29. client = boto3.client('iot', region_name=AWS_IOT_SES_ACCESS_REGION, aws_access_key_id=AWS_IOT_SES_ACCESS_ID,
  30. aws_secret_access_key=AWS_IOT_SES_ACCESS_SECRET)
  31. result = client.create_provisioning_claim(templateName='Ansjer_Iot_Queue')
  32. res = {
  33. 'certificateId': result['certificateId'],
  34. 'certificatePem': result['certificatePem'],
  35. 'publicKey': result['keyPair']['PublicKey'],
  36. 'privateKey': result['keyPair']['PrivateKey'],
  37. 'endpoint': 'a2rqy12o004ad8-ats.iot.us-east-1.amazonaws.com'
  38. }
  39. return response.json(0, {'res': res})
  40. else:
  41. return response.json(444)