restool 0.1.0 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/restool/mock/restool.rb +25 -0
- data/lib/restool/settings/loader.rb +7 -11
- data/lib/restool/traversal/converter.rb +15 -3
- data/lib/restool/traversal/object.rb +1 -13
- data/lib/restool/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9ce87d4cd969d5298ee7c90baef25ac9f2f2c3b725e4ae241a1b00a1b46114b
|
4
|
+
data.tar.gz: 45766774466195ec86b84048d1aa659302d8cc4b50771a4a73c19246f15d4ec5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f62e492a295bd06e4f8699b19f98d895a66f5fabfd286ac8c64bcc3907194bc3ea463eed3206ee96567fd2793221a295bee8af2cffefa6698e98fbf61acd6e76
|
7
|
+
data.tar.gz: 379a2006d01cbc9d35e08030f70e690414f77f9d8ce17fe6dc75a8d97a3493daf3b7153dc1d59cbd6b9a18b749accf5e85238ea2d1763bc2f62e97212e77d3ea
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Restool
|
2
|
+
module Mock
|
3
|
+
def self.create(service_name, &response_handler)
|
4
|
+
service_config = Restool::Settings::Loader.load(service_name)
|
5
|
+
|
6
|
+
# remote_client = Restool::Service::RemoteClient.new(service_config.host,
|
7
|
+
# service_config.verify_ssl,
|
8
|
+
# service_config.persistent,
|
9
|
+
# service_config.timeout)
|
10
|
+
|
11
|
+
class FakeRemoteClient
|
12
|
+
def initialize
|
13
|
+
end
|
14
|
+
|
15
|
+
def make_request(path, operation_method, params, headers, basic_auth)
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
remote_client = double(make_request)
|
22
|
+
Restool::Service::RestoolService.new(service_config, response_handler, remote_client)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -105,7 +105,7 @@ module Restool
|
|
105
105
|
def self.config
|
106
106
|
return @config if @config
|
107
107
|
|
108
|
-
files_to_load = Dir['config/restool
|
108
|
+
files_to_load = Dir['config/restool/*.yml'] + Dir['config/restool/*.yaml'] + ['config/restool.yml', 'config/restool.yaml', 'config/restool.json']
|
109
109
|
|
110
110
|
@config = { 'services' => [] }
|
111
111
|
|
@@ -114,12 +114,12 @@ module Restool
|
|
114
114
|
|
115
115
|
extension = File.extname(file_name)
|
116
116
|
|
117
|
-
content = if extension == '.yml'
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
117
|
+
content = if extension == '.yml' || extension == '.yaml'
|
118
|
+
YAML.load_file(file_name)
|
119
|
+
elsif extension == '.json'
|
120
|
+
json_file = File.read(file_name)
|
121
|
+
JSON.parse(json_file)
|
122
|
+
end
|
123
123
|
|
124
124
|
@config['services'] += content['services']
|
125
125
|
end
|
@@ -127,10 +127,6 @@ module Restool
|
|
127
127
|
@config
|
128
128
|
end
|
129
129
|
|
130
|
-
def self.validate
|
131
|
-
# TODO: perform validations
|
132
|
-
end
|
133
|
-
|
134
130
|
end
|
135
131
|
end
|
136
132
|
end
|
@@ -19,6 +19,9 @@ module Restool
|
|
19
19
|
def self.convert(request_response, response_representation, representations)
|
20
20
|
object = Restool::Traversal::Object.new
|
21
21
|
|
22
|
+
object.class.__send__(:attr_accessor, :_raw)
|
23
|
+
object.__send__("_raw=", request_response)
|
24
|
+
|
22
25
|
if request_response.is_a?(Array)
|
23
26
|
request_response.map do |element|
|
24
27
|
map_response_to_representation(response_representation, element, object, representations)
|
@@ -32,10 +35,15 @@ module Restool
|
|
32
35
|
|
33
36
|
def self.map_response_to_representation(representation, request_response, object, representations)
|
34
37
|
representation.fields.each do |field|
|
35
|
-
value = request_response[field.key]
|
38
|
+
value = request_response[field.key.to_s] || request_response[field.key.to_sym]
|
36
39
|
|
37
40
|
object.class.__send__(:attr_accessor, var_name(field))
|
38
41
|
|
42
|
+
if value.nil?
|
43
|
+
set_var(object, field, nil)
|
44
|
+
next
|
45
|
+
end
|
46
|
+
|
39
47
|
if Restool::Traversal::TRAVERSAL_TYPES.include?(field.type.to_sym)
|
40
48
|
map_primitive_field(value, field, object)
|
41
49
|
else
|
@@ -53,7 +61,7 @@ module Restool
|
|
53
61
|
parse_value(field.type, value)
|
54
62
|
end
|
55
63
|
|
56
|
-
object
|
64
|
+
set_var(object, field, new_value)
|
57
65
|
end
|
58
66
|
|
59
67
|
def self.map_complex_field(value, field, object, representations)
|
@@ -65,6 +73,10 @@ module Restool
|
|
65
73
|
convert(value, operation_representation, representations)
|
66
74
|
end
|
67
75
|
|
76
|
+
set_var(object, field, new_value)
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.set_var(object, field, new_value)
|
68
80
|
object.__send__("#{var_name(field)}=", new_value)
|
69
81
|
end
|
70
82
|
|
@@ -75,7 +87,7 @@ module Restool
|
|
75
87
|
def self.parse_value(type, value)
|
76
88
|
case type
|
77
89
|
when Restool::Traversal::TRAVERSAL_TYPE_STRING
|
78
|
-
value
|
90
|
+
value.to_s
|
79
91
|
when Restool::Traversal::TRAVERSAL_TYPE_INTEGER
|
80
92
|
Integer(value)
|
81
93
|
when Restool::Traversal::TRAVERSAL_TYPE_DECIMAL
|
@@ -1,17 +1,5 @@
|
|
1
1
|
module Restool
|
2
2
|
module Traversal
|
3
|
-
class Object
|
4
|
-
|
5
|
-
def to_hash
|
6
|
-
instance_variables
|
7
|
-
.inject({}) do |acum, var|
|
8
|
-
acum[var.to_s.delete('@')] = instance_variable_get(var)
|
9
|
-
acum
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
alias_method :to_h, :to_hash
|
14
|
-
|
15
|
-
end
|
3
|
+
class Object; end
|
16
4
|
end
|
17
5
|
end
|
data/lib/restool/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Andres Zeni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: persistent_http
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2'
|
27
|
-
description: Make HTTP requests and handle its responses using simple method calls
|
27
|
+
description: Make HTTP requests and handle its responses using simple method calls.
|
28
28
|
Restool turns your HTTP API and its responses into Ruby interfaces.
|
29
29
|
email:
|
30
30
|
- juanandreszeni@gmail.com
|
@@ -33,6 +33,7 @@ extensions: []
|
|
33
33
|
extra_rdoc_files: []
|
34
34
|
files:
|
35
35
|
- lib/restool.rb
|
36
|
+
- lib/restool/mock/restool.rb
|
36
37
|
- lib/restool/service/operation_definer.rb
|
37
38
|
- lib/restool/service/remote_client.rb
|
38
39
|
- lib/restool/service/remote_connector.rb
|
@@ -56,7 +57,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
56
57
|
requirements:
|
57
58
|
- - ">="
|
58
59
|
- !ruby/object:Gem::Version
|
59
|
-
version:
|
60
|
+
version: '0'
|
60
61
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
62
|
requirements:
|
62
63
|
- - ">="
|