almundo-restconnector 1.0.0

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 +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: []