示例#1
0
        public async Task <string> UpdateTemplateAsync(ApiTemplateDescriptor template, string versionId)
        {
            var server         = string.Empty;
            var requestId      = string.Empty;
            var stringResponse = string.Empty;
            var templateId     = template.Id.ToString();
            var methodUri      = new Uri(_templateUri, templateId);

            try
            {
                using (var content = new StringContent(JsonConvert.SerializeObject(template, ApiSerializerSettings.Default), Encoding.UTF8, ContentType.Json))
                {
                    using (var request = new HttpRequestMessage(HttpMethod.Put, methodUri))
                    {
                        request.Content = content;
                        request.Headers.IfMatch.Add(new EntityTagHeaderValue($"\"{versionId}\""));
                        using (var response = await _authorizedHttpClient.SendAsync(request))
                        {
                            (stringResponse, server, requestId) = await HandleResponse(response);

                            response.EnsureSuccessStatusCode();
                            var newVersion = response.Headers.ETag.Tag.Trim('"');
                            _logger.LogInformation(
                                "Updated template {id} got new version: {version} (old version {oldVersion})",
                                templateId,
                                newVersion,
                                versionId);

                            return(newVersion);
                        }
                    }
                }
            }
            catch (HttpRequestException ex)
            {
                _logger.LogError(
                    ex,
                    "Request {requestId} to server {server} error while updating template {id} with response: {response}",
                    requestId,
                    server,
                    templateId,
                    stringResponse);
                throw;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Template {id} update error", templateId);
                throw;
            }
        }
示例#2
0
        public async Task <string> CreateTemplateAsync(long id, ApiTemplateDescriptor template)
        {
            var methodUri      = new Uri(_templateUri, id.ToString());
            var server         = string.Empty;
            var requestId      = string.Empty;
            var stringResponse = string.Empty;

            try
            {
                using (var content = new StringContent(JsonConvert.SerializeObject(template, ApiSerializerSettings.Default), Encoding.UTF8, ContentType.Json))
                {
                    using (var response = await _authorizedHttpClient.PostAsync(methodUri, content))
                    {
                        (stringResponse, server, requestId) = await HandleResponse(response);

                        response.EnsureSuccessStatusCode();

                        var newVersion = response.Headers.ETag.Tag.Trim('"');
                        _logger.LogInformation("Created template {id} got version: {version}", id, newVersion);
                        return(newVersion);
                    }
                }
            }
            catch (HttpRequestException ex)
            {
                _logger.LogError(
                    ex,
                    "Request {requestId} to server {server} error while creating template {id} with response: {response}",
                    requestId,
                    server,
                    id,
                    stringResponse);
                throw;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Template {id} creating error", id);
                throw;
            }
        }