jsonapi_compliable 0.3.10 → 0.4.0

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
  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