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