Skip to content

Commit

Permalink
feat: grpc 関連の api を実装
Browse files Browse the repository at this point in the history
  • Loading branch information
kokoichi206 committed Feb 19, 2023
1 parent 5b3cda4 commit 0f9f6e9
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 13 deletions.
19 changes: 19 additions & 0 deletions api/members.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,22 @@ func queryToColumnName(query string) util.SortKey {
return util.MemberID
}
}

func (server *Server) downloadMembers(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
span, ctx := tracer.StartSpanFromContext(ctx, "api.downloadMembers")
defer span.Finish()

w.Header().Set("Content-Type", "applicaiton/zip")
// ファイル名はここで指定する。
w.Header().Set("Content-Disposition", "attachment; filename=saka-members.zip")

err := server.grpcClient.DownloadMembers(ctx, w)
if err != nil {
server.logger.Warnf(ctx, "failed do download members: %v", err)
w.WriteHeader(http.StatusBadRequest)
return
}

w.WriteHeader(http.StatusOK)
}
19 changes: 18 additions & 1 deletion api/other.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
)

func (server *Server) Health(w http.ResponseWriter, r *http.Request) {

ctx := r.Context()
span, ctx := tracer.StartSpanFromContext(ctx, "api.Health")
defer span.Finish()
Expand All @@ -23,3 +22,21 @@ func (server *Server) Health(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, string(jsonRes))
server.logger.Debug(ctx, "Health checked")
}

func (server *Server) healthGrpc(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
span, ctx := tracer.StartSpanFromContext(ctx, "api.healthGrpc")
defer span.Finish()

msg, err := server.grpcClient.Health(ctx)
if err != nil {
server.logger.Warn(ctx, "failed do health check")

w.Write([]byte(err.Error()))
w.WriteHeader(http.StatusInternalServerError)
return
}

w.Write([]byte(msg))
w.WriteHeader(http.StatusOK)
}
34 changes: 24 additions & 10 deletions api/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,32 @@ import (
muxtrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/gorilla/mux"

"github.com/android-project-46group/api-server/db"
"github.com/android-project-46group/api-server/repository/grpc"
"github.com/android-project-46group/api-server/util"
)

// Server serves HTTP requests for this service.
type Server struct {
config util.Config
querier db.Querier
router *muxtrace.Router
matcher language.Matcher
logger util.Logger
config util.Config
querier db.Querier
router *muxtrace.Router
matcher language.Matcher
logger util.Logger
grpcClient grpc.GrpcClient
}

// Create a new server from the given config file.
func NewServer(config util.Config, querier db.Querier, matcher language.Matcher, logger util.Logger) (*Server, error) {
func NewServer(
config util.Config, querier db.Querier, matcher language.Matcher,
logger util.Logger, grpcClient grpc.GrpcClient,
) (*Server, error) {

server := &Server{
config: config,
querier: querier,
matcher: matcher,
logger: logger,
config: config,
querier: querier,
matcher: matcher,
logger: logger,
grpcClient: grpcClient,
}

err := server.setupRouter()
Expand Down Expand Up @@ -84,6 +90,14 @@ func (server *Server) setupRouter() error {
HandlerFunc(server.getAllFormations).
Methods("GET")

r.Path(rootPath + "/members/download").
HandlerFunc(server.downloadMembers).
Methods("GET")

r.Path(rootPath + "/health/grpc").
HandlerFunc(server.healthGrpc).
Methods("GET")

server.router = r
return nil
}
Expand Down
1 change: 1 addition & 0 deletions app.env
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ DB_SOURCE=postgresql://ubuntu:sakamichi@localhost:5432/sakamichi?sslmode=disable
LOG_PATH=/usr/log/api/saka-debug.log
HOST=ubuntu
SERVICE=saka-api
GRPC_URL=localhost:9876
6 changes: 4 additions & 2 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func main() {

logger, closeFunc, err := util.NewZapLogger(config.LogPath, config.Host, config.Service, util.Degub)
if err != nil {
log.Fatal("cannot create logger")
log.Fatal("cannot create logger: ", err)
}
defer closeFunc()

Expand All @@ -38,8 +38,10 @@ func main() {

matcher := util.NewMatcher()

grpcClient := grpc.NewClient(logger, config)

// DI to server
server, err := api.NewServer(config, querier, matcher, logger)
server, err := api.NewServer(config, querier, matcher, logger, grpcClient)
if err != nil {
logger.Criticalf(context.Background(), "cannot create server:", err)
}
Expand Down

0 comments on commit 0f9f6e9

Please sign in to comment.