about summary refs log tree commit diff
path: root/app/serializers/rest
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-06-01 17:31:36 +0200
committerGitHub <noreply@github.com>2022-06-01 17:31:36 +0200
commit28329ba62f90890b110517f6da69ca81d588f2f5 (patch)
tree4027950e3e59b14c98056aaee0028df27272cc4d /app/serializers/rest
parentf5783182c39b07cb119861edb6db6a1c9b2213e9 (diff)
Add /api/v1/admin/domain_blocks (#18247)
* Add /api/v1/admin/domain_blocks

Fixes #18140

- `GET /api/v1/admin/domain_blocks` lists domain blocks
- `GET /api/v1/admin/domain_blocks/:id` shows one by ID
- `DELETE /api/v1/admin/domain_blocks/:id` deletes a given domain block
- `POST /api/v1/admin/domain_blocks` to create a new domain block:
  if it conflicts with an existing one, returns an error with
  an attribute `existing_domain_block` with the rendered domain block

* Simplify conflict handling as suggested in review
Diffstat (limited to 'app/serializers/rest')
-rw-r--r--app/serializers/rest/admin/domain_block_serializer.rb11
-rw-r--r--app/serializers/rest/admin/existing_domain_block_error_serializer.rb15
2 files changed, 26 insertions, 0 deletions
diff --git a/app/serializers/rest/admin/domain_block_serializer.rb b/app/serializers/rest/admin/domain_block_serializer.rb
new file mode 100644
index 000000000..b955d008a
--- /dev/null
+++ b/app/serializers/rest/admin/domain_block_serializer.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class REST::Admin::DomainBlockSerializer < ActiveModel::Serializer
+  attributes :id, :domain, :created_at, :severity,
+             :reject_media, :reject_reports,
+             :private_comment, :public_comment, :obfuscate
+
+  def id
+    object.id.to_s
+  end
+end
diff --git a/app/serializers/rest/admin/existing_domain_block_error_serializer.rb b/app/serializers/rest/admin/existing_domain_block_error_serializer.rb
new file mode 100644
index 000000000..629566dad
--- /dev/null
+++ b/app/serializers/rest/admin/existing_domain_block_error_serializer.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+class REST::Admin::ExistingDomainBlockErrorSerializer < ActiveModel::Serializer
+  attributes :error
+
+  has_one :existing_domain_block, serializer: REST::Admin::DomainBlockSerializer
+
+  def error
+    I18n.t('admin.domain_blocks.existing_domain_block', name: existing_domain_block.domain)
+  end
+
+  def existing_domain_block
+    object
+  end
+end