resourcey 0.5.0 → 0.5.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
  SHA1:
3
- metadata.gz: 3ca543c0259aa9fbdfa1f5dfd58dfb3891a3ba97
4
- data.tar.gz: 5779b5924d7b8e7214057a665cba65075d8c1427
3
+ metadata.gz: 9bb5e1455d2a6d29fb5f110ad7819a5324c44603
4
+ data.tar.gz: 833ae4b6ffe117772bc80d0964d99d6c1e7afb77
5
5
  SHA512:
6
- metadata.gz: 47984cf852b1de061d29049bc1b882f82759469f31187db346edcb33a1abc08f4082309b705fbd274a3ea12b3d90fc312d4dc780cd63fbd17f6fa66e276c6065
7
- data.tar.gz: f3e063d6faab3e45f9bb3a4f6969085ea9da86fe131952febe8dd2df1f160aa537752d23690cd090801e6b7c4084747099eeb4afc828fcb69c0e28458ff56961
6
+ metadata.gz: e3b9e28a74cd3f235c782a12bec46e04a7d9d6927cd02a1e0d4df54f1c30dd428a490e29a3d76be11eb968209c1d12209394691f087850b3d306891af7e9821a
7
+ data.tar.gz: bc2dbe203fbcf3b24bcd7a8038d236e8599497b8a25d8cfc090e5601cc583c06d88f37aa103509adc2d304fa2037c622d9f6c6f95b1dbc9ab853c59b1b1e6bf2
@@ -6,6 +6,7 @@ module Resourcey
6
6
  include Resourcey::ControllerPagination
7
7
  include Resourcey::ControllerModel
8
8
  include Resourcey::ControllerCollectionScope
9
+ include Resourcey::ControllerSerialization
9
10
 
10
11
  def index
11
12
  render json: serialized_collection(scoped_resources)
@@ -69,6 +70,10 @@ module Resourcey
69
70
  end
70
71
 
71
72
  def serializer
73
+ build_serializer_from_configuration || default_serializer
74
+ end
75
+
76
+ def default_serializer
72
77
  name = "#{resource_model_name}Serializer"
73
78
  name.safe_constantize || raise(Errors::ClassNotFound.new(name))
74
79
  end
@@ -2,3 +2,4 @@ require 'resourcey/controller_filtering'
2
2
  require 'resourcey/controller_pagination'
3
3
  require 'resourcey/controller_model'
4
4
  require 'resourcey/controller_collection_scope'
5
+ require 'resourcey/controller_serialization'
@@ -0,0 +1,51 @@
1
+ module Resourcey
2
+ module ControllerSerialization
3
+ extend ActiveSupport::Concern
4
+
5
+ class Configuration
6
+ attr_reader :actions_serializers
7
+ attr_accessor :fallback_serializer
8
+
9
+ def initialize
10
+ @actions_serializers = Hash.new.with_indifferent_access
11
+ @fallback_serializer = nil
12
+ end
13
+
14
+ def action(action_name, opts = {})
15
+ @actions_serializers[action_name] = opts[:serializer]
16
+ end
17
+
18
+ def default(opts = {})
19
+ @fallback_serializer = opts[:serializer]
20
+ end
21
+
22
+ def get_serializer_for_action(action_name)
23
+ actions_serializers[action_name] || fallback_serializer
24
+ end
25
+ end
26
+
27
+ included do
28
+ class_attribute :serialization_config
29
+ end
30
+
31
+ module ClassMethods
32
+ def serialize_with(serializer_name)
33
+ self.serialization_config ||= Configuration.new
34
+ self.serialization_config.fallback_serializer =
35
+ serializer_name.to_s.classify.constantize
36
+ end
37
+
38
+ def configure_serialization
39
+ return unless block_given?
40
+ self.serialization_config ||= Configuration.new
41
+ yield(self.serialization_config)
42
+ self.serialization_config
43
+ end
44
+ end
45
+
46
+ def build_serializer_from_configuration
47
+ return if serialization_config.nil?
48
+ serialization_config.get_serializer_for_action(action_name)
49
+ end
50
+ end
51
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resourcey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - polakowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-07 00:00:00.000000000 Z
11
+ date: 2018-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -95,6 +95,7 @@ files:
95
95
  - lib/resourcey/controller_model.rb
96
96
  - lib/resourcey/controller_modules.rb
97
97
  - lib/resourcey/controller_pagination.rb
98
+ - lib/resourcey/controller_serialization.rb
98
99
  - lib/resourcey/errors.rb
99
100
  - lib/resourcey/filter.rb
100
101
  - lib/resourcey/filter_processor.rb