alovak-network 1.1.4 → 1.2.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.
@@ -26,18 +26,30 @@ module Network
26
26
  VERIFY_NONE = OpenSSL::SSL::VERIFY_NONE
27
27
  VERIFY_PEER = OpenSSL::SSL::VERIFY_PEER
28
28
 
29
- def initialize(uri)
29
+ # options are:
30
+ # :read_timeout
31
+ # :open_timeout
32
+ # :verify_peer
33
+ # :proxy_addr
34
+ # :proxy_port
35
+ # :proxy_user
36
+ # :proxy_pass
37
+ def initialize(uri, options = {})
30
38
  @uri = URI.parse(uri)
31
- @read_timeout = READ_TIMEOUT
32
- @open_timeout = OPEN_TIMEOUT
33
- @verify_peer = false
39
+ @read_timeout = options[:read_timeout] || READ_TIMEOUT
40
+ @open_timeout = options[:open_timeout] || OPEN_TIMEOUT
41
+ @verify_peer = options[:verify_peer] || false
34
42
  @debugger_stream = nil
35
43
  @headers = {}
44
+ @proxy_addr = options[:proxy_addr]
45
+ @proxy_port = options[:proxy_port]
46
+ @proxy_user = options[:proxy_user]
47
+ @proxy_pass = options[:proxy_pass]
36
48
  end
37
49
 
38
50
  def post(data)
39
51
  try_request do
40
- log_request(data)
52
+ log_request(data, "POST")
41
53
  response = nil
42
54
  ms = Benchmark.realtime do
43
55
  response = http.post(uri.path, data, post_headers(data))
@@ -47,6 +59,19 @@ module Network
47
59
  end
48
60
  end
49
61
 
62
+ def get(data)
63
+ try_request do
64
+ log_request(data, "GET")
65
+ response = nil
66
+ query_string = uri.path + data
67
+ ms = Benchmark.realtime do
68
+ response = http.get(query_string)
69
+ end
70
+ log_response(response, ms)
71
+ response
72
+ end
73
+ end
74
+
50
75
  def use_ssl?
51
76
  @uri.scheme == "https"
52
77
  end
@@ -58,7 +83,7 @@ module Network
58
83
  private
59
84
 
60
85
  def http
61
- http = Net::HTTP.new(uri.host, uri.port)
86
+ http = Net::HTTP.new(uri.host, uri.port, @proxy_addr, @proxy_port, @proxy_user, @proxy_pass)
62
87
  configure_timeouts(http)
63
88
  configure_debugging(http)
64
89
 
@@ -123,9 +148,9 @@ module Network
123
148
  logger.info(message) if logger
124
149
  end
125
150
 
126
- def log_request(data)
151
+ def log_request(data, method)
127
152
  log "[#{sender}]" if sender
128
- log "POST #{uri}"
153
+ log "#{method} #{uri}"
129
154
  log "--->"
130
155
  log (request_filter ? request_filter.call(data) : data)
131
156
  end
data/lib/network.rb CHANGED
@@ -3,7 +3,12 @@ require 'net/https'
3
3
  require 'network/connection'
4
4
 
5
5
  module Network
6
- def self.post(url, data)
7
- Connection.new(url).post(data)
6
+ def self.post(url, data, options = {})
7
+ Connection.new(url, options).post(data)
8
8
  end
9
+
10
+ def self.get(url, data, options = {})
11
+ Connection.new(url, options).get(data)
12
+ end
13
+
9
14
  end
@@ -19,7 +19,7 @@ class TestConnectionLogging < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  def test_log_request
22
- @connection.send(:log_request, "request data")
22
+ @connection.send(:log_request, "request data", "POST")
23
23
  log = @connection.logger.log
24
24
 
25
25
  assert_match /POST http:\/\/example.com\/path/, log
@@ -29,7 +29,7 @@ class TestConnectionLogging < Test::Unit::TestCase
29
29
 
