alchemy-json_api 0.3.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3046cd47b8e5d362917e2c8b595bc25c338e4bdf94a71dabb21794c1aabf913a
4
- data.tar.gz: 0670ad88fa25050738ce80692e1004b8b0016b3c25df8596f76fe0b054ed4e51
3
+ metadata.gz: 280355f5754df05ef965218bd9a35fb6f83b654dc534b2fce7cc903c47422fc2
4
+ data.tar.gz: 8ad2aa010faba09069bddb9d466d602d1dbc5c34ce052d82e96187c7bb2daa7b
5
5
  SHA512:
6
- metadata.gz: 9d48b6c6692e7330db7daeaedc03c177a89ec55225f0f3c96145fd42f7eccf972cc757a47120279f3cf34dffdb3b92aba9b8974a420743a7c0f2f35454fd5f68
7
- data.tar.gz: 9071f12da6fe44f21971cb85d53890691f0702f73396ec2e5ef08e7d6439d601aaa6625815c1a6867f15c25cdd23f1c69af67d1111769368df2d2b902e602407
6
+ metadata.gz: 80bd161a6f0b2ff1a9f5d393aad8f2d628a6177cf41443d23f0fa8638a66189600a9f43f71e3b7205ca94a9af00b937a0ecf7645e29ea512132a714fe1a4a6bb
7
+ data.tar.gz: a71c19f108eff5b51468687ad628173aa32e2e08e0b471c939582f289cea7009690451a7eff0e1a3c2e94724fbd5c52bcd0f4f70a449a80b4d6b3b10ba0a21c3
data/Rakefile CHANGED
@@ -26,3 +26,11 @@ task :test_setup do
26
26
  exit($?.exitstatus) unless $?.success?
27
27
  end
28
28
  end
29
+
30
+ require "github_changelog_generator/task"
31
+ require "alchemy/json_api/version"
32
+ GitHubChangelogGenerator::RakeTask.new(:changelog) do |config|
33
+ config.user = "AlchemyCMS"
34
+ config.project = "alchemy-json_api"
35
+ config.future_release = "v#{Alchemy::JsonApi::VERSION}"
36
+ end
@@ -7,6 +7,23 @@ module Alchemy
7
7
  include JSONAPI::Errors
8
8
  include JSONAPI::Filtering
9
9
  include JSONAPI::Pagination
10
+
11
+ private
12
+
13
+ def render_jsonapi_internal_server_error(exception)
14
+ log_error(exception)
15
+ super
16
+ end
17
+
18
+ def log_error(exception)
19
+ logger = Rails.logger
20
+ return unless logger
21
+
22
+ message = +"\n#{exception.class} (#{exception.message}):\n"
23
+ message << exception.annotated_source_code.to_s if exception.respond_to?(:annotated_source_code)
24
+ message << " " << exception.backtrace.join("\n ")
25
+ logger.fatal("#{message}\n\n")
26
+ end
10
27
  end
11
28
  end
12
29
  end
@@ -1,25 +1,29 @@
1
1
  # frozen_string_literal: true
2
- module Alchemy::JsonApi
3
- class ElementSerializer
4
- include FastJsonapi::ObjectSerializer
5
- attributes(
6
- :position,
7
- :created_at,
8
- :updated_at,
9
- )
10
- attribute :element_type, &:name
11
- belongs_to :parent_element, record_type: :element, serializer: self
2
+ module Alchemy
3
+ module JsonApi
4
+ class ElementSerializer
5
+ include FastJsonapi::ObjectSerializer
6
+ attributes(
7
+ :name,
8
+ :fixed,
9
+ :position,
10
+ :created_at,
11
+ :updated_at,
12
+ )
13
+ belongs_to :parent_element, record_type: :element, serializer: self
12
14
 
13
- belongs_to :page
14
- has_many :essences, polymorphic: true do |element|
15
- element.contents.map(&:essence)
16
- end
15
+ belongs_to :page, record_type: :page, serializer: PageSerializer
16
+
17
+ has_many :essences, polymorphic: true do |element|
18
+ element.contents.map(&:essence)
19
+ end
17
20
 
18
- has_many :nested_elements, record_type: :element, serializer: self
21
+ has_many :nested_elements, record_type: :element, serializer: self
19
22
 
20
- with_options if: ->(_, params) { params[:admin] == true } do
21
- attribute :tag_list
22
- attribute :display_name, &:display_name_with_preview_text
23
+ with_options if: ->(_, params) { params[:admin] == true } do
24
+ attribute :tag_list
25
+ attribute :display_name, &:display_name_with_preview_text
26
+ end
23
27
  end
