Пример #1
0
        public WardenSpawnModule(ICommandDispatcher commandDispatcher,
                                 IValidatorResolver validatorResolver,
                                 IIdentityProvider identityProvider)
            : base(commandDispatcher, validatorResolver, identityProvider,
                   modulePath: "organizations/{organizationId}/wardens/{wardenId}/manager")
        {
            Post("start", async args => await For <StartWarden>()
                 .OnSuccessAccepted()
                 .DispatchAsync());

            Post("pause", async args => await For <PauseWarden>()
                 .OnSuccessAccepted()
                 .DispatchAsync());

            Post("stop", async args => await For <StopWarden>()
                 .OnSuccessAccepted()
                 .DispatchAsync());

            Post("ping", async args => await For <PingWarden>()
                 .OnSuccessAccepted()
                 .DispatchAsync());

            Delete("", async args => await For <KillWarden>()
                   .OnSuccessAccepted()
                   .DispatchAsync());
        }
Пример #2
0
        public ApiKeysModule(ICommandDispatcher commandDispatcher,
                             IIdentityProvider identityProvider,
                             IValidatorResolver validatorResolver,
                             IApiKeyStorage apiKeyStorage)
            : base(commandDispatcher, validatorResolver, identityProvider, modulePath: "api-keys")
        {
            Get("", async args => await FetchCollection <BrowseApiKeys, ApiKey>
                    (async x => await apiKeyStorage.BrowseAsync(x))
                .MapTo(x => new
            {
                Name = x.Name,
                Key  = x.Key
            })
                .HandleAsync());

            Get("{name}", async args => await Fetch <GetApiKey, ApiKey>
                    (async x => await apiKeyStorage.GetAsync(x.UserId, x.Name))
                .MapTo(x => new
            {
                Name = x.Name,
                Key  = x.Key
            })
                .HandleAsync());

            Post("", async args => await For <RequestNewApiKey>()
                 .OnSuccessAccepted("api-keys")
                 .DispatchAsync());

            Delete("{name}", async args => await For <DeleteApiKey>()
                   .OnSuccess(HttpStatusCode.NoContent)
                   .DispatchAsync());
        }
 public DevelopmentModule(ICommandDispatcher commandDispatcher,
                          IValidatorResolver validatorResolver,
                          IOperationStorage operationStorage)
     : base(commandDispatcher, validatorResolver, modulePath: "development")
 {
     Get("operation", args =>
     {
         RequestCounter++;
         if (RequestCounter <= 2)
         {
             return(HttpStatusCode.NotFound);
         }
         if (RequestCounter == 3)
         {
             return(HttpStatusCode.Unauthorized);
         }
         if (RequestCounter == 8)
         {
             RequestCounter = 0;
         }
         return(new Operation
         {
             Id = Guid.NewGuid(),
             RequestId = Guid.NewGuid(),
             CreatedAt = DateTime.UtcNow,
             State = "completed"
         });
     });
 }
        public RemarkCommentModule(ICommandDispatcher commandDispatcher,
                                   IRemarkStorage remarkStorage,
                                   IValidatorResolver validatorResolver)
            : base(commandDispatcher, validatorResolver, modulePath: "remarks/{remarkId}/comments")
        {
            Post("", async args => await For <AddCommentToRemark>()
                 .SetResourceId(x => x.CommentId)
                 .OnSuccessAccepted(x => $"remarks/{x.RemarkId}/comments/" + "{0}")
                 .DispatchAsync());

            Put("{commentId}", async args => await For <EditRemarkComment>()
                .OnSuccessAccepted()
                .DispatchAsync());

            Delete("{commentId}", async args => await For <DeleteRemarkComment>()
                   .OnSuccessAccepted()
                   .DispatchAsync());

            Put("{commentId}/votes", async args => await For <SubmitRemarkCommentVote>()
                .Set(x => x.CreatedAt = DateTime.UtcNow)
                .OnSuccessAccepted()
                .DispatchAsync());

            Delete("{commentId}/votes", async args => await For <DeleteRemarkCommentVote>()
                   .OnSuccessAccepted()
                   .DispatchAsync());
        }
