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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00b59168b2f8bf6dda90e1764dfb4e86b31fc35b9467a6dbe128fa456747cfe3
4
- data.tar.gz: '09267a1659146bfafdc1433ea3164f071f8f9af8325c405dbb145918ec630aa5'
3
+ metadata.gz: b9ce87d4cd969d5298ee7c90baef25ac9f2f2c3b725e4ae241a1b00a1b46114b
4
+ data.tar.gz: 45766774466195ec86b84048d1aa659302d8cc4b50771a4a73c19246f15d4ec5
5
5
  SHA512:
6
- metadata.gz: bc937386969581255334f5c648b1241c2eb59867f54cb4eaa2c968c6a3f1a1c29d781ef8ad621a554a4c21a2e35f576d20c7de0ba873c8383db784596f318943
7
- data.tar.gz: 6dae0d57818581ce78f335b814adc9921f81ffa5279d7848b0612dc8b657ba15226740c6e254df86e99f53c60e99c75c3fd99546a477d86dc600f860d408ea2b
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/*'] + ['config/restool.yml', 'config/restool.json']
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
- YAML.load_file(file_name)
119
- elsif extension == '.json'
120
- json_file = File.read(file_name)
121
- JSON.parse(json_file)
122
- end
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.__send__("#{var_name(field)}=", new_value)
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
@@ -1,3 +1,3 @@
1
1
  module Restool
2
- VERSION = "0.1.0"
2
+ VERSION = '0.1.5'
3
3
  end
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.0
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-04-11 00:00:00.000000000 Z
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: 2.3.0
60
+ version: '0'
60
61
  required_rubygems_version: !ruby/object:Gem::Requirement
61
62
  requirements:
62
63
  - - ">="