24
28
  end
25
29
  end
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssenceBooleanSerializer
6
- include EssenceSerializer
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssenceBooleanSerializer
7
+ include EssenceSerializer
8
+ end
7
9
  end
8
10
  end
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssenceDateSerializer
6
- include EssenceSerializer
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssenceDateSerializer
7
+ include EssenceSerializer
8
+ end
7
9
  end
8
10
  end
@@ -1,29 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssenceFileSerializer
6
- include EssenceSerializer
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssenceFileSerializer
7
+ include EssenceSerializer
7
8
 
8
- attribute :link_title, &:title
9
+ attribute :link_title, &:title
9
10
 
10
- attribute :ingredient, &:attachment_url
11
+ attribute :ingredient, &:attachment_url
11
12
 
12
- with_options if: proc { |essence| essence.attachment.present? } do
13
- attribute :attachment_name do |essence|
14
- essence.attachment.name
15
- end
13
+ with_options if: proc { |essence| essence.attachment.present? } do
14
+ attribute :attachment_name do |essence|
15
+ essence.attachment.name
16
+ end
16
17
 
17
- attribute :attachment_file_name do |essence|
18
- essence.attachment.file_name
19
- end
18
+ attribute :attachment_file_name do |essence|
19
+ essence.attachment.file_name
20
+ end
20
21
 
21
- attribute :attachment_mime_type do |essence|
22
- essence.attachment.file_mime_type
23
- end
22
+ attribute :attachment_mime_type do |essence|
23
+ essence.attachment.file_mime_type
24
+ end
24
25
 
25
- attribute :attachment_file_size do |essence|
26
- essence.attachment.file_size
26
+ attribute :attachment_file_size do |essence|
27
+ essence.attachment.file_size
28
+ end
27
29
  end
28
30
  end
29
31
  end
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssenceHtmlSerializer
6
- include EssenceSerializer
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssenceHtmlSerializer
7
+ include EssenceSerializer
8
+ end
7
9
  end
8
10
  end
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssenceLinkSerializer
6
- include EssenceSerializer
7
- attributes(
8
- :link_title,
9
- :link_target,
10
- )
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssenceLinkSerializer
7
+ include EssenceSerializer
8
+ attributes(
9
+ :link_title,
10
+ :link_target,
11
+ )
12
+ end
11
13
  end
12
14
  end
@@ -1,31 +1,33 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssenceNodeSerializer
6
- include EssenceSerializer
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssenceNodeSerializer
7
+ include EssenceSerializer
7
8
 
8
- attribute :ingredient do |essence|
9
- essence&.node&.name
10
- end
9
+ attribute :ingredient do |essence|
10
+ essence&.node&.name
11
+ end
11
12
 
12
- belongs_to :node
13
+ belongs_to :node, record_type: :node, serializer: NodeSerializer
13
14
 
14
- with_options if: proc { |essence| essence.node.present? } do
15
- attribute :name do |essence|
16
- essence.node.name
17
- end
15
+ with_options if: proc { |essence| essence.node.present? } do
16
+ attribute :name do |essence|
17
+ essence.node.name
18
+ end
18
19
 
19
- attribute :link_url do |essence|
20
- essence.node.url
21
- end
20
+ attribute :link_url do |essence|
21
+ essence.node.url
22
+ end
22
23
 
23
- attribute :link_title do |essence|
24
- essence.node.title
25
- end
24
+ attribute :link_title do |essence|
25
+ essence.node.title
26
+ end
26
27
 
27
- attribute :link_nofollow do |essence|
28
- essence.node.nofollow
28
+ attribute :link_nofollow do |essence|
29
+ essence.node.nofollow
30
+ end
29
31
  end
30
32
  end
31
33
  end
@@ -1,22 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssencePageSerializer
6
- include EssenceSerializer
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssencePageSerializer
7
+ include EssenceSerializer
7
8
 
8
- attribute :ingredient do |essence|
9
- essence.page&.url_path
10
- end
9
+ attribute :ingredient do |essence|
10
+ essence.page&.url_path
11
+ end
11
12
 
12
- attribute :page_name do |essence|
13
- essence.page&.name
14
- end
13
+ attribute :page_name do |essence|
14
+ essence.page&.name
15
+ end
15
16
 
