示例#1
0
        public override Task Install(RestClient rc)
        {
            var extensibleRequest = rc.extensibleRequest;

            rc.extensibleRequest = async(httpRequestMessage, restRequestConfig) =>
            {
                if (!enabled)
                {
                    return(await extensibleRequest(httpRequestMessage, restRequestConfig));
                }

                BeforeRequest?.Invoke(this, httpRequestMessage);
                try
                {
                    var httpResponseMessage = await extensibleRequest(httpRequestMessage, restRequestConfig);

                    RequestSuccess?.Invoke(this, new HttpMessages
                    {
                        httpResponseMessage = httpResponseMessage,
                        httpRequestMessage  = httpRequestMessage
                    });
                    return(httpResponseMessage);
                }
                catch (RestException re)
                {
                    RequestError?.Invoke(this, re);
                    throw;
                }
            };
            return(Task.CompletedTask);
        }
示例#2
0
        public async Task MarkNameSelectionComplete()
        {
            var response = await GameClient.MarkTutorialComplete(new TutorialState[] { TutorialState.NameSelection }, LegalCommsCheck, false);

            if (!response.Success)
            {
                RequestError?.Invoke(this, "Error completing NameSelection tutorial");
            }
        }
示例#3
0
        public VlcApi(LoginCredentials cred)
        {
            _cred    = cred;
            _baseUrl = "http://" + _cred.Hostname + ":" + _cred.Port + "/requests/";

            _statusRequestWorker.DoWork += (sender, args) =>
            {
                _statusUpdater.Stop();

                while (_statusRequestQueue.Count >= 1)
                {
                    if (_statusRequestWorker.CancellationPending)
                    {
                        return;
                    }

                    try
                    {
                        Status status = GetStatusSync(_statusRequestQueue[0]);
                        if (_statusRequestQueue[0] == "")
                        {
                            StatusChanged?.Invoke(this, status);
                        }
                        _statusRequestQueue.RemoveAt(0);
                    }
                    catch (ApiRespondException e)
                    {
                        RequestError?.Invoke(this, e);
                        _statusRequestQueue.Clear();
                        return;
                    }
                }

                _statusUpdater.Start();
            };

            _statusRequestQueue.CollectionChanged += (sender, args) =>
            {
                if (!_statusRequestWorker.IsBusy)
                {
                    _statusRequestWorker.RunWorkerAsync();
                }
                StatusRequestCountChanged?.Invoke(sender, _statusRequestQueue.Count);
            };

            _statusUpdater.Elapsed += (sender, args) =>
            {
                RequestStatus();
            };

            _statusUpdater.Start();
        }
示例#4
0
 protected virtual void OnRequestError(HyperErrorEventArgs e)
 {
     RequestError?.Invoke(this, e);
 }
示例#5
0
        /// <summary>
        ///     Receives messages from server and handles them
        /// </summary>
        /// <param name="state"></param>
        private void ReceiveUpdatesLoop(SocketState state)
        {
            if (state.ErrorOccured)
            {
                // inform the view
                Error?.Invoke(state.ErrorMessage, "Error In Event Loop");
                Disconnect();
                return;
            }

            string incomingMessages = state.GetData();

            string[] data = Regex.Split(incomingMessages, @"(?<=[\n])");

            foreach (string message in data.Where(message => message.Length != 0))
            {
                //Last Step of handshake if message is the id
                if (int.TryParse(message, out int i))
                {
                    IDReceive?.Invoke(i);
                    continue;
                }

                // The regex splitter will include the last string even if it doesn't end with a '\n',
                // So we need to ignore it if this happens.
                if (message.Last() != '\n' || message[0] != '{')
                {
                    continue;
                }

                Console.WriteLine("Received:" + message);

                //Parse message as json object
                var x = JObject.Parse(message);
                switch (x["messageType"]?.ToString())
                {
                case "cellUpdated":
                {
                    if (EditCell is null)
                    {
                        continue;
                    }
                    var updated = JsonConvert.DeserializeObject <CellUpdated>(message);
                    EditCell.Invoke(updated);
                    break;
                }

                case "cellSelected":
                {
                    if (SelectCell is null)
                    {
                        continue;
                    }
                    var selected = JsonConvert.DeserializeObject <CellSelected>(message);
                    SelectCell.Invoke(selected);
                    break;
                }

                case "serverError":
                {
                    if (ServerShutdown is null)
                    {
                        continue;
                    }
                    var error = JsonConvert.DeserializeObject <ServerShutdownError>(message);
                    ServerShutdown.Invoke(error);
                    break;
                }

                case "requestError":
                {
                    if (RequestError is null)
                    {
                        continue;
                    }
                    var error = JsonConvert.DeserializeObject <RequestError>(message);
                    RequestError.Invoke(error);
                    break;
                }

                case "disconnected":
                {
                    var d = JsonConvert.DeserializeObject <Disconnected>(message);
                    ClientDisconnected?.Invoke(d);
                    break;
                }
                }

                state.RemoveData(0, message.Length);
            }

            Networking.GetData(state);
        }
示例#6
0
 internal void OnRequestError(RequestContext context)
 {
     RequestError?.Invoke(this, new GraphQLServerEventArgs(context));
 }
示例#7
0
 protected Task <HttpResponse> OnRequestError(HttpRequest request, Exception exception)
 {
     return(RequestError?.Invoke(request, exception));
 }
示例#8
0
 private void OnRequestError(RequestErrorEventArgs e)
 {
     RequestError?.Invoke(this, e);
 }