github.com/grokify/go-ringcentral-client@v0.3.31/office/v1/util/upload_user_profile_image.go (about)

     1  package clientutil
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  
     7  	"github.com/grokify/mogo/mime/multipartutil"
     8  	"github.com/grokify/mogo/net/http/httputilmore"
     9  	"github.com/grokify/mogo/net/urlutil"
    10  )
    11  
    12  func UploadUserProfileImage(httpClient *http.Client, serverUrl, accountId, extensionId, imgFilepath string) (*http.Response, error) {
    13  	builder := multipartutil.NewMultipartBuilder()
    14  	err := builder.WriteFilePathPlus("image", imgFilepath, false)
    15  	if err != nil {
    16  		return nil, err
    17  	}
    18  	err = builder.Close()
    19  	if err != nil {
    20  		return nil, err
    21  	}
    22  	//fmt.Println(builder.Buffer.String())
    23  
    24  	urlPath := fmt.Sprintf(`restapi/v1.0/account/%s/extension/%s/profile-image`, accountId, extensionId)
    25  	apiURL := urlutil.JoinAbsolute(serverUrl, urlPath)
    26  
    27  	req, err := http.NewRequest(http.MethodPost, apiURL, builder.Buffer)
    28  	if err != nil {
    29  		return nil, err
    30  	}
    31  
    32  	if ct, err := builder.ContentTypeHeader(httputilmore.ContentTypeMultipartFormData); err != nil {
    33  		return nil, err
    34  	} else {
    35  		req.Header.Add(httputilmore.HeaderContentType, ct)
    36  		return httpClient.Do(req)
    37  	}
    38  }