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