@@ -17,12 +17,12 @@ import (
1717const (
1818 paramNotSpecifiedError = "Parameter %s is not specified."
1919
20- azureManagementDnsName = "https://management.core.windows.net"
21- msVersionHeader = "x-ms-version"
22- msVersionHeaderValue = "2014-05-01"
23- contentHeader = "Content-Type"
24- contentHeaderValue = "application/xml"
25- requestIdHeader = "X-Ms-Request-Id"
20+ azureManagementDnsName = "https://management.core.windows.net"
21+ msVersionHeader = "x-ms-version"
22+ msVersionHeaderValue = "2014-05-01"
23+ contentHeader = "Content-Type"
24+ defaultContentHeaderValue = "application/xml"
25+ requestIdHeader = "X-Ms-Request-Id"
2626)
2727
2828//Region public methods starts
@@ -32,7 +32,7 @@ func SendAzureGetRequest(url string) ([]byte, error) {
3232 return nil , fmt .Errorf (paramNotSpecifiedError , "url" )
3333 }
3434
35- response , err := SendAzureRequest (url , "GET" , nil )
35+ response , err := SendAzureRequest (url , "GET" , "" , nil )
3636 if err != nil {
3737 return nil , err
3838 }
@@ -46,7 +46,21 @@ func SendAzurePostRequest(url string, data []byte) (string, error) {
4646 return "" , fmt .Errorf (paramNotSpecifiedError , "url" )
4747 }
4848
49- response , err := SendAzureRequest (url , "POST" , data )
49+ response , err := SendAzureRequest (url , "POST" , "" , data )
50+ if err != nil {
51+ return "" , err
52+ }
53+
54+ requestId := response .Header [requestIdHeader ]
55+ return requestId [0 ], nil
56+ }
57+
58+ func SendAzurePutRequest (url string , contentType string , data []byte ) (string , error ) {
59+ if len (url ) == 0 {
60+ return "" , fmt .Errorf (paramNotSpecifiedError , contentType , "url" )
61+ }
62+
63+ response , err := SendAzureRequest (url , "PUT" , contentType , data )
5064 if err != nil {
5165 return "" , err
5266 }
@@ -60,7 +74,7 @@ func SendAzureDeleteRequest(url string) (string, error) {
6074 return "" , fmt .Errorf (paramNotSpecifiedError , "url" )
6175 }
6276
63- response , err := SendAzureRequest (url , "DELETE" , nil )
77+ response , err := SendAzureRequest (url , "DELETE" , "" , nil )
6478 if err != nil {
6579 return "" , err
6680 }
@@ -69,7 +83,7 @@ func SendAzureDeleteRequest(url string) (string, error) {
6983 return requestId [0 ], nil
7084}
7185
72- func SendAzureRequest (url string , requestType string , data []byte ) (* http.Response , error ) {
86+ func SendAzureRequest (url string , requestType string , contentType string , data []byte ) (* http.Response , error ) {
7387 if len (url ) == 0 {
7488 return nil , fmt .Errorf (paramNotSpecifiedError , "url" )
7589 }
@@ -79,7 +93,7 @@ func SendAzureRequest(url string, requestType string, data []byte) (*http.Respon
7993
8094 client := createHttpClient ()
8195
82- response , err := sendRequest (client , url , requestType , data , 7 )
96+ response , err := sendRequest (client , url , requestType , contentType , data , 7 )
8397 if err != nil {
8498 return nil , err
8599 }
@@ -159,7 +173,7 @@ func CheckStringParams(url string) ([]byte, error) {
159173 return nil , fmt .Errorf (paramNotSpecifiedError , "url" )
160174 }
161175
162- response , err := SendAzureRequest (url , "GET" , nil )
176+ response , err := SendAzureRequest (url , "GET" , "" , nil )
163177 if err != nil {
164178 return nil , err
165179 }
@@ -188,8 +202,8 @@ func NewUUID() (string, error) {
188202
189203//Region private methods starts
190204
191- func sendRequest (client * http.Client , url string , requestType string , data []byte , numberOfRetries int ) (* http.Response , error ) {
192- request , reqErr := createAzureRequest (url , requestType , data )
205+ func sendRequest (client * http.Client , url string , requestType string , contentType string , data []byte , numberOfRetries int ) (* http.Response , error ) {
206+ request , reqErr := createAzureRequest (url , requestType , contentType , data )
193207 if reqErr != nil {
194208 return nil , reqErr
195209 }
@@ -200,7 +214,7 @@ func sendRequest(client *http.Client, url string, requestType string, data []byt
200214 return nil , err
201215 }
202216
203- return sendRequest (client , url , requestType , data , numberOfRetries - 1 )
217+ return sendRequest (client , url , requestType , contentType , data , numberOfRetries - 1 )
204218 }
205219
206220 if response .StatusCode > 299 {
@@ -211,7 +225,7 @@ func sendRequest(client *http.Client, url string, requestType string, data []byt
211225 return nil , azureErr
212226 }
213227
214- return sendRequest (client , url , requestType , data , numberOfRetries - 1 )
228+ return sendRequest (client , url , requestType , contentType , data , numberOfRetries - 1 )
215229 }
216230 }
217231
@@ -228,7 +242,7 @@ func getAzureError(responseBody []byte) error {
228242 return error
229243}
230244
231- func createAzureRequest (url string , requestType string , data []byte ) (* http.Request , error ) {
245+ func createAzureRequest (url string , requestType string , contentType string , data []byte ) (* http.Request , error ) {
232246 var request * http.Request
233247 var err error
234248
@@ -245,7 +259,11 @@ func createAzureRequest(url string, requestType string, data []byte) (*http.Requ
245259 }
246260
247261 request .Header .Add (msVersionHeader , msVersionHeaderValue )
248- request .Header .Add (contentHeader , contentHeaderValue )
262+ if len (contentType ) > 0 {
263+ request .Header .Add (contentHeader , contentType )
264+ } else {
265+ request .Header .Add (contentHeader , defaultContentHeaderValue )
266+ }
249267
250268 return request , nil
251269}
0 commit comments