newsbot-portal/apiclient/users.go

65 lines
1.5 KiB
Go

package apiclient
import (
"fmt"
"net/http"
"net/url"
"git.jamestombleson.com/jtom38/newsbot-api/domain"
)
const (
UserBaseRoute = "api/v1/users"
)
type Users interface {
Login(username, password string) (domain.LoginResponse, error)
SignUp(username, password string) (domain.BaseResponse, error)
}
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) {
endpoint := fmt.Sprintf("%s/%s/login", 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.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) {
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
}