nard-appi 0.1.5 → 0.2.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: 6b9fe8271e17119e6f7d97eeaadb02132fe4b47e
4
- data.tar.gz: ff45f7824ccc0c450f88f4dacd497a16b0c6af36
3
+ metadata.gz: 4f846be2fa546d1e2c860e19bf8b4d79a2e68d9b
4
+ data.tar.gz: 6624e51eeaef3f96de7ed3fe1c32999909dc313a
5
5
  SHA512:
6
- metadata.gz: f664b5cb4aaa76995767fd8118529803297096c502aaeafe6e4ce729e7942b21fbd0c85c6e0bc3a4e682b22c91a19ef73ba0942354e4b52e404bf1dda6d5120d
7
- data.tar.gz: 6613c19b06392496accb1652e4c96638efa24b34573c3b733636704cc51a423e5dc6159f9814a37132c23b70e4cbd3b835ccec7aa9209cd4a33d18c822ac2210
6
+ metadata.gz: bf8dd8602da13ad5f9cde0471fecbf038b94347690ff850e8f74cb10ee4dcf6ffde7ba30c5cd0ea085825dc976f6aeb4bd2aa195d880b5137a0aa4c2333512b3
7
+ data.tar.gz: 539fc89634579c6c8cc4ebb76b536764386954f194332e9141197bdc5f2913e49fff2a11ee8fc21ac4b77212d3ac9ae882780cc31243f9dba9ee6ad7df13f2fd
data/lib/nard/appi.rb CHANGED
@@ -1,13 +1,7 @@
1
1
  require 'nard/appi/version'
2
2
 
3
- require 'nard/appi/api_ext/client'
4
- require 'nard/appi/api_ext/version'
5
- require 'nard/appi/api_ext/configuration'
6
- require 'nard/appi/api_ext/initializer'
7
- require 'nard/appi/api_ext/environment'
8
-
3
+ require 'nard/appi/base'
9
4
  require 'nard/appi/api_ext/default_configuration'
10
5
 
11
-
12
6
  require 'nard/appi/client'
13
7
  require 'nard/appi/client/util/base_normalizer'
@@ -13,8 +13,8 @@ module Nard
13
13
 
14
14
  module ClassMethods
15
15
 
16
- def client( gem_top_namespace, options = {} )
17
- gem_top_namespace::Client.new( options )
16
+ def client( options = {} )
17
+ self::Client.new( options )
18
18
  end
19
19
 
20
20
  end
@@ -0,0 +1,60 @@
1
+ require 'active_support'
2
+ require 'active_support/concern'
3
+
4
+ require 'nard/appi/api_ext/version'
5
+ require 'nard/appi/api_ext/client'
6
+ require 'nard/appi/api_ext/configuration'
7
+ require 'nard/appi/api_ext/environment'
8
+
9
+ require 'nard/appi/api_ext/initializer'
10
+
11
+ module Nard
12
+
13
+ module Appi
14
+
15
+ module Base
16
+
17
+ extend ActiveSupport::Concern
18
+
19
+ included do
20
+ class << self
21
+
22
+ include ActiveSupport::Callbacks
23
+
24
+ define_callbacks :default_config
25
+
26
+ set_callback :default_config, :before, :before_default_config
27
+ set_callback :default_config, :after, :after_default_config
28
+
29
+ private
30
+
31
+ def before_default_config
32
+ include Nard::Appi::ApiExt::Version
33
+ include Nard::Appi::ApiExt::Client
34
+ include Nard::Appi::ApiExt::Configuration
35
+ include Nard::Appi::ApiExt::Environment
36
+ end
37
+
38
+ def after_default_config
39
+ include Nard::Appi::ApiExt::Initializer
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+ module ClassMethods
46
+
47
+ # 標準設定のモジュールを include するメソッド
48
+ # @param namespace [Module] 標準設定のモジュールが定義されている名前空間
49
+ # @return [Class] namespace に指定した名前空間
50
+ def default_config( namespace )
51
+ run_callbacks :default_config do
52
+ include namespace
53
+ end
54
+ end
55
+
56
+ end
57
+
58
+ end
59
+ end
60
+ end
@@ -9,32 +9,92 @@ module Nard
9
9
 
10
10
  include Nard::Appi::ClientExt::Request
11
11
 
12
- def initialize( gem_top_namespace, options = {} )
13
- options_keys = gem_top_namespace::OPTIONS_KEYS
12
+ # @!group Methods for DSL
14
13
 
15
- self.class.instance_eval do
16
- set_attr_accessors( options_keys )
14
+ def self.client_for( namespace )
15
+ set_top_namespace( namespace )
16
+ end
17
+
18
+ def self.concerns( *namespaces, under: nil )
19
+ raise ArgumentError unless under.present?
20
+ namespaces.each do | namespace |
21
+ include_concerned_module( namespace, under )
17
22
  end
23
+ end
18
24
 
19
- options = gem_top_namespace.options.merge( options ).with_indifferent_access
25
+ # @!endgroup
20
26
 
