|
@@ -9,6 +9,7 @@ import time
|
|
|
import uuid
|
|
|
import datetime
|
|
|
|
|
|
+import boto3
|
|
|
from django.http import HttpResponse
|
|
|
from django.views import View
|
|
|
|
|
@@ -253,6 +254,10 @@ class KVSView(View):
|
|
|
return self.create_media(request_dict, response)
|
|
|
elif operation == 'update-data-retention': # 修改视频流数据保留时间
|
|
|
return self.update_data_retention(request_dict, response)
|
|
|
+ elif operation == 'get-sts-token': # 获取临时token
|
|
|
+ return self.get_sts_token(request_dict, response)
|
|
|
+ elif operation == 'create-signaling-channel': # 新增通道
|
|
|
+ return self.create_signaling_channel(request_dict, response)
|
|
|
else:
|
|
|
# tko = TokenObject(request.META.get('HTTP_AUTHORIZATION'))
|
|
|
# if tko.code != 0:
|
|
@@ -418,7 +423,8 @@ class KVSView(View):
|
|
|
total_page = len(stream_list)
|
|
|
stream_list = stream_list[(page - 1) * size:page * size]
|
|
|
for item in stream_list:
|
|
|
- temp_start_time = (item['startTime'] - datetime.timedelta(hours=8)).replace(tzinfo=datetime.timezone.utc)
|
|
|
+ temp_start_time = (item['startTime'] - datetime.timedelta(hours=8)).replace(
|
|
|
+ tzinfo=datetime.timezone.utc)
|
|
|
temp_end_time = temp_start_time + datetime.timedelta(seconds=300)
|
|
|
item['image'] = kinesis_images_obj.get_images(serial_number, temp_start_time, temp_end_time)
|
|
|
item['startTime'] = int(item['startTime'].timestamp())
|
|
@@ -469,4 +475,60 @@ class KVSView(View):
|
|
|
return res
|
|
|
except Exception as e:
|
|
|
print(e)
|
|
|
- return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_sts_token(request_dict, response):
|
|
|
+ """
|
|
|
+ 获取临时token
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict uid: 设备uid
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ uid = request_dict.get('uid', None)
|
|
|
+ # if not all([]):
|
|
|
+ # return response.json(444)
|
|
|
+ try:
|
|
|
+ sts_client_conn = boto3.client(
|
|
|
+ 'sts',
|
|
|
+ aws_access_key_id=ACCESS_KEY_ID,
|
|
|
+ aws_secret_access_key=SECRET_ACCESS_KEY,
|
|
|
+ region_name=REGION_NAME
|
|
|
+ )
|
|
|
+ sts_obj = sts_client_conn.get_session_token(DurationSeconds=3600)
|
|
|
+ res = {
|
|
|
+ 'AccessKeyId': sts_obj['Credentials']['AccessKeyId'],
|
|
|
+ 'AccessKeySecret': sts_obj['Credentials']['SecretAccessKey'],
|
|
|
+ 'SessionToken': sts_obj['Credentials']['SessionToken'],
|
|
|
+ 'Expiration': str(sts_obj['Credentials']['Expiration'])
|
|
|
+ }
|
|
|
+ return response.json(0, res)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def create_signaling_channel(request_dict, response):
|
|
|
+ """
|
|
|
+ 获取临时token
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict uid: 设备uid
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ uid = request_dict.get('uid', None)
|
|
|
+ if not all([uid]):
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ sts_client_conn = AmazonKinesisVideoObject(
|
|
|
+ aws_access_key_id=ACCESS_KEY_ID,
|
|
|
+ secret_access_key=SECRET_ACCESS_KEY,
|
|
|
+ region_name=REGION_NAME
|
|
|
+ )
|
|
|
+ sts_client_conn.create_signaling_channel(channel_name=uid)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|