jsonapi_compliable 0.3.10 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 69c38215fcc942031f12c6c101120e4e2b045c4e
4
- data.tar.gz: c696731f9c9098b6a1437acaa79831a89c5a85cf
3
+ metadata.gz: 06adc2e0a9833b1556d62814a1f88c81a4beac2e
4
+ data.tar.gz: 53d1f7f2d515a1c9dd18fe02f0ab7fe72069f5a9
5
5
  SHA512:
6
- metadata.gz: 3c03156dbf5888c1ad8a13a79a7be1958ed54952f812126f25c5916279a32fc7474ebe19955c995ecd8ed5d1582ef4b7d10bed6aeb3cb393c4852b969d044931
7
- data.tar.gz: 2f3658e3e8793911d19c7e894fcd8ccb106e7b4d68453744ae7570ce3d89e060fccd67cb2a055ecd944c4fd078e44a26d495a032172030e153b66fda783f7e3e
6
+ metadata.gz: 4b5e0517b385fe8fe14234570db9a07c27dc552454d3d7197740708828ad1a84faa496e593148f469ca609262f5047905d7a06f5942c30c60c03ac1b4f692455
7
+ data.tar.gz: d80f8f709221fd66c313409129bb7aac91c9c53bd8d1c8d7ad8affa646c84e7b3eb5eac511a97eb3067519a2f785f15c9ea2885fa3199507b87dbec8fdf64141
data/Gemfile CHANGED
@@ -2,7 +2,6 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in jsonapi_compliable.gemspec
4
4
  gemspec
5
- gem 'active_model_serializers', git: 'https://github.com/richmolj/active_model_serializers.git'
6
5
 
7
6
  group :test do
8
7
  gem 'appraisal'
@@ -18,9 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ["lib"]
19
19
 
20
20
  spec.add_dependency "rails", ['>= 4.1', '< 6']
21
- spec.add_dependency "jsonapi", '~> 0.1.1.beta2'
22
- spec.add_dependency "active_model_serializers", "~> 0.10"
23
- spec.add_dependency "jsonapi_ams_extensions", "~> 0.1"
21
+
22
+ spec.add_dependency 'jsonapi-rails', '~> 0.1'
24
23
 
25
24
  spec.add_development_dependency "kaminari"
26
25
  spec.add_development_dependency "active_model_serializers"
@@ -1,6 +1,4 @@
1
- require 'active_model_serializers'
2
- require 'jsonapi'
3
- require 'jsonapi_ams_extensions'
1
+ require 'jsonapi/rails'
4
2
 
5
3
  require "jsonapi_compliable/version"
6
4
  require "jsonapi_compliable/errors"
@@ -19,8 +17,8 @@ require "jsonapi_compliable/util/include_params"
19
17
  require "jsonapi_compliable/util/field_params"
20
18
  require "jsonapi_compliable/util/scoping"
21
19
  require "jsonapi_compliable/util/pagination"
22
-
23
- require 'jsonapi_compliable/railtie' if defined?(::Rails)
20
+ require "jsonapi_compliable/extensions/extra_attribute"
21
+ require "jsonapi_compliable/extensions/boolean_attribute"
24
22
 
25
23
  module JsonapiCompliable
26
24
  autoload :Base, 'jsonapi_compliable/base'
@@ -51,25 +51,26 @@ module JsonapiCompliable
51
51
  Util::FieldParams.parse!(params, :extra_fields)
52
52
  end
53
53
 
54
- def render_ams(scope, opts = {})
54
+ def render_jsonapi(scope, opts = {})
55
55
  scoped = Util::Scoping.apply?(self, scope, opts.delete(:scope)) ? jsonapi_scope(scope) : scope
56
- options = default_ams_options
56
+ options = default_jsonapi_render_options
57
57
  options[:include] = forced_includes || Util::IncludeParams.scrub(self)
58
58
  options[:jsonapi] = JsonapiCompliable::Util::Pagination.zero?(params) ? [] : scoped
59
59
  options[:fields] = Util::FieldParams.fieldset(params, :fields) if params[:fields]
60
- options[:extra_fields] = Util::FieldParams.fieldset(params, :extra_fields) if params[:extra_fields]
61
60
  options[:meta] ||= {}
62
61
  options.merge!(opts)
63
62
  options[:meta][:stats] = Stats::Payload.new(self, scoped).generate if params[:stats]
