/
endpoint.go
164 lines (134 loc) · 5.32 KB
/
endpoint.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
package kyc
import (
"context"
cs "github.com/cloudtrust/common-service"
commonerrors "github.com/cloudtrust/common-service/errors"
apikyc "github.com/cloudtrust/keycloak-bridge/api/kyc"
msg "github.com/cloudtrust/keycloak-bridge/internal/constants"
"github.com/go-kit/kit/endpoint"
)
// Endpoints for self service
type Endpoints struct {
GetActions endpoint.Endpoint
GetUserInSocialRealm endpoint.Endpoint
GetUserByUsernameInSocialRealm endpoint.Endpoint
GetUser endpoint.Endpoint
GetUserByUsername endpoint.Endpoint
ValidateUserInSocialRealm endpoint.Endpoint
ValidateUser endpoint.Endpoint
SendSMSConsentCodeInSocialRealm endpoint.Endpoint
SendSMSConsentCode endpoint.Endpoint
SendSMSCodeInSocialRealm endpoint.Endpoint
SendSMSCode endpoint.Endpoint
}
// MakeGetActionsEndpoint creates an endpoint for GetActions
func MakeGetActionsEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, _ interface{}) (interface{}, error) {
return component.GetActions(ctx)
}
}
// MakeGetUserByUsernameInSocialRealmEndpoint endpoint creation
func MakeGetUserByUsernameInSocialRealmEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
var user = m[prmQryUserName]
return component.GetUserByUsernameInSocialRealm(ctx, user)
}
}
// MakeGetUserByUsernameEndpoint endpoint creation
func MakeGetUserByUsernameEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
var realm = m[prmRealm]
var user = m[prmQryUserName]
return component.GetUserByUsername(ctx, realm, user)
}
}
// MakeGetUserInSocialRealmEndpoint endpoint creation
func MakeGetUserInSocialRealmEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
var consentCode *string
if value, ok := m[prmQryConsent]; ok {
consentCode = &value
}
return component.GetUserInSocialRealm(ctx, m[prmUserID], consentCode)
}
}
// MakeGetUserEndpoint endpoint creation
func MakeGetUserEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
var consentCode *string
if value, ok := m[prmQryConsent]; ok {
consentCode = &value
}
return component.GetUser(ctx, m[prmRealm], m[prmUserID], consentCode)
}
}
// MakeValidateUserInSocialRealmEndpoint endpoint creation
func MakeValidateUserInSocialRealmEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
var user, err = apikyc.UserFromJSON(m[reqBody])
if err != nil {
return nil, commonerrors.CreateBadRequestError(commonerrors.MsgErrInvalidParam + "." + msg.BodyContent)
}
if err := user.Validate(); err != nil {
return nil, err
}
var consentCode *string
if value, ok := m[prmQryConsent]; ok {
consentCode = &value
}
return nil, component.ValidateUserInSocialRealm(ctx, m[prmUserID], user, consentCode)
}
}
// MakeValidateUserEndpoint endpoint creation
func MakeValidateUserEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
var user, err = apikyc.UserFromJSON(m[reqBody])
if err != nil {
return nil, commonerrors.CreateBadRequestError(commonerrors.MsgErrInvalidParam + "." + msg.BodyContent)
}
if err := user.Validate(); err != nil {
return nil, err
}
var consentCode *string
if value, ok := m[prmQryConsent]; ok {
consentCode = &value
}
return nil, component.ValidateUser(ctx, m[prmRealm], m[prmUserID], user, consentCode)
}
}
// MakeSendSmsConsentCodeInSocialRealmEndpoint creates an endpoint for SendSmsConsentCodeInSocialRealm
func MakeSendSmsConsentCodeInSocialRealmEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
return nil, component.SendSmsConsentCodeInSocialRealm(ctx, m[prmUserID])
}
}
// MakeSendSmsConsentCodeEndpoint creates an endpoint for SendSmsConsentCode
func MakeSendSmsConsentCodeEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
return nil, component.SendSmsConsentCode(ctx, m[prmRealm], m[prmUserID])
}
}
// MakeSendSmsCodeInSocialRealmEndpoint creates an endpoint for SendSmsCodeInSocialRealm
func MakeSendSmsCodeInSocialRealmEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
code, err := component.SendSmsCodeInSocialRealm(ctx, m[prmUserID])
return map[string]string{"code": code}, err
}
}
// MakeSendSmsCodeEndpoint creates an endpoint for SendSmsCode
func MakeSendSmsCodeEndpoint(component Component) cs.Endpoint {
return func(ctx context.Context, req interface{}) (interface{}, error) {
var m = req.(map[string]string)
code, err := component.SendSmsCode(ctx, m[prmRealm], m[prmUserID])
return map[string]string{"code": code}, err
}
}