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?