public void Load(IHttpServiceBuilder builder) { builder.ServicePath = "/blob"; builder.Get["/{id}"] = GetFileContentAsync; builder.Post["/{id}"] = GetFileContentAsync; }
public void Load(IHttpServiceBuilder builder) { builder.Get["/"] = GetSystemInfo; builder.Get["/Info"] = GetSystemInfo; builder.Post["/"] = GetSystemInfo; builder.Post["/Info"] = GetSystemInfo; }
/// <summary> /// Устанавливает необходимость наличия у пользователя всех заданных типов утверждений. /// </summary> /// <remarks> /// Если пользователь не идентифицирован, клиенту будет возвращен ответ <see cref="HttpResponse.Unauthorized"/>. /// Если пользователь не имеет всех утверждений заданных типов, клиенту будет возвращен ответ <see cref="HttpResponse.Forbidden"/>. /// </remarks> public static void RequiresAllClaims(this IHttpServiceBuilder target, IEnumerable <string> claimTypes) { target.OnBefore += request => Task.FromResult <object>((request.User == null || !request.User.IsAuthenticated) ? HttpResponse.Unauthorized : !request.User.HasAllClaims(claimTypes) ? HttpResponse.Forbidden : null); }
/// <summary> /// Устанавливает необходимость наличия у пользователя заданного типа утверждения с заданным значением. /// </summary> /// <remarks> /// Если пользователь не идентифицирован, клиенту будет возвращен ответ <see cref="HttpResponse.Unauthorized"/>. /// Если пользователь не имеет утверждения заданного типа с заданным значением, клиенту будет возвращен ответ <see cref="HttpResponse.Forbidden"/>. /// </remarks> public static void RequiresClaim(this IHttpServiceBuilder target, string claimType, string claimValue) { target.OnBefore += request => Task.FromResult <object>((request.User == null || !request.User.IsAuthenticated) ? HttpResponse.Unauthorized : !request.User.HasClaim(claimType, claimValue) ? HttpResponse.Forbidden : null); }
public void Load(IHttpServiceBuilder builder) { builder.ServicePath = "/Fake"; builder.Get["/SomeGet"] = request => Task.FromResult <object>((request.User != null) ? request.User.Name : null); builder.Post["/SomePost"] = request => Task.FromResult <object>((request.User != null) ? request.User.Name : null); builder.Post["/CreateUser"] = request => { _userManager.CreateUser(request.Form.UserName, request.Form.Password); return(Task.FromResult <object>(null)); }; builder.Post["/FindUser"] = request => { _userManager.FindUserByName(request.Form.UserName); return(Task.FromResult <object>(null)); }; builder.Post["/FindUserAsync"] = async request => await _userManager.FindUserByNameAsync(request.Form.UserName); }
/// <summary> /// Устанавливает необходимость наличия пользователя, который проходит заданную проверку. /// </summary> /// <remarks> /// Если пользователь не идентифицирован, клиенту будет возвращен ответ <see cref="HttpResponse.Unauthorized"/>. /// Если пользователь не проходит заданную проверку, клиенту будет возвращен ответ <see cref="HttpResponse.Forbidden"/>. /// </remarks> public static void RequiresValidUser(this IHttpServiceBuilder target, Func <IIdentity, bool> userMatch) { target.OnBefore += request => Task.FromResult <object>((request.User == null || !request.User.IsAuthenticated) ? HttpResponse.Unauthorized : !userMatch(request.User) ? HttpResponse.Forbidden : null); }
public void Load(IHttpServiceBuilder builder) { builder.ServicePath = "/Auth"; // Методы работы с учетной записью builder.Post["/GetCurrentUser"] = GetCurrentUser; builder.Post["/ChangePassword"] = ChangePassword; // Методы входа и выхода в систему builder.Post["/SignInInternal"] = SignInInternal; builder.Post["/SignInExternal"] = SignInExternal; builder.Get["/SignInExternalCallback"] = SignInExternalCallback; builder.Post["/SignOut"] = SignOut; // Методы для работы с внешними провайдерами аутентификации builder.Post["/GetExternalProviders"] = GetExternalProviders; builder.Post["/LinkExternalLogin"] = LinkExternalLogin; builder.Get["/LinkExternalLoginCallback"] = LinkExternalLoginCallback; builder.Post["/UnlinkExternalLogin"] = UnlinkExternalLogin; }
void IHttpService.Load(IHttpServiceBuilder builder) { builder.ServicePath = DocumentHttpServiceConstants.DefaultServicePath; if (CanGet) { builder.Get[$"/{DocumentType}/{{{DocumentHttpServiceConstants.DocumentIdKey}?}}"] = Get; } if (CanPost) { builder.Post[$"/{DocumentType}"] = Post; } if (CanDelete) { builder.Delete[$"/{DocumentType}/{{{DocumentHttpServiceConstants.DocumentIdKey}?}}"] = Delete; } Load(builder); }
/// <summary> /// Загружает настройки сервиса по работе с документами. /// </summary> protected abstract void Load(IHttpServiceBuilder builder);
/// <summary> /// Устанавливает необходимость аутентификации пользователя. /// </summary> /// <remarks> /// Если пользователь не идентифицирован, клиенту будет возвращен ответ <see cref="HttpResponse.Unauthorized"/>. /// </remarks> public static void RequiresAuthentication(this IHttpServiceBuilder target) { target.OnBefore += request => Task.FromResult <object>((request.User == null || !request.User.IsAuthenticated) ? HttpResponse.Unauthorized : null); }
public void Load(IHttpServiceBuilder builder) { builder.Get["/RestfulApi/UrlEncodedData/configuration/DownloadBinaryContent"] = DownloadFile; }
/// <summary> /// Устанавливает необходимость наличия у пользователя одного из заданных типов утверждений. /// </summary> /// <remarks> /// Если пользователь не идентифицирован, клиенту будет возвращен ответ <see cref="HttpResponse.Unauthorized"/>. /// Если пользователь не имеет ни одного утверждения из заданных типов, клиенту будет возвращен ответ <see cref="HttpResponse.Forbidden"/>. /// </remarks> public static void RequiresAnyClaims(this IHttpServiceBuilder target, params string[] claimTypes) { RequiresAnyClaims(target, (IEnumerable <string>)claimTypes); }
protected override void Load(IHttpServiceBuilder builder) { _serviceHandler.Load(builder); }
public void Load(IHttpServiceBuilder builder) { builder.ServicePath = "/SystemConfig/StandardApi/metadata"; builder.Post["/GetManagedMetadata"] = GetMetadataItem; }
/// <summary> /// Загружает модуль. /// </summary> /// <param name="builder">Регистратор обработчиков запросов.</param> public virtual void Load(IHttpServiceBuilder builder) { }
public void Load(IHttpServiceBuilder builder) { builder.ServicePath = "/SystemConfig/UrlEncodedData/reporting"; builder.Post["/GetPrintView"] = GetPrintView; }
private IEnumerable <NancyHttpServiceRoute> CreateNancyHttpServiceRoutes(NancyHttpGlobalHandler httpGlobalHandler, IHttpServiceBuilder httpService, Func <IHttpServiceBuilder, IHttpServiceRouteBuilder> httpServiceRoutesSelector) { var onBefore = httpService.OnBefore; var onAfter = httpService.OnAfter; var onError = httpService.OnError; var resultConverter = httpService.ResultConverter; var httpServiceRoutes = httpServiceRoutesSelector(httpService); Func <IIdentity> userIdentityProvider = _userIdentityProvider.GetUserIdentity; foreach (var route in httpServiceRoutes.Routes) { // Функция обработки запросов метода сервиса var onHandle = _httpRequestExcutorFactory.CreateExecutor(onBefore, route.Action, onAfter, onError, resultConverter); // Глобальная функция обработки запросов, вызывающая метод сервиса var onHandleGlobal = _httpRequestExcutorFactory.CreateExecutor(httpGlobalHandler.OnBefore, onHandle, httpGlobalHandler.OnAfter, httpGlobalHandler.OnError, httpGlobalHandler.ResultConverter); // Функция обработки метода сервиса в контексте выполнения Nancy Func <NancyContext, Task <object> > nancyAction = async nancyContext => { var start = DateTime.Now; var method = $"{nancyContext.Request.Method}::{nancyContext.Request.Path}"; try { var httpRequest = new NancyHttpRequest(nancyContext, userIdentityProvider, _jsonObjectSerializer); // Локализация ответа в зависимости от региональных параметров запроса. Thread.CurrentThread.CurrentCulture = httpRequest.Culture; Thread.CurrentThread.CurrentUICulture = httpRequest.Culture; var result = await onHandleGlobal(httpRequest); var nancyHttpResponse = CreateNancyHttpResponse(nancyContext, result); _performanceLog.Log(method, start); return(nancyHttpResponse); } catch (Exception exception) { _performanceLog.Log(method, start, exception); throw; } }; var nancyRoute = new NancyHttpServiceRoute { Path = route.Path, Action = nancyAction }; yield return(nancyRoute); } }