コード例 #1
0
        protected override void OnObserveHttpModifyRequest(GeckoObserveHttpModifyRequestEventArgs e)
        {
            Debug.Print(e.Uri.AbsoluteUri);
            var method = e.Channel.RequestMethod;

            if (method == "GET")
            {
                if (e.Uri.Segments.Length < 2 || e.Uri.Segments[1] != "api/")
                {
                    return;
                }
                var arg3 = e.Uri.Segments.Length > 3 ? e.Uri.Segments[3] : string.Empty;
                Logger.WriteEvent($"Get {e.Uri.Segments[2]} {e.Uri.Query} {arg3}");
                try
                {
                    switch (e.Uri.Segments[2])
                    {
                    case "GetUsers":
                        new GetUsers();
                        break;

                    case "GetTasks":
                        new GetTasks(e.Uri.Query);
                        break;

                    case "GetParatextProjects":
                        ForParatext.GetParatextProjects();
                        break;

                    case "GetDefaultUserHotKeys":
                        new GetDefaultUserHotKeys();
                        break;

                    case "GetZttProjectsCount":
                        new GetZttProjectsCount();
                        break;
                    }
                }
                catch (Exception err)
                {
                    Logger.WriteEvent($"{err.Message} in {e.Uri.Segments[2]}");
                }
            }
            else if (method == "PUT")
            {
                if (e.Uri.Segments.Length < 2 || e.Uri.Segments[1] != "api/")
                {
                    return;
                }
                Logger.WriteEvent($"Put {e.Uri.Segments[2]} {e.Uri.Query}");
                try
                {
                    switch (e.Uri.Segments[2])
                    {
                    case "TaskEvent":
                        var taskEvent = new TaskEvent();
                        if (taskEvent.Exec(e.Uri.Query, ForParatext.Upload))
                        {
                            e.Cancel = true;
                        }
                        break;

                    case "UpdateUser":
                        new UpdateUser(e.Uri.Query, e.RequestBody, SaveImage);
                        break;

                    case "UpdateProjectAvatar":
                        new UpdateProjectAvatar(e.Uri.Query, e.RequestBody, SaveImage);
                        break;

                    case "UpdateProject":
                        new UpdateProject(e.Uri.Query);
                        break;

                    case "ReportPosition":
                        new ReportPosition(e.Uri.Query);
                        break;

                    case "WriteTranscription":
                        new WriteTranscription(e.Uri.Query, e.RequestBody);
                        break;

                    case "DeleteUser":
                        new DeleteUser(e.Uri.Query);
                        break;

                    case "UpdateTask":
                        new UpdateTask(e.Uri.Query, e.RequestBody);
                        break;

                    case "DeleteTask":
                        new DeleteTask(e.Uri.Query);
                        break;

                    case "CopyToClipboard":
                        new CopyToClipboard(e.Uri.Query, ToClipboard);
                        break;

                    case "AddManyTasks":
                        new AddManyTasks(e.Uri.Query, SelectAudioFilesFolder);
                        break;

                    case "ShowHelp":
                        new ShowHelp(e.Uri.Query, ShowHelpTopic);
                        break;

                    case "GetMeta":
                        new GetMeta(e.Uri.Query, e.RequestBody);
                        break;

                    case "DeleteProject":
                        new DeleteProject(e.Uri.Query);
                        break;
                    }
                }
                catch (Exception err)
                {
                    Logger.WriteEvent($"{err.Message} in {e.Uri.Segments[2]}");
                }
            }
        }