almundo-restconnector 1.0.0

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 +7 -0
  2. data/lib/almundo-restconnector.rb +93 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3f7623c2e5e2682e8375f6835eaf523fad50a43d
4
+ data.tar.gz: a9c9a83bb59133f4ddd3d26b5e61caa2865f51e4
5
+ SHA512:
6
+ metadata.gz: c00764e6305101ce5c5ee99c3f04fd93aa4ca9e6e181d3fcf5c1c869c42a9d4fc777fcda01f1d8a513f8318c7cac05c593468cdf143924d856bc82c81eeefa73
7
+ data.tar.gz: 28c018b7af2e7337edb66b4a2a41ab2ea99b6af33312ba7ee2fd6721a3ec5bd6c90c650a021a69825a1d9658865a6166e3b4ad6d867b56ac321e9042ae3d9d05
@@ -0,0 +1,93 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'logger'
4
+
5
+ class RestConnector
6
+
7
+ @@logger = Logger.new STDOUT
8
+
9
+ def initialize
10
+ @@logger.debug "[RestConnector] creating new instance"
11
+
12
+ @request
13
+ @uri
14
+ @response
15
+ @method
16
+ end
17
+
18
+ def get(uri)
19
+ @@logger.debug "[RestConnector] setting get request uri '#{uri}'"
20
+
21
+ @method = "GET"
22
+ @uri = URI uri
23
+
24
+ createHttpFromRequestAndUri
25
+
26
+ return self
27
+ end
28
+
29
+ def withQuery(key, value)
30
+ @@logger.debug "[RestConnector] setting query params '#{key}=#{value}' to request"
31
+
32
+ @uri.query = [@uri.query, "#{key}=#{URI::encode(value)}"].compact.join('&')
33
+
34
+ createHttpFromRequestAndUri
35
+ return self
36
+ end
37
+
38
+ def auth(user, passwd)
39
+ @@logger.debug "[RestConnector] setting basic auth #{user}::#{passwd}"
40
+
41
+ if @request == nil
42
+ raise ArgumentError.new "uoww! please set a request object before to authenticate!"
43
+ end
44
+ @request.basic_auth user, passwd
45
+ return self
46
+ end
47
+
48
+ def execute
49
+ @@logger.debug "[RestConnector] executing request"
50
+
51
+ if @request == nil
52
+ raise ArgumentError.new "uoww! please set a request object before execute!"
53
+ end
54
+
55
+ http = Net::HTTP.new(@uri.host, @uri.port)
56
+ http.read_timeout = 45
57
+ http.open_timeout = 10
58
+ http.start do |http|
59
+ @response = http.request(@request)
60
+ if "OK" == @response.message
61
+ @@logger.debug "[RestConnector] execute status 'OK'"
62
+ http.finish
63
+ return self;
64
+ else
65
+ @@logger.error "StatusCode #{@response.code} - #{@response.message}"
66
+ http.finish
67
+ raise "#{self.status}"
68
+ end
69
+ end
70
+
71
+ end
72
+
73
+ def body
74
+ return @response.body
75
+ end
76
+
77
+ def headers
78
+ return @response.to_hash.inspect
79
+ end
80
+
81
+ def status
82
+ return "(#{@response.code}) #{@response.message} <#{@response.class.name}>"
83
+ end
84
+
85
+ private
86
+
87
+ def createHttpFromRequestAndUri
88
+ if @method == "GET"
89
+ @request = Net::HTTP::Get.new(@uri)
90
+ end
91
+ end
92
+
93
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: almundo-restconnector
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Matías Sueiro
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-21 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: RestConnector to be used in almundo.com sites
14
+ email: matias.sueiro@almundo.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/almundo-restconnector.rb
20
+ homepage: http://rubygems.org/gems/almundo-restconnector
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.0.14
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: RestConnector lib - almundo.com
44
+ test_files: []