Files
satusehat-bridging/internal/integration/oauth_integration.go
2025-11-24 09:13:08 +07:00

55 lines
1.1 KiB
Go

package integration
import (
"encoding/json"
"net/http"
"satusehat-rssa/internal/model"
"strings"
)
type OauthInterface interface {
GenerateToken(req model.OauthRequest) (*model.OauthResponse, error)
}
type OauthRepository struct {
akses *model.Akses
}
// GenerateToken implements OauthInterface.
func (o *OauthRepository) GenerateToken(req model.OauthRequest) (*model.OauthResponse, error) {
var (
data *model.OauthResponse
)
url := o.akses.AuthUrl + "/accesstoken?grant_type=client_credentials"
method := "POST"
req_data := "client_id=" + req.ClientId + "&client_secret=" + req.ClientSecret
payload := strings.NewReader(req_data)
client := &http.Client{}
request, err := http.NewRequest(method, url, payload)
if err != nil {
return nil, err
}
request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(request)
if err != nil {
return nil, err
}
defer res.Body.Close()
err = json.NewDecoder(res.Body).Decode(&data)
if err != nil {
return nil, err
}
return data, nil
}
func NewOauthRequestRepo(akses *model.Akses) OauthInterface {
return &OauthRepository{
akses: akses,
}
}