|
@@ -1007,15 +1007,15 @@ class GetSnapshotView(View):
|
|
|
try:
|
|
|
uid = request_dict.get("uid", None)
|
|
|
access_token = request_dict.get("access_token", None)
|
|
|
- correlation_token = request_dict.get('correlation_token', '')
|
|
|
+ correlation_token = request_dict.get('correlation_token', None)
|
|
|
|
|
|
- if not uid or not access_token:
|
|
|
- raise ValueError("endpoint_id or access_token is empty")
|
|
|
+ if not all([uid, access_token, correlation_token]):
|
|
|
+ return JsonResponse({'result_code': '444', '错误': '参数错误'})
|
|
|
|
|
|
# 2. 验证用户和设备
|
|
|
user = UserModel.objects.get(access_token=access_token)
|
|
|
if not user.uid_rtsp.filter(uid=uid).exists():
|
|
|
- raise PermissionError("Device not belong to user")
|
|
|
+ return JsonResponse({'result_code': '500', '错误': '用户数据不存在'})
|
|
|
|
|
|
device = user.uid_rtsp.get(uid=uid)
|
|
|
region = getattr(device, 'region', 'US')
|
|
@@ -1049,45 +1049,44 @@ class GetSnapshotView(View):
|
|
|
return JsonResponse({'error': 'INTERNAL_ERROR'}, status=500)
|
|
|
|
|
|
@staticmethod
|
|
|
- def _send_mqtt_snapshot_command(uid,region):
|
|
|
+ def _send_mqtt_snapshot_command(uid, region):
|
|
|
thing_name = CommonService.query_serial_with_uid(uid)
|
|
|
- topic_name='ansjer/generic/{}'.format(thing_name)
|
|
|
+ topic_name = 'ansjer/generic/{}'.format(thing_name)
|
|
|
|
|
|
msg = {
|
|
|
"commandType": "alexaSnapshot",
|
|
|
}
|
|
|
|
|
|
- result = CommonService.req_publish_mqtt_msg(thing_name, topic_name, msg,qos=1)
|
|
|
- logger.info('快照指令下发结果 {}: {}'.format(uid, result))
|
|
|
+ try:
|
|
|
+ result = CommonService.req_publish_mqtt_msg(thing_name, topic_name, msg, qos=1)
|
|
|
+ logger.info('快照指令下发结果 {}: {}'.format(uid, result))
|
|
|
|
|
|
- if result:
|
|
|
- return True
|
|
|
+ if result:
|
|
|
+ return True
|
|
|
|
|
|
- if region == 'EU':
|
|
|
- domain_name = SERVER_PREFIX_EU
|
|
|
- elif region == 'CN':
|
|
|
- domain_name = SERVER_PREFIX_TEST
|
|
|
- else:
|
|
|
- domain_name = SERVER_PREFIX
|
|
|
+ if region == 'EU':
|
|
|
+ domain_name = SERVER_PREFIX_EU
|
|
|
+ elif region == 'CN':
|
|
|
+ domain_name = SERVER_PREFIX_TEST
|
|
|
+ else:
|
|
|
+ domain_name = SERVER_PREFIX
|
|
|
|
|
|
- url = '{}/iot/requestPublishMessage'.format(domain_name)
|
|
|
- request_data = {'UID': uid, 'commandType': 'alexaSnapshot'}
|
|
|
+ url = '{}/iot/requestPublishMessage'.format(domain_name)
|
|
|
+ request_data = {'UID': uid, 'commandType': 'alexaSnapshot'}
|
|
|
|
|
|
- try:
|
|
|
response = requests.post(url, data=request_data, timeout=10)
|
|
|
if response.status_code == 200:
|
|
|
result = response.json()
|
|
|
- logger.info('远程MQTT接口返回: %s', result)
|
|
|
if result.get('result_code') == 0:
|
|
|
+ logger.info('快照远程MQTT接口成功')
|
|
|
return True
|
|
|
else:
|
|
|
- logger.error('远程MQTT接口业务失败, result_code=%s, reason=%s',
|
|
|
- result.get('result_code'), result.get('reason'))
|
|
|
+ logger.info('快照远程MQTT接口失败, res:{}'.format(result))
|
|
|
return False
|
|
|
else:
|
|
|
- logger.error('远程MQTT接口调用失败, HTTP status=%s', response.status_code)
|
|
|
+ logger.info('快照远程MQTT接口失败, 状态码: {}', response.status_code)
|
|
|
return False
|
|
|
|
|
|
except Exception as e:
|
|
|
- logger.error('调用远程MQTT接口异常: %s', e)
|
|
|
+ logger.info('快照MQTT函数异常: error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
return False
|