Skip to content

Commit

Permalink
Error package implementation (#22)
Browse files Browse the repository at this point in the history
* move errors to package errors

* add functionality to set whether debug or release mode through .env. change later through deployment provider

* add part to SendInternalError in errors to handle nil options added to errors. removed redundant assets folder in root
  • Loading branch information
pirateking92 authored May 1, 2024
1 parent ab9c824 commit a15ede1
Show file tree
Hide file tree
Showing 83 changed files with 27 additions and 10 deletions.
Binary file removed assets/.DS_Store
Binary file not shown.
Binary file removed assets/ar00.jpg
Binary file not shown.
Binary file removed assets/ar01.jpg
Binary file not shown.
Binary file removed assets/ar02.jpg
Binary file not shown.
Binary file removed assets/ar03.jpg
Binary file not shown.
Binary file removed assets/ar04.jpg
Binary file not shown.
Binary file removed assets/ar05.jpg
Binary file not shown.
Binary file removed assets/ar06.jpg
Binary file not shown.
Binary file removed assets/ar07.jpg
Binary file not shown.
Binary file removed assets/ar08.jpg
Binary file not shown.
Binary file removed assets/ar09.jpg
Binary file not shown.
Binary file removed assets/ar10.jpg
Binary file not shown.
Binary file removed assets/ar11.jpg
Binary file not shown.
Binary file removed assets/ar12.jpg
Binary file not shown.
Binary file removed assets/ar13.jpg
Binary file not shown.
Binary file removed assets/ar14.jpg
Binary file not shown.
Binary file removed assets/ar15.jpg
Binary file not shown.
Binary file removed assets/ar16.jpg
Binary file not shown.
Binary file removed assets/ar17.jpg
Binary file not shown.
Binary file removed assets/ar18.jpg
Binary file not shown.
Binary file removed assets/ar19.jpg
Binary file not shown.
Binary file removed assets/ar20.jpg
Binary file not shown.
Binary file removed assets/ar21.jpg
Binary file not shown.
Binary file removed assets/cu02.jpg
Binary file not shown.
Binary file removed assets/cu03.jpg
Binary file not shown.
Binary file removed assets/cu04.jpg
Binary file not shown.
Binary file removed assets/cu05.jpg
Diff not rendered.
Binary file removed assets/cu06.jpg
Diff not rendered.
Binary file removed assets/cu07.jpg
Diff not rendered.
Binary file removed assets/cu08.jpg
Diff not rendered.
Binary file removed assets/cu09.jpg
Diff not rendered.
Binary file removed assets/cu10.jpg
Diff not rendered.
Binary file removed assets/cuac.jpg
Diff not rendered.
Binary file removed assets/cuki.jpg
Diff not rendered.
Binary file removed assets/cukn.jpg
Diff not rendered.
Binary file removed assets/cupa.jpg
Diff not rendered.
Binary file removed assets/cuqu.jpg
Diff not rendered.
Binary file removed assets/pe02.jpg
Diff not rendered.
Binary file removed assets/pe03.jpg
Diff not rendered.
Binary file removed assets/pe04.jpg
Diff not rendered.
Binary file removed assets/pe05.jpg
Diff not rendered.
Binary file removed assets/pe06.jpg
Diff not rendered.
Binary file removed assets/pe07.jpg
Diff not rendered.
Binary file removed assets/pe08.jpg
Diff not rendered.
Binary file removed assets/pe09.jpg
Diff not rendered.
Binary file removed assets/pe10.jpg
Diff not rendered.
Binary file removed assets/peac.jpg
Diff not rendered.
Binary file removed assets/peki.jpg
Diff not rendered.
Binary file removed assets/pekn.jpg
Diff not rendered.
Binary file removed assets/pepa.jpg
Diff not rendered.
Binary file removed assets/pequ.jpg
Diff not rendered.
Binary file removed assets/sw02.jpg
Diff not rendered.
Binary file removed assets/sw03.jpg
Diff not rendered.
Binary file removed assets/sw04.jpg
Diff not rendered.
Binary file removed assets/sw05.jpg
Diff not rendered.
Binary file removed assets/sw06.jpg
Diff not rendered.
Binary file removed assets/sw07.jpg
Diff not rendered.
Binary file removed assets/sw08.jpg
Diff not rendered.
Binary file removed assets/sw09.jpg
Diff not rendered.
Binary file removed assets/sw10.jpg
Diff not rendered.
Binary file removed assets/swac.jpg
Diff not rendered.
Binary file removed assets/swki.jpg
Diff not rendered.
Binary file removed assets/swkn.jpg
Diff not rendered.
Binary file removed assets/swpa.jpg
Diff not rendered.
Binary file removed assets/swqu.jpg
Diff not rendered.
Binary file removed assets/wa02.jpg
Diff not rendered.
Binary file removed assets/wa03.jpg
Diff not rendered.
Binary file removed assets/wa04.jpg
Diff not rendered.
Binary file removed assets/wa05.jpg
Diff not rendered.
Binary file removed assets/wa06.jpg
Diff not rendered.
Binary file removed assets/wa07.jpg
Diff not rendered.
Binary file removed assets/wa08.jpg
Diff not rendered.
Binary file removed assets/wa09.jpg
Diff not rendered.
Binary file removed assets/wa10.jpg
Diff not rendered.
Binary file removed assets/waac.jpg
Diff not rendered.
Binary file removed assets/waki.jpg
Diff not rendered.
Binary file removed assets/wakn.jpg
Diff not rendered.
Binary file removed assets/wapa.jpg
Diff not rendered.
Binary file removed assets/waqu.jpg
Diff not rendered.
5 changes: 3 additions & 2 deletions backend/controllers/cards.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/google/uuid"

"github.com/gin-gonic/gin"
"main.go/errors"
"main.go/models"
"main.go/services"
)
Expand Down Expand Up @@ -43,7 +44,7 @@ func GetRandomCard(deck []models.Card, currentCards []models.Card) models.Card {
func GetandInterpretThreeCards(ctx *gin.Context) {
deck, err := services.FetchTarotCards() //returns a type of []Card
if err != nil {
SendInternalError(ctx, err)
errors.SendInternalError(ctx, err)
return
}
requestID := uuid.New()
Expand Down Expand Up @@ -98,7 +99,7 @@ func GetandInterpretThreeCards(ctx *gin.Context) {
apiKey := os.Getenv("API_KEY")
interpretation, err := services.InterpretTarotCards(apiKey, cardNames, requestID)
if err != nil {
SendInternalError(ctx, err)
errors.SendInternalError(ctx, err)
return
}
LocalStorage[requestID.String()] = interpretation
Expand Down
11 changes: 9 additions & 2 deletions backend/controllers/errors.go → backend/errors/errors.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package controllers
package errors

import (
"github.com/gin-gonic/gin"
"fmt"
"net/http"

"github.com/gin-gonic/gin"
)

// This function is designed to handle internal server errors within
Expand All @@ -18,6 +20,11 @@ import (
// and detailed errors will be shown to the user.

func SendInternalError(ctx *gin.Context, err error) {
if ctx == nil {
// Handle the case where the context is nil
fmt.Printf("Internal Server Error: %v\n", err)
return
}
// The gin.Context object represents the HTTP request and response
// context, while the error object contains information about the
// error that occurred.
Expand Down
8 changes: 8 additions & 0 deletions backend/main.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package main

import (
"os"

"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"main.go/env"
Expand All @@ -13,7 +15,13 @@ func main() {
// if the above line is not called in main.go the App will always run in debug mode
// and detailed errors will be shown to the user.
env.LoadEnv()
mode := os.Getenv("GIN_MODE")
if mode == "" {
mode = gin.ReleaseMode
}
gin.SetMode(mode)
app := setupApp()

app.Run(":8082")
}

Expand Down
13 changes: 7 additions & 6 deletions backend/services/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"strings"

"github.com/google/uuid"
"main.go/errors"
"main.go/models"
)

Expand All @@ -21,7 +22,7 @@ func FetchTarotCards() ([]models.Card, error) {
// Send GET request to the API
resp, err := http.Get(apiUrl)
if err != nil {
return nil, fmt.Errorf("failed to make GET request: %v", err)
errors.SendInternalError(nil, fmt.Errorf("failed to make GET request: %v", err))
}
defer resp.Body.Close()

Expand All @@ -30,7 +31,7 @@ func FetchTarotCards() ([]models.Card, error) {
Cards []models.Card `json:"cards"`
}
if err := json.NewDecoder(resp.Body).Decode(&cardsResponse); err != nil {
return nil, fmt.Errorf("failed to decode JSON response: %v", err)
errors.SendInternalError(nil, fmt.Errorf("failed to decode JSON response: %v", err))
}

return cardsResponse.Cards, nil
Expand All @@ -47,21 +48,21 @@ func InterpretTarotCards(apiKey string, cards []string, RequestID uuid.UUID) (st

req, err := http.NewRequest("POST", "https://api.openai.com/v1/completions", strings.NewReader(payload))
if err != nil {
return "", fmt.Errorf("error creating request: %v", err)
errors.SendInternalError(nil, fmt.Errorf("error creating request: %v", err))
}

req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")

resp, err := client.Do(req)
if err != nil {
return "", fmt.Errorf("error sending request: %v", err)
errors.SendInternalError(nil, fmt.Errorf("error sending request: %v", err))
}
defer resp.Body.Close()

var responseBody strings.Builder
if _, err := io.Copy(&responseBody, resp.Body); err != nil {
return "", fmt.Errorf("error reading response body: %v", err)
errors.SendInternalError(nil, fmt.Errorf("error reading response body: %v", err))
}

type Response struct {
Expand All @@ -73,7 +74,7 @@ func InterpretTarotCards(apiKey string, cards []string, RequestID uuid.UUID) (st
var response Response
fmt.Println(response)
if err := json.Unmarshal([]byte(responseBody.String()), &response); err != nil {
return "", fmt.Errorf("error unmarshaling response: %v", err)
errors.SendInternalError(nil, fmt.Errorf("error unmarshaling response: %v", err))

}

Expand Down

0 comments on commit a15ede1

Please sign in to comment.