Beispiel #1
0
 /// <summary>
 /// Обновление мета-данных файла
 /// </summary>
 /// <param name="container">Имя контейнера</param>
 /// <param name="path">Путь к файлу в контейнере</param>
 /// <param name="customHeaders">Произвольные мета-данные через передачу заголовков с префиксом X-Container-Meta-.</param>
 /// <param name="corsHeaders">Дополнительные заголовки кэшировани и CORS</param>
 public static Task <UpdateFileResult> SetFileMetaAsync(this SelectelClient client,
                                                        string container,
                                                        string path,
                                                        IDictionary <string, object> customHeaders = null,
                                                        CorsHeaders corsHeaders = null)
 {
     return(client.ExecuteAsync(new UpdateFileMetaRequest(container, path, customHeaders, corsHeaders)));
 }
Beispiel #2
0
 public UpdateFileMetaRequest(
     string containerName,
     string fileName,
     IDictionary <string, object> customHeaders = null,
     CorsHeaders corsHeaders = null)
     : base(containerName, fileName)
 {
     SetCustomHeaders(customHeaders);
     SetCorsHeaders(corsHeaders);
 }
 /// <param name="containerName">Имя контейнера должно быть меньше 256 символов и не содержать завершающего слеша '/' в конце.</param>
 /// <param name="customHeaders">Произвольные мета-данные через передачу заголовков с префиксом X-Container-Meta-.</param>
 /// <param name="type">X-Container-Meta-Type: Тип контейнера (public, private, gallery)</param>
 /// <param name="corsHeaders"></param>
 public UpdateContainerMetaRequest(
     string containerName,
     ContainerType type = ContainerType.Private,
     IDictionary <string, object> customHeaders = null,
     CorsHeaders corsHeaders = null)
     : base(containerName)
 {
     customHeaders?.Add(HeaderKeys.XContainerMetaType, type.ToString().ToLower());
     SetCustomHeaders(customHeaders);
     SetCorsHeaders(corsHeaders);
 }
Beispiel #4
0
        protected void SetCorsHeaders(CorsHeaders cors = null)
        {
            if (cors == null)
            {
                return;
            }

            foreach (var header in cors.GetHeaders())
            {
                TryAddHeader(header.Key, header.Value);
            }
        }
        public static void Handle(IApplicationBuilder AApplication)
        {
            AApplication.Run(async AHttpContext =>
            {
                var LExceptionHandlerPathFeature = AHttpContext.Features.Get <IExceptionHandlerPathFeature>();
                var LErrorException = LExceptionHandlerPathFeature.Error;
                AHttpContext.Response.ContentType = "application/json";

                string LResult;
                switch (LErrorException)
                {
                case ValidationException LException:
                    {
                        var LAppError = new ApplicationError(LException.ErrorCode, LException.Message, LException.ValidationResult);
                        LResult       = JsonConvert.SerializeObject(LAppError);
                        AHttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                        break;
                    }

                case BusinessException LException:
                    {
                        var LAppError = new ApplicationError(LException.ErrorCode, LException.Message);
                        LResult       = JsonConvert.SerializeObject(LAppError);
                        AHttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                        break;
                    }

                default:
                    {
                        var LAppError = new ApplicationError(nameof(ErrorCodes.ERROR_UNEXPECTED), ErrorCodes.ERROR_UNEXPECTED);
                        LResult       = JsonConvert.SerializeObject(LAppError);
                        AHttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                        break;
                    }
                }

                CorsHeaders.Ensure(AHttpContext);
                await AHttpContext.Response.WriteAsync(LResult);
            });
        }
Beispiel #6
0
        public async Task WhenCorsPreflightRequestIsSent_ExpectedResponseIsReturned(string origin, string method, HttpStatusCode expectedStatus, CorsHeaders corsHeaders)
        {
            var response = await mTweekApi.GetCorsPreflightResponse(origin, method);

            Assert.Equal(expectedStatus, response.StatusCode);
            if (corsHeaders == CorsHeaders.Present)
            {
                Assert.Contains(origin, response.Headers.GetValues("Access-Control-Allow-Origin"));
                Assert.Contains("Access-Control-Max-Age", response.Headers.Select(pair => pair.Key));
            }
        }
Beispiel #7
0
 /// <summary>
 /// Обновление мета-данных контейнера
 /// </summary>
 /// <param name="container">Имя контейнера</param>
 /// <param name="type">X-Container-Meta-Type: Тип контейнера (public, private, gallery)</param>
 /// <param name="customHeaders">Произвольные мета-данные через передачу заголовков с префиксом X-Container-Meta-.</param>
 /// <param name="corsHeaders">Дополнительные заголовки кэшировани и CORS</param>
 public static Task <UpdateContainerResult> SetContainerMetaAsync(this SelectelClient client, string container,
                                                                  ContainerType type      = ContainerType.Private, Dictionary <string, object> customHeaders = null,
                                                                  CorsHeaders corsHeaders = null)
 {
     return(client.ExecuteAsync(new UpdateContainerMetaRequest(container, type, customHeaders, corsHeaders)));
 }