From 2c097b56f5e0af148ec2578c10b8749883545971 Mon Sep 17 00:00:00 2001 From: usmansadik Date: Thu, 1 Dec 2022 15:52:32 +0100 Subject: [PATCH 1/2] Revert "Merge pull request #65 from workshopapps/endpoint-test" This reverts commit 4c11dc896f078b0c3b01dce28fe7e885eed85c12, reversing changes made to 7c49239285982a6db78228d74ebb735cff95efb4. --- tests/mine-service_test.go | 62 -------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 tests/mine-service_test.go diff --git a/tests/mine-service_test.go b/tests/mine-service_test.go deleted file mode 100644 index 4fe70b4..0000000 --- a/tests/mine-service_test.go +++ /dev/null @@ -1,62 +0,0 @@ -package test - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "net/http" - "strings" - "testing" -) - -func TestMineServiceUpload(t *testing.T) { - url := "http://localhost:9000/api/v1/mine-service/url" - - method := "POST" - - payload := strings.NewReader(`{ - "url": "https://images.pexels.com/photos/1561020/pexels-photo-1561020.jpeg" -}`) - - client := &http.Client{} - - req, err := http.NewRequest(method, url, payload) - - if err != nil { - fmt.Println(err) - return - } - - req.Header.Add("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2NjkzNzcyOTYsImlkIjoiT2JqZWN0SUQoXCI2MzgwOWUwMjlmMjc3MTg1NjJiMGE3NGFcIikifQ.b1M000NRCbQWN9TxlqvvCX_5khisQHDqNSfK8Igtil4") - - req.Header.Add("Content-Type", "application/json") - - res, err := client.Do(req) - - if err != nil { - fmt.Println(err) - t.Error(err) - return - } - defer res.Body.Close() - - body, err := ioutil.ReadAll(res.Body) - if err != nil { - fmt.Println(err) - t.Error(err) - return - } - m := make(map[string]interface{}) - marshalErr := json.Unmarshal(body, &m) - if marshalErr != nil { - fmt.Println(marshalErr) - t.Error(marshalErr) - return - } - t.Log(m) - if res.StatusCode != 200 { - t.Log("exp:", 200) - t.Log("got:", res.StatusCode) - t.Fatal("status codes don't match") - } -} From e2904bf5634490bb48f89ba7fcf926de0e4dddb3 Mon Sep 17 00:00:00 2001 From: usmansadik Date: Thu, 1 Dec 2022 16:15:12 +0100 Subject: [PATCH 2/2] fix: delete files causing issue --- go.mod | 1 - pkg/handler/mine-service/compress_image.go | 28 ---- pkg/handler/mine-service/prompt.go | 151 --------------------- pkg/router/mine-service.go | 2 - service/mine-service/prompt.go | 39 ------ 5 files changed, 221 deletions(-) delete mode 100644 pkg/handler/mine-service/compress_image.go delete mode 100644 pkg/handler/mine-service/prompt.go delete mode 100644 service/mine-service/prompt.go diff --git a/go.mod b/go.mod index 7f9bffb..16b5941 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,6 @@ require ( github.com/go-playground/validator/v10 v10.11.1 github.com/go-redis/redis/v8 v8.11.5 github.com/google/uuid v1.3.0 - github.com/h2non/bimg v1.1.9 ) require ( diff --git a/pkg/handler/mine-service/compress_image.go b/pkg/handler/mine-service/compress_image.go deleted file mode 100644 index 987e42d..0000000 --- a/pkg/handler/mine-service/compress_image.go +++ /dev/null @@ -1,28 +0,0 @@ -package mineservice - -import ( - "bytes" - "io" - "log" - "mime/multipart" - - "github.com/h2non/bimg" -) - -func compressImage(imageFile multipart.File) (io.ReadCloser, error) { - buffer, err := io.ReadAll(imageFile) - if err != nil { - log.Fatal(err) - } - - converted, err := bimg.NewImage(buffer).Convert(bimg.PNG) - if err != nil { - return nil, err - } - processed, err := bimg.NewImage(converted).Process(bimg.Options{Width: 1024, Height: 1024, Quality: 720}) - if err != nil { - return nil, err - } - r := io.NopCloser(bytes.NewReader(processed)) - return r, nil -} diff --git a/pkg/handler/mine-service/prompt.go b/pkg/handler/mine-service/prompt.go deleted file mode 100644 index 5d9ded3..0000000 --- a/pkg/handler/mine-service/prompt.go +++ /dev/null @@ -1,151 +0,0 @@ -package mineservice - -import ( - "net/http" - - "github.com/gin-gonic/gin" - "github.com/workshopapps/pictureminer.api/internal/config" - "github.com/workshopapps/pictureminer.api/internal/model" - mineservice "github.com/workshopapps/pictureminer.api/service/mine-service" - "github.com/workshopapps/pictureminer.api/utility" -) - -const FailedStatus = `failed` -const ( - VerifiedTokenMessage = `Could not verify token` - InvalidRequestMessage = `Invalid request` - InvalidFileMessage = `Invalid file` - InvalidUrlMessage = `Invalid url` - SuccessfulMiningMessage = `Mine image successful` - UndefinedErrorMessage = `Undefined error` - UnableToFetchImageFromUrlMessage = "Could not fetch image from url" - UnableToParseFileMessage = "Could not parse file" - UnableToBindUrlMessage = "Unable to bind url parameter" -) - -const ( - PromptNotSpecifiedError = "Prompt Param not specified" - FileIsNotAnImageError = "File is not an image" - FileIsNotPresentError = "File is not present" -) - -func (base *Controller) PromptMineImageUpload(c *gin.Context) { - err := isTokenVerified(c) - if err != nil { - rd := utility.BuildErrorResponse(http.StatusUnauthorized, FailedStatus, VerifiedTokenMessage, nil, makeErrorMap(err.Error())) - c.JSON(http.StatusUnauthorized, rd) - return - } - - prompt := c.Query("prompt") - if prompt == "" { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, InvalidRequestMessage, nil, makeErrorMap(PromptNotSpecifiedError)) - c.JSON(http.StatusBadRequest, rd) - return - } - - if c.ContentType() != "multipart/form-data" { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, InvalidRequestMessage, nil, makeErrorMap(FileIsNotPresentError)) - c.JSON(http.StatusBadRequest, rd) - return - } - - image, imageHeader, err := c.Request.FormFile("image") - if err != nil { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, UnableToParseFileMessage, nil, makeErrorMap(err.Error())) - c.JSON(http.StatusBadRequest, rd) - return - } - defer image.Close() - - if !validImageFormat(imageHeader.Filename) { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, InvalidFileMessage, nil, makeErrorMap(FileIsNotAnImageError)) - c.JSON(http.StatusBadRequest, rd) - return - } - - minedImage, err := mineservice.PromptMineServiceUpload(image, imageHeader.Filename, prompt) - if err != nil { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, UndefinedErrorMessage, nil, err.Error()) - c.JSON(http.StatusBadRequest, rd) - return - } - - rd := utility.BuildSuccessResponse(http.StatusCreated, SuccessfulMiningMessage, minedImage) - c.JSON(http.StatusOK, rd) - -} - -func (base *Controller) PromptMineImageUrl(c *gin.Context) { - - err := isTokenVerified(c) - if err != nil { - rd := utility.BuildErrorResponse(http.StatusUnauthorized, FailedStatus, VerifiedTokenMessage, nil, makeErrorMap(err.Error())) - c.JSON(http.StatusUnauthorized, rd) - return - } - - var req model.MineImageUrlRequest - - err = c.Bind(&req) - if err != nil { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, UnableToBindUrlMessage, nil, err.Error()) - c.JSON(http.StatusBadRequest, rd) - return - } - - err = base.Validate.Struct(&req) - if err != nil { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, InvalidUrlMessage, nil, nil) - c.JSON(http.StatusBadRequest, rd) - return - } - - prompt := c.Query("prompt") - if prompt == "" { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, InvalidRequestMessage, nil, makeErrorMap(PromptNotSpecifiedError)) - c.JSON(http.StatusBadRequest, rd) - return - } - - response, err := http.Get(req.Url) - if err != nil { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, UnableToFetchImageFromUrlMessage, nil, err.Error()) - c.JSON(http.StatusBadRequest, rd) - return - } - - var image = response.Body - defer image.Close() - - filename := getFileName(req.Url) - - if !validImageFormat(filename) { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, InvalidFileMessage, nil, makeErrorMap(FileIsNotAnImageError)) - c.JSON(http.StatusBadRequest, rd) - return - } - - minedImage, err := mineservice.PromptMineServiceUpload(image, filename, prompt) - if err != nil { - rd := utility.BuildErrorResponse(http.StatusBadRequest, FailedStatus, UndefinedErrorMessage, nil, err.Error()) - c.JSON(http.StatusBadRequest, rd) - return - } - - rd := utility.BuildSuccessResponse(http.StatusCreated, SuccessfulMiningMessage, minedImage) - c.JSON(http.StatusOK, rd) - -} - -func isTokenVerified(c *gin.Context) (err error) { - secretKey := config.GetConfig().Server.Secret - token := utility.ExtractToken(c) - _, err = utility.GetKey("id", token, secretKey) - return err -} - -func makeErrorMap(errorMesage string) gin.H { - errorMap := gin.H{"error": errorMesage} - return errorMap -} diff --git a/pkg/router/mine-service.go b/pkg/router/mine-service.go index e3e2c36..843b3e9 100644 --- a/pkg/router/mine-service.go +++ b/pkg/router/mine-service.go @@ -15,8 +15,6 @@ func MineServiceUpload(r *gin.Engine, validate *validator.Validate, ApiVersion s authUrl := r.Group(fmt.Sprintf("/api/%v", ApiVersion)) { authUrl.POST("/mine-service/upload", mineservice.MineImageUpload) - authUrl.POST("/mine-service/upload-prompt", mineservice.PromptMineImageUpload) - authUrl.POST("/mine-service/url-prompt", mineservice.PromptMineImageUrl) authUrl.POST("/mine-service/url", mineservice.MineImageUrl) authUrl.GET("/mine-service/get-all", mineservice.GetMinedImages) } diff --git a/service/mine-service/prompt.go b/service/mine-service/prompt.go deleted file mode 100644 index 150e93a..0000000 --- a/service/mine-service/prompt.go +++ /dev/null @@ -1,39 +0,0 @@ -package mineservice - -import ( - "io" - "time" - - "github.com/workshopapps/pictureminer.api/internal/model" - "github.com/workshopapps/pictureminer.api/pkg/repository/microservice" - "github.com/workshopapps/pictureminer.api/utility" -) - -func PromptMineServiceUpload(image io.ReadCloser, filename, prompt string) (*model.MineImagePromptResponse, error) { - image, imageCopy, err := duplicateFile(image) - if err != nil { - return nil, err - } - - imageHash, err := utility.HashFile(imageCopy) - if err != nil { - return nil, err - } - - content, err := microservice.GetImagePromptResponse(image, imageHash, prompt) - if err != nil { - return nil, err - } - - time := time.Now() - response := &model.MineImagePromptResponse{ - ImageName: filename, - TextPrompt: prompt, - CheckResult: content.CheckResult, - DateCreated: time, - DateModified: time, - } - - return response, nil - -}