Пример #5
0
        public StatisticsModule(ICommandDispatcher commandDispatcher,
                                IValidatorResolver validatorResolver,
                                IStatisticsStorage statisticsStorage)
            : base(commandDispatcher, validatorResolver, modulePath: "statistics")
        {
            Get("remarks", async args => await FetchCollection <BrowseRemarkStatistics, RemarkStatistics>
                    (async x => await statisticsStorage.BrowseRemarkStatisticsAsync(x))
                .HandleAsync());

            Get("remarks/{id}", async args => await Fetch <GetRemarkStatistics, RemarkStatistics>
                    (async x => await statisticsStorage.GetRemarkStatisticsAsync(x))
                .HandleAsync());

            Get("remarks/general", async args => await Fetch <GetRemarksCountStatistics, RemarksCountStatistics>
                    (async x => await statisticsStorage.GetRemarksCountStatisticsAsync(x))
                .HandleAsync());

            Get("categories", async args => await FetchCollection <BrowseCategoryStatistics, CategoryStatistics>
                    (async x => await statisticsStorage.BrowseCategoryStatisticsAsync(x))
                .HandleAsync());

            Get("tags", async args => await FetchCollection <BrowseTagStatistics, TagStatistics>
                    (async x => await statisticsStorage.BrowseTagStatisticsAsync(x))
                .HandleAsync());

            Get("users", async args => await FetchCollection <BrowseUserStatistics, UserStatistics>
                    (async x => await statisticsStorage.BrowseUserStatisticsAsync(x))
                .HandleAsync());

            Get("users/{id}", async args => await Fetch <GetUserStatistics, UserStatistics>
                    (async x => await statisticsStorage.GetUserStatisticsAsync(x))
                .HandleAsync());
        }
Пример #6
0
        public OrganizationsModule(ICommandDispatcher commandDispatcher,
                                   IValidatorResolver validatorResolver,
                                   IIdentityProvider identityProvider,
                                   IOrganizationStorage organizationStorage)
            : base(commandDispatcher, validatorResolver, identityProvider, modulePath: "organizations")
        {
            Get("", async args => await FetchCollection <BrowseOrganizations, Organization>
                    (async x => await organizationStorage.BrowseAsync(x))
                .HandleAsync());

            Get("{id}", async args => await Fetch <GetOrganization, Organization>
                    (async x => await organizationStorage.GetAsync(x.UserId, x.Id))
                .HandleAsync());

            Post("", async args => await For <RequestNewOrganization>()
                 .SetResourceId(x => x.OrganizationId)
                 .OnSuccessAccepted("organizations/{0}")
                 .DispatchAsync());

            Put("{id}", async args => await For <UpdateOrganization>()
                .OnSuccess(HttpStatusCode.NoContent)
                .DispatchAsync());

            Delete("{id}", async args => await For <DeleteOrganization>()
                   .OnSuccess(HttpStatusCode.NoContent)
                   .DispatchAsync());
        }
Пример #7
0
        public OrganizationModule(ICommandDispatcher commandDispatcher,
                                  IOrganizationStorage organizationStorage,
                                  IValidatorResolver validatorResolver)
            : base(commandDispatcher, validatorResolver, modulePath: "organizations")
        {
            Get("{id}", async args => await Fetch <GetOrganization, Organization>
                    (async x => await organizationStorage.GetAsync(x.Id)).HandleAsync());

            Get("", async args => await FetchCollection <BrowseOrganizations, Organization>
                    (async x => await organizationStorage.BrowseAsync(x))
                .MapTo(x => new BasicOrganization
            {
                Id           = x.Id,
                Name         = x.Name,
                Codename     = x.Codename,
                IsPublic     = x.IsPublic,
                State        = x.State,
                CreatedAt    = x.CreatedAt,
                MembersCount = x.Members?.Count ?? 0,
                GroupsCount  = x.Groups?.Count ?? 0
            }).HandleAsync());

            Post("", async args => await For <CreateOrganization>()
                 .SetResourceId(x => x.OrganizationId)
                 .OnSuccessAccepted("organizations/{0}")
                 .DispatchAsync());

            Post("{organizationId}/members", async args => await ForModerator <AddMemberToOrganization>()
                 .OnSuccessAccepted("organizations/{0}")
                 .DispatchAsync());
        }
Пример #8
0
 public StoreController(ILogger <StoreController> logger, IStore store, IValidatorResolver resolver, IConfiguration configuration)
 {
     _logger            = logger;
     this.store         = store;
     this.resolver      = resolver;
     this.configuration = configuration;
 }
