alchemy-json_api 0.3.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
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