63
+ options[:expose] ||= {}
64
+ options[:expose][:context] = self
65
+ options[:expose][:extra_fields] = Util::FieldParams.fieldset(params, :extra_fields) if params[:extra_fields]
64
66
 
65
67
  render(options)
66
68
  end
67
69
 
68
- # render_ams(foo) equivalent to
69
- # render json: foo, ams_default_options
70
- def default_ams_options
70
+ # render_jsonapi(foo) equivalent to
71
+ # render jsonapi: foo, default_jsonapi_render_options
72
+ def default_jsonapi_render_options
71
73
  {}.tap do |options|
72
- options[:adapter] = :json_api
73
74
  end
74
75
  end
75
76
 
@@ -0,0 +1,21 @@
1
+ module JsonapiCompliable
2
+ module Extensions
3
+ module BooleanAttribute
4
+ def self.included(klass)
5
+ klass.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ def boolean_attribute(name, options = {}, &blk)
10
+ blk ||= proc { @object.public_send(name) }
11
+ field_name = :"is_#{name.to_s.gsub('?', '')}"
12
+ attribute field_name, options, &blk
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ JSONAPI::Serializable::Resource.class_eval do
20
+ include JsonapiCompliable::Extensions::BooleanAttribute
21
+ end
@@ -0,0 +1,34 @@
1
+ require 'jsonapi/serializable/resource/conditional_fields'
2
+
3
+ module JsonapiCompliable
4
+ module Extensions
5
+ module ExtraAttribute
6
+ def self.included(klass)
7
+ klass.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ def extra_attribute(name, options = {}, &blk)
12
+ allow_field = proc {
13
+ if options[:if]
14
+ next false unless instance_eval(&options[:if])
15
+ end
16
+
17
+ if @extra_fields && @extra_fields[jsonapi_type]
18
+ @extra_fields[jsonapi_type].include?(name)
19
+ else
20
+ false
21
+ end
22
+ }
23
+
24
+ attribute name, if: allow_field, &blk
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ JSONAPI::Serializable::Resource.class_eval do
32
+ prepend JSONAPI::Serializable::Resource::ConditionalFields
33
+ include JsonapiCompliable::Extensions::ExtraAttribute
34
+ end
@@ -1,3 +1,3 @@
1
1
  module JsonapiCompliable
2
- VERSION = "0.3.10"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi_compliable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.10
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-11-21 00:00:00.000000000 Z
12
+ date: 2016-12-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -32,35 +32,7 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: '6'
34
34
  - !ruby/object:Gem::Dependency
35
- name: jsonapi
36
- requirement: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 0.1.1.beta2
41
- type: :runtime
42
- prerelease: false
43
- version_requirements: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.1.1.beta2
48
- - !ruby/object:Gem::Dependency
49
- name: active_model_serializers
50
- requirement: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.10'
55
- type: :runtime
56
- prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.10'
62
- - !ruby/object:Gem::Dependency
63
- name: jsonapi_ams_extensions
35
+ name: jsonapi-rails
64
36
  requirement: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
@@ -219,7 +191,8 @@ files:
219
191
  - lib/jsonapi_compliable/deserializable.rb
220
192
  - lib/jsonapi_compliable/dsl.rb
221
193
  - lib/jsonapi_compliable/errors.rb
222
- - lib/jsonapi_compliable/railtie.rb
194
+ - lib/jsonapi_compliable/extensions/boolean_attribute.rb
195
+ - lib/jsonapi_compliable/extensions/extra_attribute.rb
223
196
  - lib/jsonapi_compliable/scope/base.rb
224
197
  - lib/jsonapi_compliable/scope/default_filter.rb
225
198
  - lib/jsonapi_compliable/scope/extra_fields.rb
@@ -1,18 +0,0 @@
1
- require 'rails/railtie'
2
- require 'action_controller'
3
- require 'action_controller/railtie'
4
- require 'action_controller/serialization'
5
-
6
- module ActiveModelSerializers
7
- class Railtie < Rails::Railtie
8
- initializer 'jsonapi_compliable.register_renderer' do
9
- require 'active_model_serializers/register_jsonapi_renderer'
10
- end
11
-
12
- initializer 'jsonapi_compliable.configure_ams' do
13
- if ActiveModelSerializers.config.respond_to?(:include_data_default)
14
- ActiveModelSerializers.config.include_data_default = :if_sideloaded
15
- end
16
- end
17
- end
18
- end