diff --git a/src/Common/AzureRest/AzureRestOperations.cs b/src/Common/AzureRest/AzureRestOperations.cs index 62bc61f6e7..dea3a0d955 100644 --- a/src/Common/AzureRest/AzureRestOperations.cs +++ b/src/Common/AzureRest/AzureRestOperations.cs @@ -40,26 +40,6 @@ internal AzureRestOperations(AzureRestClient client) public async Task> BeginHttpMessagesAsync(HttpMethod method, string path, IDictionary> queries = null, string fragment = null, Object content = null, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { - if (path == null) - { - throw new ValidationException(ValidationRules.CannotBeNull, "path"); - } - if (path.Length > 0) - { - if (path.StartsWith("/") && Client.EndsWithSlash) - { - path = path.Substring(1); - } - else if (!path.StartsWith("/") && !Client.EndsWithSlash) - { - path = "/" + path; - } - } - - if (method == null) - { - throw new ValidationException(ValidationRules.CannotBeNull, "method"); - } // Tracing bool _shouldTrace = ServiceClientTracing.IsEnabled; string _invocationId = null; @@ -70,70 +50,18 @@ internal AzureRestOperations(AzureRestClient client) tracingParameters.Add("cancellationToken", cancellationToken); ServiceClientTracing.Enter(_invocationId, this, "BeginSend", tracingParameters); } - // Construct URL - var _baseUrl = Client.BaseUri.AbsoluteUri; - var _url = new System.Uri(_baseUrl + path).ToString(); - if(queries != null) - { - foreach (string key in queries.Keys) - { - _url += (_url.Contains("?") ? "&" : "?") + key + "=" + string.Join(",", queries[key]); - } - } - if (!String.IsNullOrEmpty(fragment)) - { - _url += "#" + fragment; - } - // Create HTTP transport objects - var _httpRequest = new System.Net.Http.HttpRequestMessage(); - System.Net.Http.HttpResponseMessage _httpResponse = null; - _httpRequest.Method = method; - _httpRequest.RequestUri = new System.Uri(_url); - // Set Headers - if (Client.GenerateClientRequestId != null && Client.GenerateClientRequestId.Value) - { - _httpRequest.Headers.TryAddWithoutValidation("x-ms-client-request-id", System.Guid.NewGuid().ToString()); - } - if (Client.AcceptLanguage != null) - { - if (_httpRequest.Headers.Contains("accept-language")) - { - _httpRequest.Headers.Remove("accept-language"); - } - _httpRequest.Headers.TryAddWithoutValidation("accept-language", Client.AcceptLanguage); - } - if (customHeaders != null) - { - foreach (var _header in customHeaders) - { - if (_httpRequest.Headers.Contains(_header.Key)) - { - _httpRequest.Headers.Remove(_header.Key); - } - _httpRequest.Headers.TryAddWithoutValidation(_header.Key, _header.Value); - } - } - // Serialize Request + string _requestContent = null; if (content != null) { _requestContent = Rest.Serialization.SafeJsonConvert.SerializeObject(content, Client.SerializationSettings); - _httpRequest.Content = new StringContent(_requestContent, System.Text.Encoding.UTF8); - _httpRequest.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); - } - // Set Credentials - if (Client.Credentials != null) - { - cancellationToken.ThrowIfCancellationRequested(); - await Client.Credentials.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false); } - // Send Request - if (_shouldTrace) - { - ServiceClientTracing.SendRequest(_invocationId, _httpRequest); - } - cancellationToken.ThrowIfCancellationRequested(); - _httpResponse = await Client.HttpClient.SendAsync(_httpRequest, cancellationToken).ConfigureAwait(false); + + AzureOperationResponse _generic = await BeginHttpMessagesAsyncWithFullResponse(method, path, queries, fragment, _requestContent, customHeaders, cancellationToken).ConfigureAwait(false); + HttpResponseMessage _httpResponse = _generic.Response; + HttpRequestMessage _httpRequest = _generic.Request; + + if (_shouldTrace) { ServiceClientTracing.ReceiveResponse(_invocationId, _httpResponse); @@ -163,7 +91,7 @@ internal AzureRestOperations(AzureRestClient client) { // Ignore the exception } - ex.Request = new HttpRequestMessageWrapper(_httpRequest, _requestContent); + ex.Request = new HttpRequestMessageWrapper(_httpRequest, _httpRequest.Content.ToString()); ex.Response = new HttpResponseMessageWrapper(_httpResponse, _responseContent); if (_httpResponse.Headers.Contains("x-ms-request-id")) { @@ -228,6 +156,7 @@ internal AzureRestOperations(AzureRestClient client) ServiceClientTracing.Exit(_invocationId, _result); } return _result; + } public async Task BeginHttpGetMessagesAsync(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) @@ -268,7 +197,6 @@ internal AzureRestOperations(AzureRestClient client) } } - public async Task BeginHttpUpdateMessagesAsync(HttpMethod method, string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { IDictionary> queries = new Dictionary>(); @@ -287,38 +215,274 @@ internal AzureRestOperations(AzureRestClient client) return (_result==null)? default(T) : _result.Body; } } + + [Obsolete("GetResouce is deprecated, please use GetResource instead.", true)] public T GetResouce(string resourceId, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { return BeginHttpGetMessagesAsync(resourceId, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); } + [Obsolete("GetResouceList is deprecated, please use GetResourceList instead.", true)] public List GetResouceList(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { return BeginHttpGetMessagesAsync>(resourceUri, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); } + [Obsolete("GetResoucePage is deprecated, please use GetResourcePage instead.", true)] public P GetResoucePage(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) where P : IPage { return BeginHttpGetMessagesAsync

(resourceUri, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); } + [Obsolete("DeleteResouce is deprecated, please use DeleteResource instead.", true)] public void DeleteResouce(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { BeginHttpDeleteMessagesAsync(resourceUri, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); } + [Obsolete("PutResouce is deprecated, please use PutResource instead.", true)] public T PutResouce(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { return BeginHttpUpdateMessagesAsync(HttpMethod.Put, resourceUri, apiVersion, content, customHeaders, cancellationToken).GetAwaiter().GetResult(); } + [Obsolete("PostResouce is deprecated, please use PostResource instead.", true)] public T PostResouce(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { return BeginHttpUpdateMessagesAsync(HttpMethod.Post, resourceUri, apiVersion, content, customHeaders, cancellationToken).GetAwaiter().GetResult(); } + + [Obsolete("PatchResouce is deprecated, please use PatchResource instead.", true)] public T PatchResouce(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { return BeginHttpUpdateMessagesAsync(PATCH, resourceUri, apiVersion, content, customHeaders, cancellationToken).GetAwaiter().GetResult(); } + + public T GetResource(string resourceId, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpGetMessagesAsync(resourceId, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + + public List GetResourceList(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpGetMessagesAsync>(resourceUri, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + + public P GetResourcePage(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) where P : IPage + { + return BeginHttpGetMessagesAsync

(resourceUri, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + + public void DeleteResource(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + BeginHttpDeleteMessagesAsync(resourceUri, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + + public T PutResource(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpUpdateMessagesAsync(HttpMethod.Put, resourceUri, apiVersion, content, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + + public T PostResource(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpUpdateMessagesAsync(HttpMethod.Post, resourceUri, apiVersion, content, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + public T PatchResource(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpUpdateMessagesAsync(PATCH, resourceUri, apiVersion, content, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + + /*Generic section*/ + public async Task> BeginHttpMessagesAsyncWithFullResponse(HttpMethod method, string path, IDictionary> queries = null, string fragment = null, Object content = null, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + if (path == null) + { + throw new ValidationException(ValidationRules.CannotBeNull, "path"); + } + if (path.Length > 0) + { + if (path.StartsWith("/") && Client.EndsWithSlash) + { + path = path.Substring(1); + } + else if (!path.StartsWith("/") && !Client.EndsWithSlash) + { + path = "/" + path; + } + } + + if (method == null) + { + throw new ValidationException(ValidationRules.CannotBeNull, "method"); + } + // Tracing + bool _shouldTrace = ServiceClientTracing.IsEnabled; + string _invocationId = null; + if (_shouldTrace) + { + _invocationId = ServiceClientTracing.NextInvocationId.ToString(); + Dictionary tracingParameters = new Dictionary(); + tracingParameters.Add("cancellationToken", cancellationToken); + ServiceClientTracing.Enter(_invocationId, this, "BeginSend", tracingParameters); + } + // Construct URL + var _baseUrl = Client.BaseUri.AbsoluteUri; + var _url = new System.Uri(_baseUrl + path).ToString(); + if (queries != null) + { + foreach (string key in queries.Keys) + { + _url += (_url.Contains("?") ? "&" : "?") + key + "=" + string.Join(",", queries[key]); + } + } + if (!String.IsNullOrEmpty(fragment)) + { + _url += "#" + fragment; + } + // Create HTTP transport objects + var _httpRequest = new System.Net.Http.HttpRequestMessage(); + System.Net.Http.HttpResponseMessage _httpResponse = null; + _httpRequest.Method = method; + _httpRequest.RequestUri = new System.Uri(_url); + // Set Headers + if (Client.GenerateClientRequestId != null && Client.GenerateClientRequestId.Value) + { + _httpRequest.Headers.TryAddWithoutValidation("x-ms-client-request-id", System.Guid.NewGuid().ToString()); + } + if (Client.AcceptLanguage != null) + { + if (_httpRequest.Headers.Contains("accept-language")) + { + _httpRequest.Headers.Remove("accept-language"); + } + _httpRequest.Headers.TryAddWithoutValidation("accept-language", Client.AcceptLanguage); + } + if (customHeaders != null) + { + foreach (var _header in customHeaders) + { + if (_httpRequest.Headers.Contains(_header.Key)) + { + _httpRequest.Headers.Remove(_header.Key); + } + _httpRequest.Headers.TryAddWithoutValidation(_header.Key, _header.Value); + } + } + // Serialize Request + if (content != null) + { + _httpRequest.Content = new StringContent((string)content, System.Text.Encoding.UTF8); + _httpRequest.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); + } + // Set Credentials + if (Client.Credentials != null) + { + cancellationToken.ThrowIfCancellationRequested(); + await Client.Credentials.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false); + } + // Send Request + if (_shouldTrace) + { + ServiceClientTracing.SendRequest(_invocationId, _httpRequest); + } + cancellationToken.ThrowIfCancellationRequested(); + _httpResponse = await Client.HttpClient.SendAsync(_httpRequest, cancellationToken).ConfigureAwait(false); + if (_shouldTrace) + { + ServiceClientTracing.ReceiveResponse(_invocationId, _httpResponse); + } + HttpStatusCode _statusCode = _httpResponse.StatusCode; + cancellationToken.ThrowIfCancellationRequested(); + + // Create Result + var _result = new AzureOperationResponse(); + _result.Request = _httpRequest; + _result.Response = _httpResponse; + if (_httpResponse.Headers.Contains("x-ms-request-id")) + { + _result.RequestId = _httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault(); + } + + _result.Body = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false); + if (_shouldTrace) + { + ServiceClientTracing.Exit(_invocationId, _result); + } + return _result; + } + + public async Task> BeginHttpGetMessagesAsyncWithFullResponse(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + IDictionary> queries = new Dictionary>(); + if (apiVersion != null) + { + queries.Add(API_VERSION, new List { apiVersion }); + } + return await BeginHttpMessagesAsyncWithFullResponse(method: HttpMethod.Get, + path: resourceUri, + queries: queries, + fragment: null, + content: null, + customHeaders: null, + cancellationToken: cancellationToken).ConfigureAwait(false); + } + + public async Task> BeginHttpDeleteMessagesAsyncWithFullResponse(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + IDictionary> queries = new Dictionary>(); + if (apiVersion != null) + { + queries.Add(API_VERSION, new List { apiVersion }); + } + + return await BeginHttpMessagesAsyncWithFullResponse(method: HttpMethod.Delete, + path: resourceUri, + queries: queries, + fragment: null, + content: null, + customHeaders: null, + cancellationToken: cancellationToken).ConfigureAwait(false); + } + + public async Task> BeginHttpUpdateMessagesAsyncWithFullResponse(HttpMethod method, string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + IDictionary> queries = new Dictionary>(); + if (apiVersion != null) + { + queries.Add(API_VERSION, new List { apiVersion }); + } + + return await BeginHttpMessagesAsyncWithFullResponse(method: method, + path: resourceUri, + queries: queries, + fragment: null, + content: content, + customHeaders: null, + cancellationToken: cancellationToken).ConfigureAwait(false); + } + + public AzureOperationResponse GetResourceWithFullResponse(string resourceId, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpGetMessagesAsyncWithFullResponse(resourceId, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + + public AzureOperationResponse DeleteResourceWithFullResponse(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpDeleteMessagesAsyncWithFullResponse(resourceUri, apiVersion, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + + public AzureOperationResponse PutResourceWithFullResponse(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpUpdateMessagesAsyncWithFullResponse(HttpMethod.Put, resourceUri, apiVersion, content, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + + public AzureOperationResponse PostResourceWithFullResponse(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpUpdateMessagesAsyncWithFullResponse(HttpMethod.Post, resourceUri, apiVersion, content, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } + public AzureOperationResponse PatchResourceWithFullResponse(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return BeginHttpUpdateMessagesAsyncWithFullResponse(PATCH, resourceUri, apiVersion, content, customHeaders, cancellationToken).GetAwaiter().GetResult(); + } } } diff --git a/src/Common/AzureRest/IAzureRestOperations.cs b/src/Common/AzureRest/IAzureRestOperations.cs index b41afa6333..1de8c8563d 100644 --- a/src/Common/AzureRest/IAzureRestOperations.cs +++ b/src/Common/AzureRest/IAzureRestOperations.cs @@ -92,18 +92,116 @@ public partial interface IAzureRestOperations /// Task BeginHttpUpdateMessagesAsync(HttpMethod method, string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + [Obsolete("GetResouce is deprecated, please use GetResource instead.", true)] T GetResouce(string resourceId, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + [Obsolete("GetResouceList is deprecated, please use GetResourceList instead.", true)] List GetResouceList(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + [Obsolete("GetResoucePage is deprecated, please use GetResourcePage instead.", true)] P GetResoucePage(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) where P : IPage; + [Obsolete("DeleteResouce is deprecated, please use DeleteResource instead.", true)] void DeleteResouce(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + [Obsolete("PutResouce is deprecated, please use PutResource instead.", true)] T PutResouce(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + [Obsolete("PostResouce is deprecated, please use PostResource instead.", true)] T PostResouce(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + [Obsolete("PatchResouce is deprecated, please use PatchResource instead.", true)] T PatchResouce(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + T GetResource(string resourceId, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + List GetResourceList(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + P GetResourcePage(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) where P : IPage; + + void DeleteResource(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + T PutResource(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + T PostResource(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + T PatchResource(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + /*Generic Section*/ + + ///

+ /// Support universal HTTP request + /// + /// Http Method + /// The path compoment in URL + /// The queries compoment in URL + /// The fragment compoment in URL + /// The content in request body + /// The headers that will be added to request. + /// The cancellation token. + /// + /// Thrown when a required parameter is null + /// + Task> BeginHttpMessagesAsyncWithFullResponse(HttpMethod method, string path, IDictionary> queries = null, string fragment = null, Object content = null, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + /// + /// GET request to resource URI + /// + /// + /// URI represents resource and correlated. Use the format + /// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name} + /// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}/... + /// + /// The API version to use for the operation. + /// The headers that will be added to request. + /// The cancellation token. + /// + /// Thrown when a required parameter is null + /// + Task> BeginHttpGetMessagesAsyncWithFullResponse(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + /// + /// DELETE request to resource URI + /// + /// + /// URI represents resource and correlated. Use the format + /// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name} + /// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}/... + /// + /// The API version to use for the operation. + /// The headers that will be added to request. + /// The cancellation token. + /// + /// Thrown when a required parameter is null + /// + Task> BeginHttpDeleteMessagesAsyncWithFullResponse(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + /// + /// Update(PUT, POST, PATCH) request to resource URI + /// + /// Http Method + /// + /// URI represents resource and correlated. Use the format + /// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name} + /// /subscriptions/{guid}/resourceGroups/{resource-group-name}/{resource-provider-namespace}/{resource-type}/{resource-name}/... + /// + /// The API version to use for the operation. + /// The content in request body + /// The headers that will be added to request. + /// The cancellation token. + /// + /// Thrown when a required parameter is null + /// + Task> BeginHttpUpdateMessagesAsyncWithFullResponse(HttpMethod method, string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + AzureOperationResponse GetResourceWithFullResponse(string resourceId, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + AzureOperationResponse DeleteResourceWithFullResponse(string resourceUri, string apiVersion, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + AzureOperationResponse PutResourceWithFullResponse(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + AzureOperationResponse PostResourceWithFullResponse(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); + + AzureOperationResponse PatchResourceWithFullResponse(string resourceUri, string apiVersion, Object content, IDictionary> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)); } }