From 34592a45efd9ceb0579c8eae1ba752da7f625950 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 17 Aug 2024 19:35:47 +0900 Subject: refactor(backend): move fortee package --- backend/fortee/fortee.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 backend/fortee/fortee.go (limited to 'backend/fortee/fortee.go') diff --git a/backend/fortee/fortee.go b/backend/fortee/fortee.go new file mode 100644 index 0000000..5ec7963 --- /dev/null +++ b/backend/fortee/fortee.go @@ -0,0 +1,46 @@ +package fortee + +import ( + "context" + "errors" + "net/http" +) + +const ( + apiEndpoint = "https://fortee.jp" +) + +var ( + ErrLoginFailed = errors.New("fortee login failed") +) + +func Login(ctx context.Context, username string, password string) (string, error) { + client, err := NewClientWithResponses(apiEndpoint, WithRequestEditorFn(addAcceptHeader)) + if err != nil { + return "", err + } + res, err := client.PostLoginWithFormdataBodyWithResponse(ctx, PostLoginFormdataRequestBody{ + Username: username, + Password: password, + }) + if err != nil { + return "", err + } + if res.StatusCode() != http.StatusOK { + return "", ErrLoginFailed + } + resOk := res.JSON200 + if !resOk.LoggedIn { + return "", ErrLoginFailed + } + if resOk.User == nil { + return "", ErrLoginFailed + } + return resOk.User.Username, nil +} + +// fortee API denies requests without Accept header. +func addAcceptHeader(_ context.Context, req *http.Request) error { + req.Header.Set("Accept", "application/json") + return nil +} -- cgit v1.2.3-70-g09d2