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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/almundo-restconnector.rb +74 -12
  3. metadata +17 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb785edd4362e01172dbf1f739875646cd2b9bf2
4
- data.tar.gz: f6ca8e80f111e3ebbcec4931654e44a80637d083
3
+ metadata.gz: 6d555fc3ade00f9421b05f384e80ea0cf3ce0e05
4
+ data.tar.gz: f30d731b93066bd415791b8f9f35284e51a3b4f1
5
5
  SHA512:
6
- metadata.gz: d7758da062334f57c401acf067aac45e0191b16b7798e31337d5d027664930a0c274f812fe8816f35ad3ea4bf98f387b4d21da7d27432ae0ec2cddfa90454510
7
- data.tar.gz: 309ad49ecbc7976886fc6658a0319246c952afe120096f846ef95b1095cdd3ee7b45df407c53372f460b0de93fc296b60ad494382565bdad174b54f807bf2d3b
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 get request uri '#{uri}'"
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 withQuery(key, value)
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 = 45
60
- http.open_timeout = 10
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
- if "OK" == @response.message
65
- @@logger.debug "[RestConnector] execute status 'OK'"
66
- http.finish
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
- else
69
- @@logger.error "StatusCode #{@response.code} - #{@response.message}"
70
- http.finish
121
+ else
122
+
123
+ @@logger.error "StatusCode #{@response.code} - #{@response.message}"
71
124
  raise "#{self.status}"
72
- end
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: 1.0.6
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-21 00:00:00.000000000 Z
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: []