2020-11-29 14:02:01 +01:00

91 lines
2.4 KiB
Python

import logging
import json
import base64
import dropbox
import pymongo
from app_be.views.mongo_db import MongoManager
from django.http import JsonResponse
from django.http import HttpRequest
from django.conf import settings
from rest_framework.decorators import api_view
logger = logging.getLogger(__name__)
class TestApiClass:
@staticmethod
@api_view(['GET'])
def test_api(request):
logger.debug('Test api call: {}'.format(request))
return JsonResponse({'Result': 'success'}, safe=False)
class ImageEndpoint:
@staticmethod
@api_view(['GET'])
def image_api_get_all(request):
logger.debug('Image GET all call: {}'.format(request))
print(request)
instance = MongoManager.getInstance()
db = instance.AIC
col = db.metadata
try:
for resp in col.find():
print(resp)
except:
print("Could not find Metadata")
return JsonResponse({'Result': 'success1'}, safe=False)
@staticmethod
@api_view(['GET'])
def image_api_get_single(request, id):
logger.debug('Image GET single call: {}'.format(request))
instance = MongoManager.getInstance()
db = instance.AIC
col = db.metadata
try:
resp = col.find({"filename": id+".jpg"})
print(resp[0]);
except:
print("Could not find Metadata")
return JsonResponse({'Result': 'success1', 'id': id}, safe=False)
@staticmethod
@api_view(['POST'])
def image_api_post(request: HttpRequest):
logger.debug('Image POST call: {}'.format(request))
payload = json.loads(request.body.decode('utf-8'))
b64encoded_image = payload['image_data']
filename = payload['id']
metadata = payload['metadata']
instance = MongoManager.getInstance()
db = instance.AIC
col = db.metadata
try:
resp = col.insert_one(metadata)
except:
print("Could not insert Metadata")
decoded_image = base64.b64decode(b64encoded_image)
dbx = dropbox.Dropbox(settings.DROPBOX_OAUTH2_ACCESS_TOKEN)
dbx.files_upload(decoded_image, '/Apps/AIC Federated Storage Infrastructure/' + filename)
return JsonResponse({'Result': 'success2', 'received file': filename},
safe=False) # 'metadata': metadata response beinhaltet ObjectId welche nicht serializable is?