From bb73e1eaff25d90f8cf5f191844190101ab114c7 Mon Sep 17 00:00:00 2001 From: Yehyeok Bang Date: Thu, 26 Sep 2024 19:11:43 +0900 Subject: [PATCH] =?UTF-8?q?[#28]=20refactor:=20=EB=B6=84=EC=84=9D=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EB=B3=80=ED=99=94=20=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/report/services/report_service.go | 25 ++++++++++++++++------ app/report/services/report_service_test.go | 2 +- app/report/types/request_types.go | 4 ++++ app/report/types/response_types.go | 1 - 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/app/report/services/report_service.go b/app/report/services/report_service.go index dd27fdd..cc1386e 100644 --- a/app/report/services/report_service.go +++ b/app/report/services/report_service.go @@ -1,6 +1,7 @@ package services import ( + "bytes" "encoding/json" "fmt" "gdsc/baro/app/report/models" @@ -41,11 +42,9 @@ func NewReportService(reportRepository repositories.ReportRepositoryInterface, u } var REQUEST_URL string -var client *http.Client func init() { REQUEST_URL = os.Getenv("AI_SERVER_API_URL") - client = &http.Client{} } func (service *ReportService) Analysis(c *gin.Context, input types.RequestAnalysis) (string, error) { @@ -77,11 +76,13 @@ func (service *ReportService) Analysis(c *gin.Context, input types.RequestAnalys } func Predict(service ReportService, url string, user usermodel.User, input types.RequestAnalysis) error { - response, err := HandleRequest(url) + response, err := HandleRequest(url, input.VideoURL) if err != nil { return err } + fmt.Println("응답: ", response) + result, scores, nomalRatio, statusFrequencies, distances, landmarksInfo := ParseAnalysis(&response) score := CalculateScores(result, scores) @@ -110,26 +111,36 @@ func Predict(service ReportService, url string, user usermodel.User, input types return nil } -func HandleRequest(url string) (types.ResponseAnalysis, error) { - req, err := http.NewRequest("GET", url, nil) +func HandleRequest(url string, videoURL string) (types.ResponseAnalysis, error) { + requestBody, err := json.Marshal(map[string]string{ + "video_url": videoURL, + }) if err != nil { return types.ResponseAnalysis{}, err } - response, err := client.Do(req) + req, err := http.NewRequest("POST", url, bytes.NewBuffer(requestBody)) if err != nil { return types.ResponseAnalysis{}, err } + req.Header.Set("Content-Type", "application/json") + // HTTP 클라이언트 요청 보내기 + client := &http.Client{} + response, err := client.Do(req) + if err != nil { + return types.ResponseAnalysis{}, err + } defer response.Body.Close() + // 응답 바디 읽기 body, err := io.ReadAll(response.Body) if err != nil { return types.ResponseAnalysis{}, err } var data types.ResponseAnalysis - err = json.Unmarshal([]byte(body), &data) + err = json.Unmarshal(body, &data) if err != nil { fmt.Println("응답 파싱 에러:", err) return types.ResponseAnalysis{}, err diff --git a/app/report/services/report_service_test.go b/app/report/services/report_service_test.go index ebe5f1b..a6583f6 100644 --- a/app/report/services/report_service_test.go +++ b/app/report/services/report_service_test.go @@ -163,7 +163,7 @@ func TestHandleRequest_Error(t *testing.T) { url := "" // Call the service - _, err := services.HandleRequest(url) + _, err := services.HandleRequest(url, url) assert.Error(t, err) } diff --git a/app/report/types/request_types.go b/app/report/types/request_types.go index d401afe..f0f4692 100644 --- a/app/report/types/request_types.go +++ b/app/report/types/request_types.go @@ -15,6 +15,10 @@ type RequestAnalysis struct { Type string `json:"type" validate:"required"` } +type RequestAnalysisToAi struct { + VideoURL string `json:"video_url"` +} + type RequestReportSummary struct { YearAndMonth string `json:"year_and_month" validate:"required"` } diff --git a/app/report/types/response_types.go b/app/report/types/response_types.go index ebbab70..673a245 100644 --- a/app/report/types/response_types.go +++ b/app/report/types/response_types.go @@ -14,7 +14,6 @@ type LandmarkInfo struct { Angle float64 `json:"angle"` } -// 전체 수정된 구조체 type ResponseReportSummary struct { ID uint `json:"id"` CreatedAt time.Time `json:"created_at"`