public Maybe<User> GetUser(string id) {
     if (UserStorage.DefaultUser.Id == id) {
         return Maybe<User>.TryCreateSuccess(UserStorage.DefaultUser);
     }
     
     return Maybe<User>.CreateFailure();
 }
Exemplo n.º 2
0
        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));
            }
        }
Exemplo n.º 3
0
        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));
            }
        }