Example #1
0
        /// <summary>
        /// <inheritdoc/>
        /// </summary>
        public async Task <RepositoryResponse> AddSolveAsync(Solve solve)
        {
            var client          = _httpClientFactory.CreateClient(HttpClientNames.UserAuthorized);
            var request         = new SolvePostRequest(solve);
            var httpRequestFunc = () => client.PostAsJsonAsync(Server.Endpoints.Solve.Post, request);
            var response        = await _httpResponseHandler.HandleAsync <SolvePostResponse>(httpRequestFunc).ConfigureAwait(false);

            if (response.IsSuccesfull)
            {
                solve.Id = response.Value.Id;
            }

            return(response);
        }
        /// <summary>
        /// <inheritdoc/>
        /// </summary>
        public async Task <RepositoryResponse> AddSessionAsync(Session session)
        {
            var client = _httpClientFactory.CreateClient(HttpClientNames.UserAuthorized);

            var request         = new SessionPostRequest(_userClient.Id, session);
            var httpRequestFunc = () => client.PostAsJsonAsync(Server.Endpoints.Session.Post, request, Json.ServerSerializerOptions);
            var response        = await _httpResponseHandler.HandleAsync <SessionPostResponse>(httpRequestFunc).ConfigureAwait(false);

            if (response.IsSuccesfull)
            {
                session.Id = response.Value.Id;
            }

            return(response);
        }
Example #3
0
        /// <summary>
        /// <inheritdoc/>
        /// </summary>
        public async Task <RepositoryResponse> RegisterAsync(RegisterRequest request)
        {
            using var client = _httpClientFactory.CreateClient();
            var enpoint  = Server.Endpoints.Auth.Register;
            var response = await _httpResponseHandler.HandleAsync(() => client.PostAsJsonAsync(enpoint, request));

            return(response);
        }
Example #4
0
        public async Task <RepositoryResponse <Room> > CreateRoomAsync(string eventName, int solvesAmount)
        {
            var client          = _httpClientFactory.CreateClient(HttpClientNames.UserAuthorized);
            var request         = new CreateRoomRequest(solvesAmount, eventName);
            var httpRequestFunc = () => client.PostAsJsonAsync(Server.Endpoints.Room.Post, request);
            var response        = await _httpResponseHandler.HandleAsync <CreateRoomResponse>(httpRequestFunc).ConfigureAwait(true);

            if (response.IsSuccesfull)
            {
                var users = response.Value !.Users.Select(user => new RoomUser {
                    Name = user
                }).ToList();
                var room = new Room(response.Value !.Id, response.Value.JoinCode, response.Value.Scrambles, users);
                AttachToNotifications(room.Id);
                return(new RepositoryResponse <Room>(response, room));
            }

            return(new RepositoryResponse <Room>(response, null !));
        }
Example #5
0
        /// <summary>
        /// <inheritdoc/>
        /// </summary>
        public async Task <RepositoryResponse <IReadOnlyList <Event> > > GetEventsAsync()
        {
            var client          = _httpClientFactory.CreateClient(HttpClientNames.UserAuthorized);
            var httpRequestFunc = () => client.GetAsync(Server.Endpoints.Event.Get);
            var response        = await _httpResponseHandler.HandleAsync <IReadOnlyList <Event> >(httpRequestFunc).ConfigureAwait(false);

            if (response.IsSuccesfull)
            {
                response !.Value.ForEach(e =>
                {
                    if (Server.Events.All.Contains(e.Name))
                    {
                        e.Name = Server.Events.GetEventName(e.Name);
                    }
                });
            }
            ;

            return(response);
        }
Example #6
0
        /// <summary>
        /// Get scramlbes from server.
        /// </summary>
        /// <param name="event">Event of which type will be scrambles.</param>
        /// <param name="scramblesAmount">Amount of scrambles.</param>
        public async Task <RepositoryResponse <IReadOnlyList <Scramble> > > GenerateScrambles(Event @event, int scramblesAmount)
        {
            if (Constants.Events.Predefined.All(e => e != @event.Name))
            {
                var empty = Enumerable.Repeat(new Scramble(), scramblesAmount).ToList();
                return(new RepositoryResponse <IReadOnlyList <Scramble> >(empty !));
            }

            using var httpClient = _httpClientFactory.CreateClient();
            var serverEventName = Server.Events.GetServerEventName(@event.Name);
            var endpoint        = Server.Endpoints.Scramble.Get(serverEventName, scramblesAmount);
            var httpRequestFunc = () => httpClient.GetAsync(endpoint);
            var response        = await _httpResponseHandler.HandleAsync <IReadOnlyList <Scramble> >(httpRequestFunc).ConfigureAwait(false);

            return(response);
        }