Пример #9
0
        public UserModule(ICommandDispatcher commandDispatcher,
                          IUserStorage userStorage,
                          IValidatorResolver validatorResolver,
                          AppSettings settings)
            : base(commandDispatcher, validatorResolver, modulePath: "users")
        {
            Get("", async args => await FetchCollection <BrowseUsers, UserInfo>
                    (async x => await userStorage.BrowseAsync(x)).HandleAsync());

            Get("{name}", async args => await Fetch <GetUserByName, UserInfo>
                    (async x => await userStorage.GetInfoByNameAsync(x.Name)).HandleAsync());

            Get("{id}/avatar", args =>
            {
                var query = BindRequest <GetAvatar>();
                if (query.Id.Empty())
                {
                    return(HttpStatusCode.NotFound);
                }

                return(Response.AsRedirect(string.Format(settings.AvatarUrl, query.Id)));
            });

            Put("{lockUserId}/lock", async args => await ForModerator <LockAccount>()
                .OnSuccessAccepted()
                .DispatchAsync());

            Put("{unlockUserId}/unlock", async args => await ForModerator <UnlockAccount>()
                .OnSuccessAccepted()
                .DispatchAsync());

            Post("", async(ctx, p) => await ForAdministrator <SignUp>()
                 .OnSuccessAccepted()
                 .DispatchAsync());
        }
Пример #10
0
 public HomeModule(ICommandDispatcher commandDispatcher,
                   IValidatorResolver validatorResolver,
                   IIdentityProvider identityProvider)
     : base(commandDispatcher, validatorResolver, identityProvider)
 {
     Get("", args => "Welcome to the Warden API!");
 }
Пример #11
0
 public UserService(DataContext dataContext, IMapper mapper,
                    IValidatorResolver validatorResolver, ILogger <UserService> logger)
 {
     _dataContext       = dataContext;
     _validatorResolver = validatorResolver;
     _logger            = logger;
 }
Пример #12
0
        public WardensModule(ICommandDispatcher commandDispatcher,
                             IValidatorResolver validatorResolver,
                             IIdentityProvider identityProvider,
                             IOrganizationStorage organizationStorage)
            : base(commandDispatcher, validatorResolver, identityProvider,
                   modulePath: "organizations/{organizationId}/wardens")
        {
            Get("{wardenId}", async args => await Fetch <GetWarden, Warden.Services.Storage.Models.Organizations.Warden>
                    (async x => await organizationStorage.GetWardenAsync(x.UserId, x.OrganizationId, x.WardenId))
                .HandleAsync());

            Post("", async args => await For <RequestNewWarden>()
                 .SetResourceId(x => x.WardenId)
                 .OnSuccessAccepted($"organizations/{args.organizationId}/wardens/" + "{0}")
                 .DispatchAsync());

            Post("external", async args => await For <CreateExternalWarden>()
                 .SetResourceId(x => x.WardenId)
                 .OnSuccessAccepted($"organizations/{args.organizationId}/wardens/" + "{0}")
                 .DispatchAsync());

            Delete("{wardenId}", async args => await For <DeleteWarden>()
                   .OnSuccessAccepted()
                   .DispatchAsync());
        }
Пример #13
0
 protected ModuleBase(ICommandDispatcher commandDispatcher,
                      IValidatorResolver validatorResolver,
                      string modulePath = "")
     : base(modulePath)
 {
     CommandDispatcher  = commandDispatcher;
     _validatorResolver = validatorResolver;
 }
Пример #14
0
 public RemarkReportModule(ICommandDispatcher commandDispatcher,
                           IValidatorResolver validatorResolver)
     : base(commandDispatcher, validatorResolver, modulePath: "remarks/{remarkId}/reports")
 {
     Post("", async args => await For <ReportRemark>()
          .OnSuccessAccepted()
          .DispatchAsync());
 }
Пример #15
0
 public OperationModule(ICommandDispatcher commandDispatcher,
                        IValidatorResolver validatorResolver,
                        IOperationProvider operationProvider)
     : base(commandDispatcher, validatorResolver, modulePath: "operations")
 {
     Get("{requestId}", args => Fetch <GetOperation, Operation>
             (async x => await operationProvider.GetAsync(x.RequestId)).HandleAsync());
 }
Пример #16
0
 public CommandsGateway(
     ICommandHandlerResolver commandHandlerResolver,
     Func <IDisposable> scopeFactory,
     IValidatorResolver validatorResolver)
 {
     _commandHandlerResolver = commandHandlerResolver;
     _scopeFactory           = scopeFactory;
     _validationFacade       = new ValidationFacade(validatorResolver);
 }
Пример #17
0
 public SupportModule(ICommandDispatcher commandDispatcher,
                      IValidatorResolver validatorResolver)
     : base(commandDispatcher, validatorResolver, modulePath: "support")
 {
     Post("mailing", async args => await For <SendSupportEmailMessage>()
          .Set(x => x.Title = $"Support message from: {x.Email}")
          .OnSuccessAccepted()
          .DispatchAsync());
 }
