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  }