almundo-restconnector 1.0.6 → 2.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/almundo-restconnector.rb +74 -12
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d555fc3ade00f9421b05f384e80ea0cf3ce0e05
|
4
|
+
data.tar.gz: f30d731b93066bd415791b8f9f35284e51a3b4f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b550fce08af248b61e1777f8b454b72f4001f30cf11a7c4a204bb2e07a6c30dfc421adc9903781f29cc694c871161bda2391e06b92f3a766213d22ce3e150c7
|
7
|
+
data.tar.gz: a458b9e64d2e10717e200209fb61be3eee386b7712ec621497e0e94d984fa40fd97f546ce2d00ea5a0ccfb7b343f9157ad4fbd068b527ea076d5a361561ea025
|
@@ -1,13 +1,22 @@
|
|
1
1
|
require 'net/http'
|
2
2
|
require 'uri'
|
3
3
|
require 'logger'
|
4
|
+
require 'json'
|
4
5
|
|
5
6
|
class RestConnector
|
6
7
|
|
7
8
|
@@logger = Logger.new STDOUT
|
9
|
+
@@read_timeout = 45
|
10
|
+
@@open_timeout = 10
|
11
|
+
|
12
|
+
#######################
|
13
|
+
## => CONSTRUCTOR
|
14
|
+
#######################
|
8
15
|
|
9
16
|
def initialize
|
10
17
|
@@logger.debug "[RestConnector] creating new instance"
|
18
|
+
@@logger.debug "[RestConnector] read_timeout setted by default in 45s"
|
19
|
+
@@logger.debug "[RestConnector] open_timeout setted by default in 10s"
|
11
20
|
|
12
21
|
@request
|
13
22
|
@uri
|
@@ -15,8 +24,12 @@ class RestConnector
|
|
15
24
|
@method
|
16
25
|
end
|
17
26
|
|
27
|
+
#######################
|
28
|
+
## => VERB METHODS
|
29
|
+
#######################
|
30
|
+
|
18
31
|
def get(uri)
|
19
|
-
@@logger.debug "[RestConnector] setting
|
32
|
+
@@logger.debug "[RestConnector] setting GET request uri '#{uri}'"
|
20
33
|
|
21
34
|
@method = "GET"
|
22
35
|
@uri = URI uri
|
@@ -26,7 +39,36 @@ class RestConnector
|
|
26
39
|
return self
|
27
40
|
end
|
28
41
|
|
29
|
-
def
|
42
|
+
def post(uri)
|
43
|
+
@@logger.debug "[RestConnector] setting POST request uri '#{uri}'"
|
44
|
+
|
45
|
+
@method = "POST"
|
46
|
+
@uri = URI uri
|
47
|
+
|
48
|
+
create_http_request
|
49
|
+
|
50
|
+
return self
|
51
|
+
end
|
52
|
+
|
53
|
+
#######################
|
54
|
+
## => PARAMS METHODS
|
55
|
+
#######################
|
56
|
+
|
57
|
+
def data(obj)
|
58
|
+
@@logger.debug "[RestConnector] setting post request body '#{obj.to_s}'"
|
59
|
+
|
60
|
+
if @request == nil
|
61
|
+
raise ArgumentError.new "uoww! please set a request object before to add body!"
|
62
|
+
end
|
63
|
+
|
64
|
+
if !@request.request_body_permitted?
|
65
|
+
raise ArgumentError.new "uoww! you are trying to do an http request that doesn't support body!"
|
66
|
+
end
|
67
|
+
|
68
|
+
@request.body = obj.to_json
|
69
|
+
end
|
70
|
+
|
71
|
+
def query(key, value)
|
30
72
|
@@logger.debug "[RestConnector] setting query params '#{key}=#{value}' to request"
|
31
73
|
|
32
74
|
@uri.query = [@uri.query, "#{key}=#{URI::encode(value)}"].compact.join('&')
|
@@ -36,6 +78,10 @@ class RestConnector
|
|
36
78
|
return self
|
37
79
|
end
|
38
80
|
|
81
|
+
#######################
|
82
|
+
## => AUTH METHODS
|
83
|
+
#######################
|
84
|
+
|
39
85
|
def auth(user, passwd)
|
40
86
|
@@logger.debug "[RestConnector] setting basic auth #{user}::#{passwd}"
|
41
87
|
|
@@ -48,6 +94,10 @@ class RestConnector
|
|
48
94
|
return self
|
49
95
|
end
|
50
96
|
|
97
|
+
#######################
|
98
|
+
## => EXECUTE METHODS
|
99
|
+
#######################
|
100
|
+
|
51
101
|
def execute
|
52
102
|
@@logger.debug "[RestConnector] executing request"
|
53
103
|
|
@@ -56,24 +106,30 @@ class RestConnector
|
|
56
106
|
end
|
57
107
|
|
58
108
|
http = Net::HTTP.new(@uri.host, @uri.port)
|
59
|
-
http.read_timeout =
|
60
|
-
http.open_timeout =
|
109
|
+
http.read_timeout = @@read_timeout
|
110
|
+
http.open_timeout = @@open_timeout
|
61
111
|
|
62
112
|
http.start do |http|
|
63
113
|
@response = http.request(@request)
|
64
|
-
|
65
|
-
|
66
|
-
|
114
|
+
http.finish
|
115
|
+
|
116
|
+
case @response
|
117
|
+
when Net::HTTPSuccess, Net::HTTPRedirection then
|
118
|
+
|
119
|
+
@@logger.debug "[RestConnector] execution resulted is status '#{@response.code}'"
|
67
120
|
return self;
|
68
|
-
|
69
|
-
|
70
|
-
|
121
|
+
else
|
122
|
+
|
123
|
+
@@logger.error "StatusCode #{@response.code} - #{@response.message}"
|
71
124
|
raise "#{self.status}"
|
72
|
-
|
125
|
+
end
|
73
126
|
end
|
74
|
-
|
75
127
|
end
|
76
128
|
|
129
|
+
#######################
|
130
|
+
## => RESPONSE METHODS
|
131
|
+
#######################
|
132
|
+
|
77
133
|
def body
|
78
134
|
return @response.body
|
79
135
|
end
|
@@ -86,12 +142,18 @@ class RestConnector
|
|
86
142
|
return "(#{@response.code}) #{@response.message} <#{@response.class.name}>"
|
87
143
|
end
|
88
144
|
|
145
|
+
#######################
|
146
|
+
## => PRIVATE METHODS
|
147
|
+
#######################
|
148
|
+
|
89
149
|
private
|
90
150
|
|
91
151
|
def create_http_request
|
92
152
|
case @method
|
93
153
|
when "GET"
|
94
154
|
@request = Net::HTTP::Get.new(@uri)
|
155
|
+
when "POST"
|
156
|
+
@request = Net::HTTP::Post.new(@uri, initheader = {'Content-Type' =>'application/json'})
|
95
157
|
end
|
96
158
|
end
|
97
159
|
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: almundo-restconnector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matías Sueiro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
12
|
-
dependencies:
|
11
|
+
date: 2014-10-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.7.7
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.7.7
|
13
27
|
description: RestConnector to be used in almundo.com sites
|
14
28
|
email: matias.sueiro@almundo.com
|
15
29
|
executables: []
|