Пример #18
0
 public WardenChecksModule(ICommandDispatcher commandDispatcher,
                           IValidatorResolver validatorResolver,
                           IIdentityProvider identityProvider)
     : base(commandDispatcher, validatorResolver, identityProvider,
            modulePath: "organizations/{organizationId}/wardens/{wardenId}/checks")
 {
     Post("", async args => await For <RequestProcessWardenCheckResult>()
          .SetResourceId(x => x.ResultId)
          .OnSuccessAccepted($"organizations/{args.organizationId}/wardens/{args.wardenId}/checks/" + "{0}")
          .DispatchAsync());
 }
Пример #19
0
 public UserApiController(ILogger <UserApiController> logger,
                          IUserService userService,
                          IValidatorResolver validatorResolver,
                          IMapper mapper
                          )
 {
     _logger            = logger;
     _userService       = userService;
     _validatorResolver = validatorResolver;
     _mapper            = mapper;
 }
Пример #20
0
        public UserModule(ICommandDispatcher commandDispatcher,
                          IValidatorResolver validatorResolver,
                          IIdentityProvider identityProvider)
            : base(commandDispatcher, validatorResolver, identityProvider, modulePath: "users")
        {
            Put("assign", async args => await For <AssignUserToOrganization>()
                .DispatchAsync());

            Put("unassign", async args => await For <UnassignUserFromOrganization>()
                .DispatchAsync());
        }
Пример #21
0
        public AccountModule(ICommandDispatcher commandDispatcher,
                             IValidatorResolver validatorResolver,
                             IUserStorage userStorage,
                             INotificationSettingsStorage notificationSettingsStorage)
            : base(commandDispatcher, validatorResolver)
        {
            Get("account", async args => await Fetch <GetAccount, User>
                    (async x => await userStorage.GetAsync(x.UserId)).HandleAsync());

            Get("account/settings/notifications", async args => await Fetch <GetNotificationSettings, UserNotificationSettings>
                    (async x => await notificationSettingsStorage.GetAsync(x.UserId))
                .HandleAsync());

            Get("account/names/{name}/available", async args => await Fetch <GetNameAvailability, AvailableResource>
                    (async x => await userStorage.IsNameAvailableAsync(x.Name)).HandleAsync());

            Put("account/name", async args => await For <ChangeUsername>()
                .OnSuccessAccepted("account")
                .DispatchAsync());

            Put("account/settings/notifications", async args => await For <UpdateUserNotificationSettings>()
                .OnSuccessAccepted("account")
                .DispatchAsync());

            Post("sign-up", async(ctx, p) => await For <SignUp>()
                 .Set(x =>
            {
                x.Role  = string.Empty;
                x.State = string.Empty;
            })
                 .OnSuccessAccepted("account")
                 .DispatchAsync());

            Post("account/avatar", async args => await For <UploadAvatar>()
                 .OnSuccessAccepted("account")
                 .DispatchAsync());

            Post("account/activate", async args => await For <ActivateAccount>()
                 .OnSuccessAccepted("account")
                 .DispatchAsync());

            Delete("account/avatar", async args => await For <RemoveAvatar>()
                   .OnSuccessAccepted()
                   .DispatchAsync());

            Put("account/password", async args => await For <ChangePassword>()
                .OnSuccessAccepted("account")
                .DispatchAsync());

            Delete("account", async args => await For <DeleteAccount>()
                   .OnSuccessAccepted()
                   .DispatchAsync());
        }
Пример #22
0
 public CommandRequestHandler(ICommandDispatcher dispatcher, T command,
                              IResponseFormatter responseFormatter,
                              IValidatorResolver validatorResolver,
                              Negotiator negotiator,
                              Url url, string culture)
 {
     _dispatcher        = dispatcher;
     _command           = command;
     _command.Request   = Messages.Commands.Request.Create <T>(Guid.NewGuid(), url.Path, culture);
     _responseFormatter = responseFormatter;
     _validatorResolver = validatorResolver;
     _negotiator        = negotiator;
 }
