alchemy-json_api 0.1.0
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +34 -0
- data/Rakefile +28 -0
- data/app/controllers/alchemy/json_api/base_controller.rb +11 -0
- data/app/controllers/alchemy/json_api/layout_pages_controller.rb +12 -0
- data/app/controllers/alchemy/json_api/pages_controller.rb +50 -0
- data/app/serializers/alchemy/json_api/element_serializer.rb +25 -0
- data/app/serializers/alchemy/json_api/essence_boolean_serializer.rb +8 -0
- data/app/serializers/alchemy/json_api/essence_date_serializer.rb +8 -0
- data/app/serializers/alchemy/json_api/essence_file_serializer.rb +31 -0
- data/app/serializers/alchemy/json_api/essence_html_serializer.rb +8 -0
- data/app/serializers/alchemy/json_api/essence_link_serializer.rb +12 -0
- data/app/serializers/alchemy/json_api/essence_node_serializer.rb +33 -0
- data/app/serializers/alchemy/json_api/essence_picture_serializer.rb +41 -0
- data/app/serializers/alchemy/json_api/essence_richtext_serializer.rb +12 -0
- data/app/serializers/alchemy/json_api/essence_select_serializer.rb +8 -0
- data/app/serializers/alchemy/json_api/essence_text_serializer.rb +14 -0
- data/app/serializers/alchemy/json_api/language_serializer.rb +28 -0
- data/app/serializers/alchemy/json_api/node_serializer.rb +17 -0
- data/app/serializers/alchemy/json_api/page_serializer.rb +32 -0
- data/config/routes.rb +5 -0
- data/lib/alchemy/json_api.rb +10 -0
- data/lib/alchemy/json_api/engine.rb +13 -0
- data/lib/alchemy/json_api/essence_serializer.rb +17 -0
- data/lib/alchemy/json_api/link_helper.rb +16 -0
- data/lib/alchemy/json_api/version.rb +6 -0
- data/lib/tasks/alchemy/json_api_tasks.rake +5 -0
- metadata +154 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 25ba34a50a58c59ff4aabb21089faee49c5ada8fbbf753a1515799845bea8213
|
4
|
+
data.tar.gz: 247cf1d183feda62cec526e9a7ceec96716ff1ed97589a473ba86193cfd54065
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1facc4daccad62f6b80c8c7494c644621713ed048e8dcc8cfb55abdeb2b3fb115f519c835febd7ebb509b6dab3d9a0e43ea2837ed6aa71d863d7b6942de001ec
|
7
|
+
data.tar.gz: 57c7d49f5214edbc140303a7be3a4286b6649eff07905f3eba4fa74531e27444ab24b8976a983855d1a70adaf961a639c246f12a0737e269872213f454e402cc
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2020 Martin Meyerhoff
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# Alchemy::JsonApi
|
2
|
+
|
3
|
+
A JSON-API based API for AlchemyCMS
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
Mount the engine in your `config/routes.rb` file where you want, like this:
|
8
|
+
|
9
|
+
```rb
|
10
|
+
mount Alchemy::JsonApi::Engine => "/jsonapi/"
|
11
|
+
```
|
12
|
+
|
13
|
+
## Installation
|
14
|
+
Add this line to your application's Gemfile:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
gem 'alchemy-json_api'
|
18
|
+
```
|
19
|
+
|
20
|
+
And then execute:
|
21
|
+
```bash
|
22
|
+
$ bundle
|
23
|
+
```
|
24
|
+
|
25
|
+
Or install it yourself as:
|
26
|
+
```bash
|
27
|
+
$ gem install alchemy-json_api
|
28
|
+
```
|
29
|
+
|
30
|
+
## Contributing
|
31
|
+
Contribution directions go here.
|
32
|
+
|
33
|
+
## License
|
34
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require "bundler/setup"
|
4
|
+
rescue LoadError
|
5
|
+
puts "You must `gem install bundler` and `bundle install` to run rake tasks"
|
6
|
+
end
|
7
|
+
Bundler::GemHelper.install_tasks
|
8
|
+
|
9
|
+
require "rspec/core"
|
10
|
+
require "rspec/core/rake_task"
|
11
|
+
RSpec::Core::RakeTask.new(:spec)
|
12
|
+
|
13
|
+
task default: [:test_setup, :spec]
|
14
|
+
|
15
|
+
require "active_support/core_ext/string"
|
16
|
+
|
17
|
+
desc "Setup test app"
|
18
|
+
task :test_setup do
|
19
|
+
Dir.chdir("spec/dummy") do
|
20
|
+
system <<-SETUP.strip_heredoc
|
21
|
+
export RAILS_ENV=test && \
|
22
|
+
bin/rake db:environment:set db:drop && \
|
23
|
+
bin/rake railties:install:migrations && \
|
24
|
+
bin/rake db:migrate
|
25
|
+
SETUP
|
26
|
+
exit($?.exitstatus) unless $?.success?
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Alchemy
|
3
|
+
module JsonApi
|
4
|
+
class PagesController < JsonApi::BaseController
|
5
|
+
before_action :load_page, only: :show
|
6
|
+
|
7
|
+
def index
|
8
|
+
allowed = [:page_layout]
|
9
|
+
|
10
|
+
jsonapi_filter(page_scope, allowed) do |filtered|
|
11
|
+
render jsonapi: filtered.result
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def show
|
16
|
+
render jsonapi: @page
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def load_page
|
22
|
+
@page = load_page_by_id || load_page_by_urlname || raise(ActiveRecord::RecordNotFound)
|
23
|
+
end
|
24
|
+
|
25
|
+
def load_page_by_id
|
26
|
+
page_scope.find_by(id: params[:id])
|
27
|
+
end
|
28
|
+
|
29
|
+
def load_page_by_urlname
|
30
|
+
# The route param is called :id although it might be a string
|
31
|
+
page_scope.find_by(urlname: params[:id])
|
32
|
+
end
|
33
|
+
|
34
|
+
def page_scope
|
35
|
+
base_page_scope.contentpages
|
36
|
+
end
|
37
|
+
|
38
|
+
def base_page_scope
|
39
|
+
::Alchemy::Page.
|
40
|
+
with_language(Language.current).
|
41
|
+
published.
|
42
|
+
preload(language: {nodes: [:parent, :page]}, all_elements: [:parent_element, :nested_elements, { contents: { essence: :ingredient_association } }])
|
43
|
+
end
|
44
|
+
|
45
|
+
def jsonapi_serializer_class(_resource, _is_collection)
|
46
|
+
::Alchemy::JsonApi::PageSerializer
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,25 @@
|
|
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
|
12
|
+
|
13
|
+
belongs_to :page
|
14
|
+
has_many :essences, polymorphic: true do |element|
|
15
|
+
element.contents.map(&:essence)
|
16
|
+
end
|
17
|
+
|
18
|
+
has_many :nested_elements, record_type: :element, serializer: self
|
19
|
+
|
20
|
+
with_options if: ->(_, params) { params[:admin] == true } do
|
21
|
+
attribute :tag_list
|
22
|
+
attribute :display_name, &:display_name_with_preview_text
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "alchemy/json_api/essence_serializer"
|
3
|
+
require "alchemy/json_api/link_helper"
|
4
|
+
|
5
|
+
module Alchemy::JsonApi
|
6
|
+
class EssenceFileSerializer
|
7
|
+
include EssenceSerializer
|
8
|
+
|
9
|
+
attribute :link_title, &:title
|
10
|
+
|
11
|
+
attribute :ingredient, &:attachment_url
|
12
|
+
|
13
|
+
with_options if: proc { |essence| essence.attachment.present? } do
|
14
|
+
attribute :attachment_name do |essence|
|
15
|
+
essence.attachment.name
|
16
|
+
end
|
17
|
+
|
18
|
+
attribute :attachment_file_name do |essence|
|
19
|
+
essence.attachment.file_name
|
20
|
+
end
|
21
|
+
|
22
|
+
attribute :attachment_mime_type do |essence|
|
23
|
+
essence.attachment.file_mime_type
|
24
|
+
end
|
25
|
+
|
26
|
+
attribute :attachment_file_size do |essence|
|
27
|
+
essence.attachment.file_size
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "alchemy/json_api/essence_serializer"
|
3
|
+
require "alchemy/json_api/link_helper"
|
4
|
+
|
5
|
+
module Alchemy::JsonApi
|
6
|
+
class EssenceNodeSerializer
|
7
|
+
include EssenceSerializer
|
8
|
+
|
9
|
+
attribute :ingredient do |essence|
|
10
|
+
essence&.node&.name
|
11
|
+
end
|
12
|
+
|
13
|
+
belongs_to :node
|
14
|
+
|
15
|
+
with_options if: proc { |essence| essence.node.present? } do
|
16
|
+
attribute :name do |essence|
|
17
|
+
essence.node.name
|
18
|
+
end
|
19
|
+
|
20
|
+
attribute :link_url do |essence|
|
21
|
+
essence.node.url
|
22
|
+
end
|
23
|
+
|
24
|
+
attribute :link_title do |essence|
|
25
|
+
essence.node.title
|
26
|
+
end
|
27
|
+
|
28
|
+
attribute :link_nofollow do |essence|
|
29
|
+
essence.node.nofollow
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "alchemy/json_api/essence_serializer"
|
3
|
+
require "alchemy/json_api/link_helper"
|
4
|
+
|
5
|
+
module Alchemy::JsonApi
|
6
|
+
class EssencePictureSerializer
|
7
|
+
include EssenceSerializer
|
8
|
+
|
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
|
18
|
+
|
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
|
23
|
+
|
24
|
+
attribute :image_name do |essence|
|
25
|
+
essence.picture.name
|
26
|
+
end
|
27
|
+
|
28
|
+
attribute :image_file_name do |essence|
|
29
|
+
essence.picture.image_file_name
|
30
|
+
end
|
31
|
+
|
32
|
+
attribute :image_mime_type do |essence|
|
33
|
+
"image/#{essence.picture.image_file_format}"
|
34
|
+
end
|
35
|
+
|
36
|
+
attribute :image_file_size do |essence|
|
37
|
+
essence.picture.image_file_size
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "alchemy/json_api/essence_serializer"
|
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
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Alchemy
|
3
|
+
module JsonApi
|
4
|
+
class LanguageSerializer
|
5
|
+
include FastJsonapi::ObjectSerializer
|
6
|
+
attributes(
|
7
|
+
:name,
|
8
|
+
:language_code,
|
9
|
+
:country_code,
|
10
|
+
:locale,
|
11
|
+
)
|
12
|
+
|
13
|
+
has_many :menu_items, record_type: :node, serializer: NodeSerializer, object_method_name: :nodes, id_method_name: :node_ids
|
14
|
+
|
15
|
+
has_many :menus, record_type: :node, serializer: NodeSerializer do |language|
|
16
|
+
language.nodes.select { |n| n.parent.nil? }
|
17
|
+
end
|
18
|
+
has_many :pages
|
19
|
+
has_one :root_page, record_type: :page, serializer: PageSerializer
|
20
|
+
|
21
|
+
with_options if: ->(_, params) { params[:admin] == true } do
|
22
|
+
attribute :created_at
|
23
|
+
attribute :updated_at
|
24
|
+
attribute :public
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Alchemy
|
3
|
+
module JsonApi
|
4
|
+
class NodeSerializer
|
5
|
+
include FastJsonapi::ObjectSerializer
|
6
|
+
|
7
|
+
attributes :name
|
8
|
+
attribute :link_url, &:url
|
9
|
+
attribute :link_title, &:title
|
10
|
+
attribute :link_nofollow, &:nofollow
|
11
|
+
|
12
|
+
belongs_to :parent, record_type: :node
|
13
|
+
|
14
|
+
has_many :children, record_type: :node, serializer: self
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Alchemy
|
3
|
+
module JsonApi
|
4
|
+
class PageSerializer
|
5
|
+
include FastJsonapi::ObjectSerializer
|
6
|
+
attributes(
|
7
|
+
:name,
|
8
|
+
:urlname,
|
9
|
+
:page_layout,
|
10
|
+
:title,
|
11
|
+
:language_code,
|
12
|
+
:meta_keywords,
|
13
|
+
:meta_description,
|
14
|
+
:created_at,
|
15
|
+
:updated_at,
|
16
|
+
)
|
17
|
+
|
18
|
+
belongs_to :language
|
19
|
+
|
20
|
+
has_many :elements
|
21
|
+
|
22
|
+
has_many :all_elements, record_type: :element, serializer: ElementSerializer do |page|
|
23
|
+
page.all_elements.select { |e| e.public? && !e.trashed? }
|
24
|
+
end
|
25
|
+
|
26
|
+
with_options if: ->(_, params) { params[:admin] == true } do
|
27
|
+
attribute :tag_list
|
28
|
+
attribute :status
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/config/routes.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Alchemy
|
3
|
+
module JsonApi
|
4
|
+
module EssenceSerializer
|
5
|
+
def self.included(klass)
|
6
|
+
klass.include FastJsonapi::ObjectSerializer
|
7
|
+
klass.has_one :element, record_type: :element, serializer: ElementSerializer do |essence|
|
8
|
+
essence.content.element
|
9
|
+
end
|
10
|
+
klass.attributes :ingredient
|
11
|
+
klass.attribute :role do |essence|
|
12
|
+
essence.content.name
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Alchemy
|
3
|
+
module JsonApi
|
4
|
+
module LinkHelper
|
5
|
+
def alchemy_link(path_base, object)
|
6
|
+
return unless object
|
7
|
+
|
8
|
+
if Rails.application.routes.default_url_options[:host]
|
9
|
+
Alchemy::Engine.routes.url_helpers.public_send("#{path_base}_url", object)
|
10
|
+
else
|
11
|
+
Alchemy::Engine.routes.url_helpers.public_send("#{path_base}_path", object)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,154 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: alchemy-json_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Martin Meyerhoff
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-05-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: alchemy_cms
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: fast_jsonapi
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.5'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: jsonapi.rb
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: factory_bot
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: jsonapi-rspec
|
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'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec-rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: A JSONAPI compliant API for AlchemyCMS
|
98
|
+
email:
|
99
|
+
- mamhoff@gmail.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- MIT-LICENSE
|
105
|
+
- README.md
|
106
|
+
- Rakefile
|
107
|
+
- app/controllers/alchemy/json_api/base_controller.rb
|
108
|
+
- app/controllers/alchemy/json_api/layout_pages_controller.rb
|
109
|
+
- app/controllers/alchemy/json_api/pages_controller.rb
|
110
|
+
- app/serializers/alchemy/json_api/element_serializer.rb
|
111
|
+
- app/serializers/alchemy/json_api/essence_boolean_serializer.rb
|
112
|
+
- app/serializers/alchemy/json_api/essence_date_serializer.rb
|
113
|
+
- app/serializers/alchemy/json_api/essence_file_serializer.rb
|
114
|
+
- app/serializers/alchemy/json_api/essence_html_serializer.rb
|
115
|
+
- app/serializers/alchemy/json_api/essence_link_serializer.rb
|
116
|
+
- app/serializers/alchemy/json_api/essence_node_serializer.rb
|
117
|
+
- app/serializers/alchemy/json_api/essence_picture_serializer.rb
|
118
|
+
- app/serializers/alchemy/json_api/essence_richtext_serializer.rb
|
119
|
+
- app/serializers/alchemy/json_api/essence_select_serializer.rb
|
120
|
+
- app/serializers/alchemy/json_api/essence_text_serializer.rb
|
121
|
+
- app/serializers/alchemy/json_api/language_serializer.rb
|
122
|
+
- app/serializers/alchemy/json_api/node_serializer.rb
|
123
|
+
- app/serializers/alchemy/json_api/page_serializer.rb
|
124
|
+
- config/routes.rb
|
125
|
+
- lib/alchemy/json_api.rb
|
126
|
+
- lib/alchemy/json_api/engine.rb
|
127
|
+
- lib/alchemy/json_api/essence_serializer.rb
|
128
|
+
- lib/alchemy/json_api/link_helper.rb
|
129
|
+
- lib/alchemy/json_api/version.rb
|
130
|
+
- lib/tasks/alchemy/json_api_tasks.rake
|
131
|
+
homepage: https://github.com/AlchemyCMS/alchemy-json_api
|
132
|
+
licenses:
|
133
|
+
- MIT
|
134
|
+
metadata: {}
|
135
|
+
post_install_message:
|
136
|
+
rdoc_options: []
|
137
|
+
require_paths:
|
138
|
+
- lib
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
requirements: []
|
150
|
+
rubygems_version: 3.0.3
|
151
|
+
signing_key:
|
152
|
+
specification_version: 4
|
153
|
+
summary: A JSONAPI compliant API for AlchemyCMS
|
154
|
+
test_files: []
|