30
30
  def test_log_request_with_sender
31
31
  @connection.sender = "ModuleName"
32
- @connection.send(:log_request, "request data")
32
+ @connection.send(:log_request, "request data", "POST")
33
33
  assert_match /ModuleName/, @connection.logger.log
34
34
  end
35
35
 
@@ -45,7 +45,7 @@ class TestConnectionLogging < Test::Unit::TestCase
45
45
 
46
46
  def test_request_filtering
47
47
  @connection.request_filter = Proc.new {|req| "#{req} is filtered"}
48
- @connection.send(:log_request, "request")
48
+ @connection.send(:log_request, "request", "POST")
49
49
  assert_match /request is filtered/, @connection.logger.log
50
50
  end
51
51
 
@@ -89,6 +89,15 @@ class TestConnection < Test::Unit::TestCase
89
89
  @connection.post("hello")
90
90
  end
91
91
 
92
+ def test_get_methods
93
+ sec = sequence('order')
94
+ @connection.expects(:log_request).in_sequence(sec)
95
+ @connection.expects(:http).in_sequence(sec).returns(stub('http', :get => true))
96
+ @connection.expects(:log_response).in_sequence(sec)
97
+
98
+ @connection.get("query=hello")
99
+ end
100
+
92
101
  def test_default_timeouts
93
102
  assert_equal Network::Connection::READ_TIMEOUT, @connection.read_timeout
94
103
  assert_equal Network::Connection::OPEN_TIMEOUT, @connection.open_timeout
@@ -5,4 +5,9 @@ class TestNetwork < Test::Unit::TestCase
5
5
  Network::Connection.any_instance.expects(:post)
6
6
  Network.post('http://site.com/', "some data")
7
7
  end
8
+
9
+ def test_make_get_throught_connection
10
+ Network::Connection.any_instance.expects(:get)
11
+ Network.get('http://site.com/', 'query=helo')
12
+ end
8
13
  end
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alovak-network
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 2
9
+ - 0
10
+ version: 1.2.0
5
11
  platform: ruby
6
12
  authors:
7
13
  - Pavel Gabriel
@@ -9,19 +15,25 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-02-14 00:00:00 +02:00
18
+ date: 2010-09-06 00:00:00 +03:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: mocha
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 53
30
+ segments:
31
+ - 0
32
+ - 9
33
+ - 7
23
34
  version: 0.9.7
24
- version:
35
+ type: :runtime
36
+ version_requirements: *id001
25
37
  description: HTTP/HTTPS communication module with logging, filtering and easy SSL configuration
26
38
  email: alovak@gmail.com
27
39
  executables: []
@@ -33,6 +45,9 @@ extra_rdoc_files: []
33
45
  files:
34
46
  - lib/network/connection.rb
35
47
  - lib/network.rb
48
+ - test/network/test_network.rb
49
+ - test/network/test_connection.rb
50
+ - test/test_helper.rb
36
51
  has_rdoc: true
37
52
  homepage: http://github.com/alovak/network/
38
53
  licenses: []
@@ -43,21 +58,27 @@ rdoc_options: []
43
58
  require_paths:
44
59
  - lib
45
60
  required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
46
62
  requirements:
47
63
  - - ">="
48
64
  - !ruby/object:Gem::Version
65
+ hash: 3
66
+ segments:
67
+ - 0
49
68
  version: "0"
50
- version:
51
69
  required_rubygems_version: !ruby/object:Gem::Requirement
70
+ none: false
52
71
  requirements:
53
72
  - - ">="
54
73
  - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
55
77
  version: "0"
56
- version:
57
78
  requirements: []
58
79
 
59
80
  rubyforge_project:
60
- rubygems_version: 1.3.5
81
+ rubygems_version: 1.3.7
61
82
  signing_key:
62
83
  specification_version: 3
63
84
  summary: HTTP/HTTPS communication module based on ruby net/http, net/https modules