public void Load(IHttpServiceBuilder builder)
        {
            builder.ServicePath = "/blob";

            builder.Get["/{id}"]  = GetFileContentAsync;
            builder.Post["/{id}"] = GetFileContentAsync;
        }
示例#2
0
 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;
        }
示例#8
0
        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);
        }
示例#9
0
 /// <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);
 }
示例#13
0
 protected override void Load(IHttpServiceBuilder builder)
 {
     _serviceHandler.Load(builder);
 }
        public void Load(IHttpServiceBuilder builder)
        {
            builder.ServicePath = "/SystemConfig/StandardApi/metadata";

            builder.Post["/GetManagedMetadata"] = GetMetadataItem;
        }
示例#15
0
 /// <summary>
 /// Загружает модуль.
 /// </summary>
 /// <param name="builder">Регистратор обработчиков запросов.</param>
 public virtual void Load(IHttpServiceBuilder builder)
 {
 }
示例#16
0
        public void Load(IHttpServiceBuilder builder)
        {
            builder.ServicePath = "/SystemConfig/UrlEncodedData/reporting";

            builder.Post["/GetPrintView"] = GetPrintView;
        }
示例#17
0
        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);
            }
        }