|
@@ -154,8 +154,9 @@ class LogManagementView(View):
|
|
|
print(e)
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
- def requestPublishMqtt(self, request_dict, response):
|
|
|
- # 通用发布MQTT主题通知
|
|
|
+ # 通用发布MQTT通知
|
|
|
+ @staticmethod
|
|
|
+ def requestPublishMqtt(request_dict, response):
|
|
|
msg = request_dict.get('msg', None)
|
|
|
thing_name = request_dict.get('thing_name', None)
|
|
|
topic_name = request_dict.get('topic_name', None)
|
|
@@ -163,34 +164,10 @@ class LogManagementView(View):
|
|
|
return response.json(444)
|
|
|
|
|
|
try:
|
|
|
- # 获取数据组织将要请求的url
|
|
|
- iot = iotdeviceInfoModel.objects.filter(
|
|
|
- thing_name=thing_name).values(
|
|
|
- 'endpoint', 'token_iot_number')
|
|
|
- if not iot.exists():
|
|
|
- return response.json(10043)
|
|
|
- endpoint = iot[0]['endpoint']
|
|
|
- Token = iot[0]['token_iot_number']
|
|
|
-
|
|
|
- # api doc: https://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/http.html
|
|
|
- # url: https://IoT_data_endpoint/topics/url_encoded_topic_name?qos=1
|
|
|
- # post请求url发布MQTT消息
|
|
|
- url = 'https://{}/topics/{}'.format(endpoint, topic_name)
|
|
|
- authorizer_name = 'Ansjer_Iot_Auth'
|
|
|
- signature = CommonService.rsa_sign(Token) # Token签名
|
|
|
- headers = {
|
|
|
- 'x-amz-customauthorizer-name': authorizer_name,
|
|
|
- 'Token': Token,
|
|
|
- 'x-amz-customauthorizer-signature': signature}
|
|
|
msg = eval(msg)
|
|
|
- r = requests.post(url=url, headers=headers, json=msg, timeout=2)
|
|
|
- if r.status_code == 200:
|
|
|
- res = r.json()
|
|
|
- if res['message'] == 'OK':
|
|
|
- return response.json(0)
|
|
|
- return response.json(10044)
|
|
|
- else:
|
|
|
+ if not CommonService.req_publish_mqtt_msg(thing_name, topic_name, msg):
|
|
|
return response.json(10044)
|
|
|
+ return response.json(0)
|
|
|
except Exception as e:
|
|
|
return response.json(500, repr(e))
|
|
|
|