Skip to content

Commit a33ed9b

Browse files
committed
refactor chat service: replace dummy user provider with user client for user retrieval
1 parent a5b061b commit a33ed9b

File tree

5 files changed

+48
-31
lines changed

5 files changed

+48
-31
lines changed

come-back/chat-service/cmd/main.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package main
22

33
import (
4+
"chat-service/internal/client"
45
"chat-service/internal/controller"
56
"chat-service/internal/repository"
7+
"fmt"
68
"log"
79
"os"
810

@@ -18,8 +20,9 @@ func main() {
1820
repository.InitDB(os.Getenv("MYSQL_DSN"))
1921
controller.InitRedis()
2022

21-
userProvider := &controller.HTTPUserProvider{}
22-
chatCtrl := controller.NewChatController(userProvider)
23+
chatCtrl := controller.NewChatController(
24+
*client.NewUserClient(fmt.Sprintf("http://user-service:%s", os.Getenv("USER_PORT"))),
25+
)
2326

2427
router := gin.Default()
2528
router.GET("/api/history", chatCtrl.GetChatHistory)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package client
2+
3+
import (
4+
"chat-service/internal/model"
5+
"encoding/json"
6+
"fmt"
7+
"net/http"
8+
)
9+
10+
type UserClient struct {
11+
Host string
12+
}
13+
14+
func NewUserClient(host string) *UserClient {
15+
return &UserClient{
16+
Host: host,
17+
}
18+
}
19+
20+
func (uc *UserClient) GetUserByID(userID uint) (model.User, error) {
21+
url := fmt.Sprintf("%s/api/user/%d", uc.Host, userID)
22+
resp, err := http.Get(url)
23+
if err != nil {
24+
return model.User{}, fmt.Errorf("failed to get user: %w", err)
25+
}
26+
27+
defer resp.Body.Close()
28+
if resp.StatusCode != http.StatusOK {
29+
return model.User{}, fmt.Errorf("failed to get user, status code: %d", resp.StatusCode)
30+
}
31+
32+
var user model.User
33+
if err := json.NewDecoder(resp.Body).Decode(&user); err != nil {
34+
return model.User{}, fmt.Errorf("failed to decode user response: %w", err)
35+
}
36+
37+
return user, nil
38+
}

come-back/chat-service/internal/controller/chat.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,19 @@ import (
99
"strconv"
1010
"time"
1111

12+
"chat-service/internal/client"
1213
"chat-service/internal/model"
1314

1415
"github.com/gin-gonic/gin"
1516
"github.com/gorilla/websocket"
1617
)
1718

1819
type ChatController struct {
19-
UserProvider model.UserProvider
20+
UserClient client.UserClient
2021
}
2122

22-
func NewChatController(userProvider model.UserProvider) *ChatController {
23-
return &ChatController{UserProvider: userProvider}
24-
}
25-
26-
type HTTPUserProvider struct{}
27-
28-
func (h *HTTPUserProvider) GetUserByID(id uint) (model.User, error) {
29-
return model.User{ID: id, Username: "temp_user"}, nil
23+
func NewChatController(userClinet client.UserClient) *ChatController {
24+
return &ChatController{UserClient: userClinet}
3025
}
3126

3227
func init() {
@@ -38,7 +33,7 @@ func (cc *ChatController) HandleChat(c *gin.Context) {
3833
userID, exists := c.Get("user_id")
3934
if exists {
4035
var err error
41-
user, err = cc.UserProvider.GetUserByID(userID.(uint))
36+
user, err = cc.UserClient.GetUserByID(userID.(uint))
4237
if err != nil {
4338
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to get user"})
4439
return

come-back/post-service/go.mod

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,10 @@ require (
3434
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
3535
github.com/ugorji/go/codec v1.2.12 // indirect
3636
golang.org/x/arch v0.8.0 // indirect
37-
<<<<<<< HEAD
3837
golang.org/x/crypto v0.35.0 // indirect
3938
golang.org/x/net v0.25.0 // indirect
4039
golang.org/x/sys v0.30.0 // indirect
4140
golang.org/x/text v0.22.0 // indirect
42-
=======
43-
golang.org/x/crypto v0.23.0 // indirect
44-
golang.org/x/net v0.25.0 // indirect
45-
golang.org/x/sys v0.20.0 // indirect
46-
golang.org/x/text v0.20.0 // indirect
47-
>>>>>>> 9e60d1e (split post service)
4841
google.golang.org/protobuf v1.34.1 // indirect
4942
gopkg.in/yaml.v3 v3.0.1 // indirect
5043
)

come-back/post-service/go.sum

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,28 +76,16 @@ github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZ
7676
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
7777
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
7878
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
79-
<<<<<<< HEAD
8079
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
8180
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
82-
=======
83-
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
84-
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
85-
>>>>>>> 9e60d1e (split post service)
8681
golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
8782
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
8883
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
8984
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
90-
<<<<<<< HEAD
9185
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
9286
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
9387
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
9488
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
95-
=======
96-
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
97-
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
98-
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
99-
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
100-
>>>>>>> 9e60d1e (split post service)
10189
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
10290
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
10391
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=

0 commit comments

Comments
 (0)