16
- attribute :page_url do |essence|
17
- essence.page&.url_path
18
- end
17
+ attribute :page_url do |essence|
18
+ essence.page&.url_path
19
+ end
19
20
 
20
- has_one :page, record_type: :page, serializer: PageSerializer
21
+ has_one :page, record_type: :page, serializer: PageSerializer
22
+ end
21
23
  end
22
24
  end
@@ -1,39 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssencePictureSerializer
6
- include EssenceSerializer
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssencePictureSerializer
7
+ include EssenceSerializer
7
8
 
8
- attributes(
9
- :title,
10
- :caption,
11
- :link_title,
12
- :link_target,
13
- )
14
- attribute :ingredient, &:picture_url
15
- attribute :alt_text, &:alt_tag
16
- attribute :link_url, &:link
9
+ attributes(
10
+ :title,
11
+ :caption,
12
+ :link_title,
13
+ :link_target,
14
+ )
15
+ attribute :ingredient, &:picture_url
16
+ attribute :alt_text, &:alt_tag
17
+ attribute :link_url, &:link
17
18
 
18
- with_options if: proc { |essence| essence.picture.present? } do
19
- attribute :image_dimensions do |essence|
20
- essence.sizes_from_string(essence.render_size)
21
- end
19
+ with_options if: proc { |essence| essence.picture.present? } do
20
+ attribute :image_dimensions do |essence|
21
+ essence.sizes_from_string(essence.render_size)
22
+ end
22
23
 
23
- attribute :image_name do |essence|
24
- essence.picture.name
25
- end
24
+ attribute :image_name do |essence|
25
+ essence.picture.name
26
+ end
26
27
 
27
- attribute :image_file_name do |essence|
28
- essence.picture.image_file_name
29
- end
28
+ attribute :image_file_name do |essence|
29
+ essence.picture.image_file_name
30
+ end
30
31
 
31
- attribute :image_mime_type do |essence|
32
- "image/#{essence.picture.image_file_format}"
33
- end
32
+ attribute :image_mime_type do |essence|
33
+ "image/#{essence.picture.image_file_format}"
34
+ end
34
35
 
35
- attribute :image_file_size do |essence|
36
- essence.picture.image_file_size
36
+ attribute :image_file_size do |essence|
37
+ essence.picture.image_file_size
38
+ end
37
39
  end
38
40
  end
39
41
  end
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssenceRichtextSerializer
6
- include EssenceSerializer
7
- attributes(
8
- :body,
9
- :stripped_body,
10
- )
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssenceRichtextSerializer
7
+ include EssenceSerializer
8
+ attributes(
9
+ :body,
10
+ :stripped_body,
11
+ )
12
+ end
11
13
  end
12
14
  end
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssenceSelectSerializer
6
- include EssenceSerializer
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssenceSelectSerializer
7
+ include EssenceSerializer
8
+ end
7
9
  end
8
10
  end
@@ -1,14 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
  require "alchemy/json_api/essence_serializer"
3
3
 
4
- module Alchemy::JsonApi
5
- class EssenceTextSerializer
6
- include EssenceSerializer
7
- attributes(
8
- :body,
9
- :link_title,
10
- :link_target,
11
- )
12
- attribute :link_url, &:link
4
+ module Alchemy
5
+ module JsonApi
6
+ class EssenceTextSerializer
7
+ include EssenceSerializer
8
+ attributes(
9
+ :body,
10
+ :link_title,
11
+ :link_target,
12
+ )
13
+ attribute :link_url, &:link
14
+ end
13
15
  end
14
16
  end
@@ -15,9 +15,10 @@ module Alchemy
15
15
  :updated_at,
16
16
  )
17
17
 
18
- belongs_to :language
18
+ belongs_to :language, record_type: :language, serializer: LanguageSerializer
19
19
 
20
- has_many :elements
20
+ has_many :elements, record_type: :element, serializer: ElementSerializer
21
+ has_many :fixed_elements, record_type: :element, serializer: ElementSerializer
21
22
 
22
23
  has_many :all_elements, record_type: :element, serializer: ElementSerializer do |page|
23
24
  page.all_elements.select { |e| e.public? && !e.trashed? }
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module Alchemy
3
3
  module JsonApi
4
- VERSION = "0.3.0"
4
+ VERSION = "0.7.1"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy-json_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Meyerhoff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-28 00:00:00.000000000 Z
11
+ date: 2020-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alchemy_cms
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: github_changelog_generator
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: jsonapi-rspec
71
85
  requirement: !ruby/object:Gem::Requirement