almundo-restconnector 1.0.6 → 2.0.7

Sign up to get free protection for your applications and to get access to all the features.
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: []