service_api 0.0.6 → 0.0.7
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 +4 -4
- data/lib/service_api.rb +1 -0
- data/lib/service_api/base_faraday.rb +6 -0
- data/lib/service_api/normalize_options.rb +75 -0
- data/lib/service_api/normalize_options/base.rb +11 -0
- data/lib/service_api/normalize_options/hash_with_mapper_hash.rb +11 -0
- data/lib/service_api/normalize_options/normal_with_mapper_array.rb +11 -0
- data/lib/service_api/normalize_options/normal_with_mapper_hash.rb +17 -0
- data/lib/service_api/version.rb +1 -1
- data/spec/functionals/normalize_options.rb +23 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a233ba5aaad956201a6d780ea2ad8cbea68665ae
|
4
|
+
data.tar.gz: f2cf1eca512dec7924ec6adec10f7fe8a1730132
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8dbeb8061d5fdf16f337ee22e79555a844b9626df5775ebbb022f659f2809e5ca135ba059047734d8305c406730bc2b293335f4e4a8fadbff404f444681f0866
|
7
|
+
data.tar.gz: a5f96bc72486937e3d72bf7ecfb4565187043546d0d0d9e11db32b9dacd20d092caec937fc26764f59304ede81ee5c0627aab548adb34f02173cf68724a66d83
|
data/lib/service_api.rb
CHANGED
@@ -65,6 +65,12 @@ module ServiceApi
|
|
65
65
|
"#{base_url}#{uri}#{query_params_formatted}"
|
66
66
|
end
|
67
67
|
|
68
|
+
# Mapping arguments passing to method, convert normal arguments to hash, and mapping hash keys
|
69
|
+
#
|
70
|
+
def normalize_options(mapper, *options)
|
71
|
+
NormalizeOptions.new(mapper, options).call
|
72
|
+
end
|
73
|
+
|
68
74
|
private
|
69
75
|
|
70
76
|
def connection
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'service_api/normalize_options/base'
|
2
|
+
require 'service_api/normalize_options/hash_with_mapper_hash'
|
3
|
+
require 'service_api/normalize_options/normal_with_mapper_array'
|
4
|
+
require 'service_api/normalize_options/normal_with_mapper_hash'
|
5
|
+
|
6
|
+
class NormalizeOptions
|
7
|
+
attr_reader :mapper, :options
|
8
|
+
|
9
|
+
def initialize(mapper, *options)
|
10
|
+
@mapper = mapper
|
11
|
+
@options = options
|
12
|
+
end
|
13
|
+
|
14
|
+
def parse
|
15
|
+
if hash_options?
|
16
|
+
parse_hash_options
|
17
|
+
elsif arguments_count_corrent?
|
18
|
+
parse_normal_options
|
19
|
+
else
|
20
|
+
raise ArgumentError
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def parse_hash_options
|
27
|
+
if mapper_hash?
|
28
|
+
parse_hash_options_with_mapper_hash
|
29
|
+
else
|
30
|
+
first_options
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def parse_normal_options
|
35
|
+
if mapper_hash?
|
36
|
+
parse_normal_options_with_mapper_hash
|
37
|
+
elsif mapper_array?
|
38
|
+
parse_normal_options_with_mapper_array
|
39
|
+
else
|
40
|
+
{}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def parse_hash_options_with_mapper_hash
|
45
|
+
NormalizeOptions::HashWithMapperHash.new(first_options, mapper).call
|
46
|
+
end
|
47
|
+
|
48
|
+
def parse_normal_options_with_mapper_hash
|
49
|
+
NormalizeOptions::NormalWithMapperHash.new(options, mapper).call
|
50
|
+
end
|
51
|
+
|
52
|
+
def parse_normal_options_with_mapper_array
|
53
|
+
NormalizeOptions::NormalWithMapperArray.new(options, mapper).call
|
54
|
+
end
|
55
|
+
|
56
|
+
def mapper_hash?
|
57
|
+
mapper.class == Hash
|
58
|
+
end
|
59
|
+
|
60
|
+
def mapper_array?
|
61
|
+
mapper.class == Array
|
62
|
+
end
|
63
|
+
|
64
|
+
def first_options
|
65
|
+
@first_options ||= options.first
|
66
|
+
end
|
67
|
+
|
68
|
+
def hash_options?
|
69
|
+
options.count == 1 && first_options.class == Hash
|
70
|
+
end
|
71
|
+
|
72
|
+
def arguments_count_corrent?
|
73
|
+
options.count == mapper.count
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class NormalizeOptions
|
2
|
+
class NormalWithMapperHash < NormalizeOptions::Base
|
3
|
+
def call
|
4
|
+
options.each_with_index do |option, index|
|
5
|
+
new_options[mapper[mapper_key[index]]] = option
|
6
|
+
end
|
7
|
+
|
8
|
+
new_options
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def mapper_key
|
14
|
+
mapper.keys
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/service_api/version.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NormalizeOptions do
|
4
|
+
describe 'hash options' do
|
5
|
+
it 'return hash with mapped keys' do
|
6
|
+
expect(NormalizeOptions.new({ e1: :o1, e2: :o2 }, e1: 'test1', e2: 'test2').parse).to eq(o1: 'test1', o2: 'test2')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'return original hash' do
|
10
|
+
expect(NormalizeOptions.new([:e1, :e2], e1: 'test1', e2: 'test2').parse).to eq(e1: 'test1', e2: 'test2')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'normal options' do
|
15
|
+
it 'return hash with mapped keys' do
|
16
|
+
expect(NormalizeOptions.new({ e1: :o1, e2: :o2 }, 'test1', 'test2').parse).to eq(o1: 'test1', o2: 'test2')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'return correct hash' do
|
20
|
+
expect(NormalizeOptions.new([:e1, :e2], 'test1', 'test2').parse).to eq(e1: 'test1', e2: 'test2')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: service_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Krzysztof Wawer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -136,10 +136,16 @@ files:
|
|
136
136
|
- Rakefile
|
137
137
|
- lib/service_api.rb
|
138
138
|
- lib/service_api/base_faraday.rb
|
139
|
+
- lib/service_api/normalize_options.rb
|
140
|
+
- lib/service_api/normalize_options/base.rb
|
141
|
+
- lib/service_api/normalize_options/hash_with_mapper_hash.rb
|
142
|
+
- lib/service_api/normalize_options/normal_with_mapper_array.rb
|
143
|
+
- lib/service_api/normalize_options/normal_with_mapper_hash.rb
|
139
144
|
- lib/service_api/uri_tokens.rb
|
140
145
|
- lib/service_api/version.rb
|
141
146
|
- service_api.gemspec
|
142
147
|
- spec/functionals/base_faraday_spec.rb
|
148
|
+
- spec/functionals/normalize_options.rb
|
143
149
|
- spec/functionals/uri_tokens_spec.rb
|
144
150
|
- spec/spec_helper.rb
|
145
151
|
homepage: http://github.com/wafcio/service_api
|
@@ -168,5 +174,6 @@ specification_version: 4
|
|
168
174
|
summary: Set of useful modules, classes for api gems
|
169
175
|
test_files:
|
170
176
|
- spec/functionals/base_faraday_spec.rb
|
177
|
+
- spec/functionals/normalize_options.rb
|
171
178
|
- spec/functionals/uri_tokens_spec.rb
|
172
179
|
- spec/spec_helper.rb
|