restool 0.1.0 → 0.1.5

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
  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
  - - ">="