using GameData.Model; using GameModel; using GameModel.Contracts; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static System.Net.Mime.MediaTypeNames; namespace GameData.Repository { public class GameRepository : IGameRepository { readonly ILogger _log; private ApiClient _client; string UrlGameState => "items/gamestate"; string UrlGame => "items/game"; public GameRepository(ILogger log, ApiClient apiClient) { _log = log; _client = apiClient; } public GameState Load(Guid gameId) { throw new NotImplementedException(); } public async Task Save(GameState gameState) { var str = JsonConvert.SerializeObject(gameState, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto }); var gameStateDo = new GameStateDo(gameState.Id, gameState.GameId, gameState.GameName, str, gameState.Counter); var res = await _client.Post(gameStateDo,UrlGameState); var obj = JsonConvert.DeserializeObject(res.GameState, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto }); return obj; } public async Task Update(Game game) { await _client.Put(game, UrlGame); } public async Task Create(Game game) { return await _client.Post(game, UrlGame); } } }