diff options
| author | Ivan Tashkinov <ivantashkinov@gmail.com> | 2020-09-17 22:22:59 +0300 | 
|---|---|---|
| committer | Ivan Tashkinov <ivantashkinov@gmail.com> | 2020-09-17 22:22:59 +0300 | 
| commit | a42880040574701000470fc1c2dbd6f7242c1a06 (patch) | |
| tree | 666d244b9bf4f38b4421deea8d3b8bbb10ec179e /lib/pleroma/web/api_spec/operations/admin | |
| parent | d9fb5bc08ad67b55d0cd25c1a0d7d3a740758427 (diff) | |
| parent | 7bf269fe836ded974d2187c6b36eba4ab185ff25 (diff) | |
| download | pleroma-a42880040574701000470fc1c2dbd6f7242c1a06.tar.gz pleroma-a42880040574701000470fc1c2dbd6f7242c1a06.zip | |
Merge remote-tracking branch 'remotes/origin/develop' into media-preview-proxy-nostream
# Conflicts:
#	CHANGELOG.md
Diffstat (limited to 'lib/pleroma/web/api_spec/operations/admin')
| -rw-r--r-- | lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex | 115 | 
1 files changed, 115 insertions, 0 deletions
| diff --git a/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex b/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex new file mode 100644 index 000000000..a120ff4e8 --- /dev/null +++ b/lib/pleroma/web/api_spec/operations/admin/instance_document_operation.ex @@ -0,0 +1,115 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.InstanceDocumentOperation do +  alias OpenApiSpex.Operation +  alias OpenApiSpex.Schema +  alias Pleroma.Web.ApiSpec.Helpers +  alias Pleroma.Web.ApiSpec.Schemas.ApiError + +  def open_api_operation(action) do +    operation = String.to_existing_atom("#{action}_operation") +    apply(__MODULE__, operation, []) +  end + +  def show_operation do +    %Operation{ +      tags: ["Admin", "InstanceDocument"], +      summary: "Get the instance document", +      operationId: "AdminAPI.InstanceDocumentController.show", +      security: [%{"oAuth" => ["read"]}], +      parameters: [ +        Operation.parameter(:name, :path, %Schema{type: :string}, "The document name", +          required: true +        ) +        | Helpers.admin_api_params() +      ], +      responses: %{ +        200 => document_content(), +        400 => Operation.response("Bad Request", "application/json", ApiError), +        403 => Operation.response("Forbidden", "application/json", ApiError), +        404 => Operation.response("Not Found", "application/json", ApiError) +      } +    } +  end + +  def update_operation do +    %Operation{ +      tags: ["Admin", "InstanceDocument"], +      summary: "Update the instance document", +      operationId: "AdminAPI.InstanceDocumentController.update", +      security: [%{"oAuth" => ["write"]}], +      requestBody: Helpers.request_body("Parameters", update_request()), +      parameters: [ +        Operation.parameter(:name, :path, %Schema{type: :string}, "The document name", +          required: true +        ) +        | Helpers.admin_api_params() +      ], +      responses: %{ +        200 => Operation.response("InstanceDocument", "application/json", instance_document()), +        400 => Operation.response("Bad Request", "application/json", ApiError), +        403 => Operation.response("Forbidden", "application/json", ApiError), +        404 => Operation.response("Not Found", "application/json", ApiError) +      } +    } +  end + +  defp update_request do +    %Schema{ +      title: "UpdateRequest", +      description: "POST body for uploading the file", +      type: :object, +      required: [:file], +      properties: %{ +        file: %Schema{ +          type: :string, +          format: :binary, +          description: "The file to be uploaded, using multipart form data." +        } +      } +    } +  end + +  def delete_operation do +    %Operation{ +      tags: ["Admin", "InstanceDocument"], +      summary: "Get the instance document", +      operationId: "AdminAPI.InstanceDocumentController.delete", +      security: [%{"oAuth" => ["write"]}], +      parameters: [ +        Operation.parameter(:name, :path, %Schema{type: :string}, "The document name", +          required: true +        ) +        | Helpers.admin_api_params() +      ], +      responses: %{ +        200 => Operation.response("InstanceDocument", "application/json", instance_document()), +        400 => Operation.response("Bad Request", "application/json", ApiError), +        403 => Operation.response("Forbidden", "application/json", ApiError), +        404 => Operation.response("Not Found", "application/json", ApiError) +      } +    } +  end + +  defp instance_document do +    %Schema{ +      title: "InstanceDocument", +      type: :object, +      properties: %{ +        url: %Schema{type: :string} +      }, +      example: %{ +        "url" => "https://example.com/static/terms-of-service.html" +      } +    } +  end + +  defp document_content do +    Operation.response("InstanceDocumentContent", "text/html", %Schema{ +      type: :string, +      example: "<h1>Instance panel</h1>" +    }) +  end +end | 