Пример #23
0
 public CommandRequestHandler(ICommandDispatcher dispatcher, T command,
                              IResponseFormatter responseFormatter,
                              IValidatorResolver validatorResolver,
                              Negotiator negotiator,
                              Messages.Commands.Request request)
 {
     _dispatcher        = dispatcher;
     _command           = command;
     _command.Request   = request;
     _responseFormatter = responseFormatter;
     _validatorResolver = validatorResolver;
     _negotiator        = negotiator;
 }
 public ProductApiController(ILogger <ProductApiController> logger,
                             IUserService userService,
                             IProductService productService,
                             IValidatorResolver validatorResolver,
                             IMapper mapper
                             )
 {
     _logger            = logger;
     _userService       = userService;
     _productService    = productService;
     _validatorResolver = validatorResolver;
     _mapper            = mapper;
 }
        public UserFavoriteModule(ICommandDispatcher commandDispatcher,
                                  IValidatorResolver validatorResolver,
                                  IUserStorage userStorage)
            : base(commandDispatcher, validatorResolver, "account/favorites")
        {
            Put("remarks/{remarkId}", async args => await For <AddFavoriteRemark>()
                .OnSuccessAccepted()
                .DispatchAsync());

            Delete("remarks/{remarkId}", async args => await For <DeleteFavoriteRemark>()
                   .OnSuccessAccepted()
                   .DispatchAsync());
        }
Пример #26
0
        public ResetPasswordModule(ICommandDispatcher commandDispatcher,
                                   IValidatorResolver validatorResolver, AppSettings appSettings)
            : base(commandDispatcher, validatorResolver, "reset-password")
        {
            Post("", async args => await For <ResetPassword>()
                 .Set(x => x.Endpoint = appSettings.ResetPasswordUrl)
                 .OnSuccessAccepted()
                 .DispatchAsync());

            Post("set-new", async args => await For <SetNewPassword>()
                 .OnSuccessAccepted()
                 .DispatchAsync());
        }
        public RemarkActionModule(ICommandDispatcher commandDispatcher,
                                  IRemarkStorage remarkStorage,
                                  IValidatorResolver validatorResolver)
            : base(commandDispatcher, validatorResolver, modulePath: "remarks/{remarkId}/actions")
        {
            Post("", async args => await For <TakeRemarkAction>()
                 .OnSuccessAccepted()
                 .DispatchAsync());

            Delete("", async args => await For <CancelRemarkAction>()
                   .OnSuccessAccepted()
                   .DispatchAsync());
        }
Пример #28
0
 public ItemApiController(ILogger <ItemApiController> logger,
                          IStringLocalizer <ItemApiController> localizer,
                          IUserService userService,
                          IUserItemService userItemService,
                          IValidatorResolver validatorResolver,
                          IMapper mapper
                          )
 {
     _logger            = logger;
     _userService       = userService;
     _userItemService   = userItemService;
     _validatorResolver = validatorResolver;
     _mapper            = mapper;
     _localizer         = localizer;
 }
Пример #29
0
 public UserApiController(ILogger <UserApiController> logger,
                          IStringLocalizer <UserApiController> localizer,
                          IUserService userService,
                          IShopExternalService shopExternalService,
                          IValidatorResolver validatorResolver,
                          IMapper mapper
                          )
 {
     _logger              = logger;
     _userService         = userService;
     _shopExternalService = shopExternalService;
     _validatorResolver   = validatorResolver;
     _mapper              = mapper;
     _localizer           = localizer;
 }
Пример #30
0
        public AuthenticationModule(ICommandDispatcher commandDispatcher,
                                    IValidatorResolver validatorResolver,
                                    IIdentityProvider identityProvider,
                                    IUserStorage userStorage,
                                    IOperationStorage operationStorage,
                                    IJwtTokenHandler jwtTokenHandler,
                                    JwtTokenSettings jwtTokenSettings)
            : base(commandDispatcher, validatorResolver, identityProvider, modulePath: "")
        {
            Post("sign-in", async(ctx, p) => await For <SignIn>()
                 .Set(c =>
            {
                c.IpAddress = Request.UserHostAddress;
                c.UserAgent = Request.Headers.UserAgent;
            })
                 .SetResourceId(c => c.SessionId)
                 .OnSuccess(async c =>
            {
                var operation = await operationStorage.GetUpdatedAsync(c.Request.Id);
                if (operation.HasNoValue || !operation.Value.Success)
                {
                    return(HttpStatusCode.Unauthorized);
                }

                var session = await userStorage.GetSessionAsync(c.SessionId);
                if (session.HasNoValue)
                {
                    return(HttpStatusCode.Unauthorized);
                }

                return(new
                {
                    token = jwtTokenHandler.Create(session.Value.UserId),
                    sessionId = session.Value.Id,
                    sessionKey = session.Value.Key,
                    expiry = DateTime.UtcNow.AddDays(jwtTokenSettings.ExpiryDays).ToTimestamp()
                });
            })
                 .DispatchAsync());

            Post("sign-up", async args => await For <SignUp>()
                 .OnSuccessAccepted("account")
                 .DispatchAsync());

            Post("sign-out", async args => await For <SignOut>()
                 .OnSuccess(HttpStatusCode.NoContent)
                 .DispatchAsync());
        }