resourcey 0.5.0 → 0.5.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
  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