github.com/mondo192/jfrog-client-go@v1.0.0/access/services/invite.go (about) 1 package services 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "github.com/mondo192/jfrog-client-go/artifactory/services/utils" 7 "github.com/mondo192/jfrog-client-go/auth" 8 "github.com/mondo192/jfrog-client-go/http/jfroghttpclient" 9 "github.com/mondo192/jfrog-client-go/utils/errorutils" 10 "net/http" 11 ) 12 13 const ( 14 inviteApi = "api/v1/users/invite" 15 InviteCliSourceName = "cli" 16 ) 17 18 type InviteService struct { 19 client *jfroghttpclient.JfrogHttpClient 20 ServiceDetails auth.ServiceDetails 21 } 22 23 type InvitedUser struct { 24 InvitedEmail string `json:"invited_email,omitempty" csv:"invited_email,omitempty"` 25 Source string `json:"source,omitempty" csv:"source,omitempty"` 26 } 27 28 func NewInviteService(client *jfroghttpclient.JfrogHttpClient) *InviteService { 29 return &InviteService{client: client} 30 } 31 32 func (us *InviteService) InviteUser(email, source string) error { 33 httpDetails := us.ServiceDetails.CreateHttpClientDetails() 34 url := fmt.Sprintf("%s%s", us.ServiceDetails.GetUrl(), inviteApi) 35 data := InvitedUser{ 36 InvitedEmail: email, 37 Source: source, 38 } 39 requestContent, err := json.Marshal(data) 40 if err != nil { 41 return errorutils.CheckError(err) 42 } 43 utils.SetContentType("application/json", &httpDetails.Headers) 44 resp, body, err := us.client.SendPost(url, requestContent, &httpDetails) 45 if err != nil { 46 return err 47 } 48 if resp == nil { 49 return errorutils.CheckErrorf("no response was returned for the request sent") 50 } 51 return errorutils.CheckResponseStatusWithBody(resp, body, http.StatusOK) 52 }