/// <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))); }
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); }
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); }); }
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)); } }
/// <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))); }