public async Task <IActionResult> UpdateThumbnail(
            [FromForm] UpdateThumbnailRequest updateThumbnail, int chatId)
        {
            try
            {
                var thisUserId = ClaimsExtractor.GetUserIdClaim(User.Claims);

                var result = await mChatsService.UpdateThumbnail(chatId,
                                                                 updateThumbnail.thumbnail, thisUserId);

                return(Ok(new ResponseApiModel <UpdateThumbnailResponse>
                {
                    IsSuccessfull = true,
                    Response = result
                }));
            }
            catch (InvalidDataException ex)
            {
                return(BadRequest(new ResponseApiModel <bool>
                {
                    IsSuccessfull = false,
                    ErrorMessage = ex.Message
                }));
            }
            catch (UnauthorizedAccessException ex)
            {
                return(StatusCode((int)HttpStatusCode.Forbidden, new ResponseApiModel <bool>
                {
                    IsSuccessfull = false,
                    ErrorMessage = ex.Message
                }));
            }
            catch (KeyNotFoundException ex)
            {
                return(NotFound(new ResponseApiModel <bool>
                {
                    IsSuccessfull = false,
                    ErrorMessage = ex.Message
                }));
            }
            catch (Exception)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, new ResponseApiModel <bool>
                {
                    IsSuccessfull = false
                }));
            }
        }
Esempio n. 2
0
        public static async Task OnCanvasRequest(Microsoft.AspNetCore.Http.HttpContext e, DbServer s, DbUser u, int tribe_id, string next)
        {
            //Find canvas
            if (!ObjectId.TryParse(next, out ObjectId id))
            {
                throw new StandardError("Canvas Not Found", StandardErrorCode.NotFound);
            }
            DbCanvas c = await Program.connection.LoadCanvasData(id);

            if (c == null)
            {
                throw new StandardError("Canvas Not Found", StandardErrorCode.NotFound);
            }

            //Get request method
            var method = Program.FindRequestMethod(e);

            //Act from the method
            if (method == RequestHttpMethod.get)
            {
                //Write response
                await Program.QuickWriteJsonToDoc(e, ConvertCanvas(c));
            }
            else if (method == RequestHttpMethod.post)
            {
                //Check scope
                await Program.CheckTokenScope(u, null);

                //Rename the canvas; decode request
                CanvasCreateRequest request = Program.DecodePostBody <CanvasCreateRequest>(e);

                //Set
                await c.RenameCanvas(Program.connection, request.name, request.color);

                //Send RPC message
                SendRPCMessage(c, s, u, tribe_id, RPCPayloadModifyCanvas.RPCPayloadModifyCanvas_CanvasChange.Modify);

                //Write response
                await Program.QuickWriteJsonToDoc(e, ConvertCanvas(c));
            }
            else if (method == RequestHttpMethod.delete)
            {
                //Check scope
                await Program.CheckTokenScope(u, null);

                //Delete canvas
                await c.DeleteCanvas(Program.connection);

                //Send RPC message
                SendRPCMessage(c, s, u, tribe_id, RPCPayloadModifyCanvas.RPCPayloadModifyCanvas_CanvasChange.Delete);

                //Write response
                await Program.QuickWriteJsonToDoc(e, ConvertCanvas(c));
            }
            else if (method == RequestHttpMethod.put)
            {
                //Check scope
                await Program.CheckTokenScope(u, null);

                //We'll update the thumbnail; Decode the request
                UpdateThumbnailRequest request = Program.DecodePostBody <UpdateThumbnailRequest>(e);

                //Try to find
                DbUserContent uc = await Program.connection.GetUserContentByToken(request.token);

                if (uc == null)
                {
                    throw new StandardError("Token Not Valid", StandardErrorCode.InvalidInput);
                }
                if (uc.application_id != CANVAS_THUMBNAIL_APPLICATION_ID)
                {
                    throw new StandardError("Specified User Content Application ID Mismatch", StandardErrorCode.InvalidInput);
                }

                //Update
                await c.SetNewThumbnail(Program.connection, uc);

                //Send RPC message
                SendRPCMessage(c, s, u, tribe_id, RPCPayloadModifyCanvas.RPCPayloadModifyCanvas_CanvasChange.Modify);

                //Write response
                await Program.QuickWriteJsonToDoc(e, ConvertCanvas(c));
            }
            else
            {
                throw new StandardError("Unexpected method.", StandardErrorCode.BadMethod);
            }
        }