|
@@ -0,0 +1,101 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+"""
|
|
|
+@Author : Rocky
|
|
|
+@Time : 2022/10/18 9:48
|
|
|
+@File :KVSController.py
|
|
|
+"""
|
|
|
+import time
|
|
|
+
|
|
|
+from django.views import View
|
|
|
+
|
|
|
+from Model.models import KVS
|
|
|
+from Object.AWS.AmazonKVSUtil import AmazonKVSObject
|
|
|
+from Object.AWS.AmazonKinesisVideoUtil import AmazonKinesisVideoObject
|
|
|
+from Object.ResponseObject import ResponseObject
|
|
|
+from Ansjer.config import ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME
|
|
|
+
|
|
|
+class KVSView(View):
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.GET, request, operation)
|
|
|
+
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ operation = kwargs.get('operation')
|
|
|
+ return self.validation(request.POST, request, operation)
|
|
|
+
|
|
|
+ def validation(self, request_dict, request, operation):
|
|
|
+ response = ResponseObject()
|
|
|
+ if operation == 'create-media': # 创建视频流
|
|
|
+ return self.create_media(request_dict, response)
|
|
|
+ elif operation == 'update-data-retention': # 修改视频流数据保留时间
|
|
|
+ return self.update_data_retention(request_dict, response)
|
|
|
+ else:
|
|
|
+ return response.json(404)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def create_media(request_dict, response):
|
|
|
+ """
|
|
|
+ 创建视频流
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ serial_number = request_dict.get('serial_number', None)
|
|
|
+
|
|
|
+ try:
|
|
|
+ kvs_qs = KVS.objects.filter(stream_name=serial_number)
|
|
|
+ if kvs_qs.exists():
|
|
|
+ return response.json(174)
|
|
|
+ kinesis_video_obj = AmazonKinesisVideoObject(
|
|
|
+ aws_access_key_id=ACCESS_KEY_ID,
|
|
|
+ secret_access_key=SECRET_ACCESS_KEY,
|
|
|
+ region_name=REGION_NAME
|
|
|
+ )
|
|
|
+ stream_arn = kinesis_video_obj.create_stream(stream_name=serial_number)
|
|
|
+ if stream_arn:
|
|
|
+ now_time = int(time.time())
|
|
|
+ KVS.objects.create(stream_name=serial_number, stream_arn=stream_arn, created_time=now_time,
|
|
|
+ updated_time=now_time)
|
|
|
+ return response.json(0)
|
|
|
+ else:
|
|
|
+ return response.json(178)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def update_data_retention(request_dict, response):
|
|
|
+ """
|
|
|
+ 修改视频流数据保留时间
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
+ @request_dict operation: 操作,增加/减少
|
|
|
+ @request_dict data_retention_change_in_hours: 修改的时间
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ serial_number = request_dict.get('serial_number', None)
|
|
|
+ operation = request_dict.get('operation', None)
|
|
|
+ data_retention_change_in_hours = request_dict.get('data_retention_change_in_hours', None)
|
|
|
+
|
|
|
+ try:
|
|
|
+ kvs_qs = KVS.objects.filter(stream_name=serial_number)
|
|
|
+ if not kvs_qs.exists():
|
|
|
+ return response.json(174)
|
|
|
+ kinesis_video_obj = AmazonKinesisVideoObject(
|
|
|
+ aws_access_key_id=ACCESS_KEY_ID,
|
|
|
+ secret_access_key=SECRET_ACCESS_KEY,
|
|
|
+ region_name=REGION_NAME
|
|
|
+ )
|
|
|
+ now_time = int(time.time())
|
|
|
+ data_retention_change_in_hours = int(data_retention_change_in_hours)
|
|
|
+ kinesis_video_obj.update_data_retention(stream_name=serial_number, operation=operation,
|
|
|
+ data_retention_change_in_hours=data_retention_change_in_hours)
|
|
|
+ kvs_qs.update(data_retention_in_hours=data_retention_change_in_hours, updated_time=now_time)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500)
|