Showing
2 changed files
with
29 additions
and
26 deletions
... | @@ -268,59 +268,62 @@ class VideoList(APIView) : | ... | @@ -268,59 +268,62 @@ class VideoList(APIView) : |
268 | 'date' : datetime.now() | 268 | 'date' : datetime.now() |
269 | }, status = status.HTTP_400_BAD_REQUEST) | 269 | }, status = status.HTTP_400_BAD_REQUEST) |
270 | 270 | ||
271 | -# 비디오 수동 삭제 | 271 | +# 비디오 확인 |
272 | - def delete(self, request, vid_name, format = None) : # request URI에 vid_name가 포함되어있음 : api/video/{vid_name} | 272 | +class VideoDetail(APIView) : |
273 | + def get(self, request, vid_name, format = None) : # 요청한 URI에 vid_name가 포함되어있음 | ||
273 | try : | 274 | try : |
274 | if request.auth == None : | 275 | if request.auth == None : |
275 | raise PermissionDenied | 276 | raise PermissionDenied |
276 | request_id = vid_name | 277 | request_id = vid_name |
277 | if request_id == 'None' : | 278 | if request_id == 'None' : |
278 | raise FieldDoesNotExist | 279 | raise FieldDoesNotExist |
279 | - session = boto3.session.Session(aws_access_key_id = S3_ACCESS_KEY_ID, aws_secret_access_key = S3_SECRET_ACCESS_KEY, region_name = AWS_REGION) | 280 | + queryset = Video.objects.filter(vid_name = request_id) # door_id 유효성 검색 |
280 | - s3 = session.client('s3') | 281 | + if not queryset.exists(): |
281 | - | 282 | + raise FieldDoesNotExist |
282 | - target = Video.objects.get(vid_name = request_id) | 283 | + download_url = S3_ACCESS_URL + str(request_id) + '.mp4' # S3 다운로드 링크 변환 |
283 | - s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '.mp4') | 284 | + if not download_url : |
284 | - s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '_thumb.jpg') | 285 | + raise ObjectDoesNotExist |
285 | - target.delete() | 286 | + res = { |
286 | - return Response(status = status.HTTP_200_OK) | 287 | + 's3link' : download_url |
288 | + } # 응답 코드에 보낼 데이터 | ||
289 | + return Response(res, status = status.HTTP_200_OK) | ||
287 | except FieldDoesNotExist as error : | 290 | except FieldDoesNotExist as error : |
288 | return Response({ | 291 | return Response({ |
289 | 'error' : "FieldDoesNotExist ", | 292 | 'error' : "FieldDoesNotExist ", |
290 | 'date' : datetime.now() | 293 | 'date' : datetime.now() |
291 | }, status = status.HTTP_400_BAD_REQUEST) | 294 | }, status = status.HTTP_400_BAD_REQUEST) |
295 | + except ObjectDoesNotExist as error : | ||
296 | + return Response({ | ||
297 | + 'error' : "ObjectDoesNotExist", | ||
298 | + 'date' : datetime.now() | ||
299 | + }, status = status.HTTP_404_NOT_FOUND) | ||
292 | except PermissionDenied as error : | 300 | except PermissionDenied as error : |
293 | return Response({ | 301 | return Response({ |
294 | 'error' : "PermissionDenied", | 302 | 'error' : "PermissionDenied", |
295 | 'date' : datetime.now() | 303 | 'date' : datetime.now() |
296 | }, status = status.HTTP_400_BAD_REQUEST) | 304 | }, status = status.HTTP_400_BAD_REQUEST) |
297 | 305 | ||
298 | -# 비디오 확인(다운로드) | 306 | +# 비디오 수동 삭제 |
299 | -class VideoDownload(APIView) : | 307 | + def delete(self, request, vid_name, format = None) : # request URI에 vid_name가 포함되어있음 : api/video/{vid_name} |
300 | - def get(self, request, vid_name, format = None) : # 요청한 URI에 vid_name가 포함되어있음 | ||
301 | try : | 308 | try : |
302 | if request.auth == None : | 309 | if request.auth == None : |
303 | raise PermissionDenied | 310 | raise PermissionDenied |
304 | request_id = vid_name | 311 | request_id = vid_name |
305 | if request_id == 'None' : | 312 | if request_id == 'None' : |
306 | raise FieldDoesNotExist | 313 | raise FieldDoesNotExist |
307 | - download_url = S3_ACCESS_URL + str(request_id) + '.mp4' # S3 다운로드 링크 변환 | 314 | + session = boto3.session.Session(aws_access_key_id = S3_ACCESS_KEY_ID, aws_secret_access_key = S3_SECRET_ACCESS_KEY, region_name = AWS_REGION) |
308 | - if not download_url : | 315 | + s3 = session.client('s3') |
309 | - raise ObjectDoesNotExist | 316 | + |
310 | - res = { | 317 | + target = Video.objects.get(vid_name = request_id) |
311 | - 's3link' : download_url | 318 | + s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '.mp4') |
312 | - } # 응답 코드에 보낼 데이터 | 319 | + s3.delete_object(Bucket = S3_STORAGE_BUCKET_NAME, Key = str(target.vid_name) + '_thumb.jpg') |
313 | - return Response(res, status = status.HTTP_200_OK) | 320 | + target.delete() |
321 | + return Response(status = status.HTTP_200_OK) | ||
314 | except FieldDoesNotExist as error : | 322 | except FieldDoesNotExist as error : |
315 | return Response({ | 323 | return Response({ |
316 | 'error' : "FieldDoesNotExist ", | 324 | 'error' : "FieldDoesNotExist ", |
317 | 'date' : datetime.now() | 325 | 'date' : datetime.now() |
318 | }, status = status.HTTP_400_BAD_REQUEST) | 326 | }, status = status.HTTP_400_BAD_REQUEST) |
319 | - except ObjectDoesNotExist as error : | ||
320 | - return Response({ | ||
321 | - 'error' : "ObjectDoesNotExist", | ||
322 | - 'date' : datetime.now() | ||
323 | - }, status = status.HTTP_404_NOT_FOUND) | ||
324 | except PermissionDenied as error : | 327 | except PermissionDenied as error : |
325 | return Response({ | 328 | return Response({ |
326 | 'error' : "PermissionDenied", | 329 | 'error' : "PermissionDenied", | ... | ... |
... | @@ -21,7 +21,7 @@ from api import views | ... | @@ -21,7 +21,7 @@ from api import views |
21 | urlpatterns = [ | 21 | urlpatterns = [ |
22 | path('admin/', admin.site.urls), | 22 | path('admin/', admin.site.urls), |
23 | path('api/video', views.VideoList.as_view()), | 23 | path('api/video', views.VideoList.as_view()), |
24 | - path('api/video/<str:vid_name>', views.VideoDownload.as_view()), | 24 | + path('api/video/<str:vid_name>', views.VideoDetail.as_view()), |
25 | path('auto/checkDate', views.CheckDate.as_view()), | 25 | path('auto/checkDate', views.CheckDate.as_view()), |
26 | path('api/setting', views.Recording.as_view()), | 26 | path('api/setting', views.Recording.as_view()), |
27 | path('api/auth', views.Login.as_view()), | 27 | path('api/auth', views.Login.as_view()), | ... | ... |
-
Please register or login to post a comment