21
- options_keys.each do | key |
22
- send( "#{ key }=", options[ key ] )
27
+ class << self
28
+
29
+ include ActiveSupport::Callbacks
30
+
31
+ attr_reader :top_namespace
32
+
33
+ private
34
+
35
+ # @!group Private methods for DSL
36
+
37
+ def set_top_namespace( top_namespace )
38
+ @top_namespace = top_namespace
23
39
  end
24
- end
25
40
 
26
- def self.set_attr_accessors( options_keys )
27
- return if @_attr_accessors_defined
41
+ def include_concerned_module( namespace, under )
42
+ require "#{ under }/#{ namespace.to_s.downcase }"
43
+
44
+ module_name = under.classify
45
+ .constantize
46
+ .const_get( namespace.to_s.capitalize )
28
47
 
29
- options_keys.each do | option_key |
48
+ # puts "#{ module_name } is included."
49
+ include module_name
50
+ end
51
+
52
+ # @!endgroup
53
+
54
+ def set_attr_accessor( option_key )
30
55
  getter_method = option_key.to_sym
31
56
  setter_method = "#{ option_key }=".to_sym
32
57
  writer = option_key.to_sym
33
- attr_reader getter_method unless getter_method.in?( self.class.instance_methods )
34
- attr_writer writer unless setter_method.in?( self.class.instance_methods )
58
+ attr_reader getter_method unless getter_method.in?( instance_methods )
59
+ attr_writer writer unless setter_method.in?( instance_methods )
35
60
  end
36
61
 
37
- @_attr_accessors_defined = true
62
+ end
63
+
64
+ def initialize( options = {} )
65
+ set_attr_accessors
66
+ set_option_values( options )
67
+ end
68
+
69
+ private
70
+
71
+ def set_attr_accessors
72
+ top_namespace = self.class.top_namespace
73
+ options_keys = top_namespace::OPTIONS_KEYS
74
+
75
+ self.class.instance_eval do
76
+ return if @_attr_accessors_defined
77
+
78
+ options_keys.each do | option_key |
79
+ set_attr_accessor( option_key )
80
+ end
81
+
82
+ @_attr_accessors_defined = true
83
+ end
84
+ end
85
+
86
+ def set_option_values( options )
87
+ options_keys = self.class.top_namespace::OPTIONS_KEYS
88
+
89
+ options = self.class
90
+ .top_namespace
91
+ .options
92
+ .merge( options )
93
+ .with_indifferent_access
94
+
95
+ options_keys.each do | key |
96
+ send( "#{ key }=", options[ key ] )
97
+ end
38
98
  end
39
99
 
40
100
  end
@@ -0,0 +1,54 @@
1
+ module Nard
2
+
3
+ module Appi
4
+
5
+ module Response
6
+
7
+ class Body
8
+
9
+ def initialize( h, client, path, options )
10
+ @h = h
11
+
12
+ @client = client
13
+ @path = path
14
+ @options = options
15
+
16
+ raise_error_if_needed
17
+ end
18
+
19
+ # @return [URI::HTTPS or URI::Generic]
20
+ def path( full: true )
21
+ options = @options.dup.merge( full: full )
22
+ @client.path( @path, options )
23
+ end
24
+
25
+ def method_missing( method_name, *args, &block )
26
+ return super unless @h.respond_to?( method_name )
27
+ @h.send( method, *args, &block )
28
+ rescue NoMethodError => e
29
+ rescue_method_missing(e)
30
+ end
31
+
32
+ def respond_to?( method, include_all = true )
33
+ return @h.respond_to?( method, include_all ) || super
34
+ end
35
+
36
+ private
37
+
38
+ def rescue_method_missing(e)
39
+ raise NotImplementedError
40
+ end
41
+
42
+ def raise_error_if_needed
43
+ nil
44
+ end
45
+
46
+ def rescue_method_missing(e)
47
+ raise NotImplementedError
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -1,5 +1,5 @@
1
1
  module Nard
2
2
  module Appi
3
- VERSION = '0.1.5'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nard-appi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shu Fujita
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-09 00:00:00.000000000 Z
11
+ date: 2016-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -125,6 +125,7 @@ files:
125
125
  - lib/nard/appi/api_ext/environment.rb
126
126
  - lib/nard/appi/api_ext/initializer.rb
127
127
  - lib/nard/appi/api_ext/version.rb
128
+ - lib/nard/appi/base.rb
128
129
  - lib/nard/appi/client.rb
129
130
  - lib/nard/appi/client/util/args_normalizer.rb
130
131
  - lib/nard/appi/client/util/base_normalizer.rb
@@ -133,6 +134,7 @@ files:
133
134
  - lib/nard/appi/client/util/module/path_normalizer.rb
134
135
  - lib/nard/appi/client_ext/request.rb
135
136
  - lib/nard/appi/environment.rb
137
+ - lib/nard/appi/response/body.rb
136
138
  - lib/nard/appi/version.rb
137
139
  - nard-appi.gemspec
138
140
  homepage: https://github.com/nard-tech/nard-appi