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 }