public Maybe<User> GetUser(string id) { if (UserStorage.DefaultUser.Id == id) { return Maybe<User>.TryCreateSuccess(UserStorage.DefaultUser); } return Maybe<User>.CreateFailure(); }
public async Task StartObserveAsync(string url, Action <Maybe <IEnumerable <TradeOffer> > > callback) { bool isAuth = false; WebSocketReceiveResult result; if (webSocket.State == WebSocketState.Aborted) { await TryConnectToTradeAsync(url); } try { while (webSocket.State == WebSocketState.Open) { do { result = await webSocket.ReceiveAsync(buffer, CancellationToken.None); }while (!result.EndOfMessage); var message = parser.ParseMessage(buffer, result.Count); if (!isAuth && !message.IsAuthenticated) { callback?.Invoke(Maybe <IEnumerable <TradeOffer> > .CreateFailure( new AuthenticationException())); } isAuth = true; if (message.OffersId != null) { var response = await client.GetResponseAsync(urlInfo.SearchId, message.OffersId); var offers = parser.ParseResponse(response); callback?.Invoke(Maybe <IEnumerable <TradeOffer> > .TryCreateSuccess(offers)); } } } catch (Exception ex) { callback?.Invoke(Maybe <IEnumerable <TradeOffer> > .CreateFailure(ex)); } }
public async Task StartObserveAsync(string url, Action <Maybe <IEnumerable <TradeOffer> > > callback) { string id = string.Empty; WebSocketReceiveResult result; if (webSocket.State == WebSocketState.Aborted) { await TryConnectToTradeAsync(url); } try { while (webSocket.State == WebSocketState.Open) { do { result = await webSocket.ReceiveAsync(buffer, CancellationToken.None); }while (!result.EndOfMessage); if (id == string.Empty) { id = Encoding.UTF8.GetString(buffer.Array, buffer.Offset, result.Count); } var response = await tradeClient.PostRequestAsync(id, url); id = response.NewId; if (response.Count != 0) { var offers = await tradeParser.Parse(response.Data); callback?.Invoke(Maybe <IEnumerable <TradeOffer> > .TryCreateSuccess(offers)); } } } catch (Exception ex) { callback?.Invoke(Maybe <IEnumerable <TradeOffer> > .CreateFailure(ex)); } }