newsbot-portal/apiclient/users.go

65 lines
1.5 KiB
Go
Raw Normal View History

2024-05-12 09:21:20 -07:00
package apiclient
import (
"fmt"
"net/http"
"net/url"
"git.jamestombleson.com/jtom38/newsbot-api/domain"
)
const (
2024-05-12 10:46:17 -07:00
UserBaseRoute = "api/v1/users"
2024-05-12 09:21:20 -07:00
)
type Users interface {
Login(username, password string) (domain.LoginResponse, error)
SignUp(username, password string) (domain.BaseResponse, error)
2024-05-12 09:21:20 -07:00
}
type userClient struct {
serverAddress string
client http.Client
}
func newUserService(serverAddress string) userClient {
return userClient{
serverAddress: serverAddress,
client: http.Client{},
}
}
func (a userClient) Login(username, password string) (domain.LoginResponse, error) {
2024-05-12 10:46:17 -07:00
endpoint := fmt.Sprintf("%s/%s/login", a.serverAddress, UserBaseRoute)
2024-05-12 09:21:20 -07:00
param := url.Values{}
param.Set("username", username)
param.Set("password", password)
// Create the struct we are expecting back from the API so we can have it populated
var bind = domain.LoginResponse{}
err := PostUrlForm(a.client, endpoint, param, &bind)
if err != nil {
return domain.LoginResponse{}, err
}
return bind, nil
}
func (a userClient) SignUp(username, password string) (domain.BaseResponse, error) {
2024-05-12 10:46:17 -07:00
endpoint := fmt.Sprintf("%s/%s/register", a.serverAddress, UserBaseRoute)
param := url.Values{}
param.Set("username", username)
param.Set("password", password)
// Create the struct we are expecting back from the API so we can have it populated
var bind = domain.BaseResponse{}
err := PostUrlForm(a.client, endpoint, param, &bind)
if err != nil {
return domain.BaseResponse{}, err
}
return bind, nil
}