Newer
Older
"github.com/oidc-mytoken/server/internal/endpoints/configuration/pkg"
"github.com/oidc-mytoken/server/pkg/model"
"github.com/oidc-mytoken/server/shared/httpClient"
"github.com/oidc-mytoken/server/shared/utils"
)
type Mytoken struct {
pkg.MytokenConfiguration
}
func NewMytokenInstance(url string) (*Mytoken, error) {
configEndpoint := utils.CombineURLPath(url, "/.well-known/mytoken-configuration")
resp, err := httpClient.Do().R().SetResult(&pkg.MytokenConfiguration{}).SetError(&model.APIError{}).Get(configEndpoint)
if err != nil {
return nil, newMytokenErrorFromError("could not connect to mytoken instance", err)
}
if e := resp.Error(); e != nil {
if errRes := e.(*model.APIError); errRes != nil && len(errRes.Error) > 0 {
return nil, &MytokenError{
err: errRes.Error,
errorDetails: errRes.ErrorDescription,
}
}
}
config, ok := resp.Result().(*pkg.MytokenConfiguration)
if !ok {
return nil, &MytokenError{
err: "unexpected response from mytoken server",
}
}
return &Mytoken{
MytokenConfiguration: *config,
}, nil
}