tor_requests 0.3.2 → 0.4.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.
data/Gemfile CHANGED
@@ -12,4 +12,4 @@ group :development do
12
12
  gem "jeweler", "~> 1.8.3"
13
13
  gem "simplecov"
14
14
  gem "socksify"
15
- end
15
+ end
data/README.rdoc CHANGED
@@ -11,14 +11,15 @@
11
11
  res = Tor::HTTP.get("google.com", "/", 80)
12
12
  p res.code
13
13
  p res.body
14
-
15
- OR
16
-
17
- res = Tor::HTTP.get("google.com")
14
+
15
+ res = Tor::HTTP.post('posttestserver.com', {"var" => "variable"}, '/post.php?dir=example', 80)
16
+ p res.code
17
+ p res.body
18
18
 
19
19
  OR
20
20
 
21
21
  res = Tor::HTTP.get(URI('http://google.com/'))
22
+ res = Tor::HTTP.post(URI('http://posttestserver.com/post.php?dir=example'), {"var" => "variable"})
22
23
 
23
24
  The default port configuration is 9050 and ip configuration is 127.0.0.1. If you need to change configuration, you can use:
24
25
 
@@ -27,6 +28,14 @@ The default port configuration is 9050 and ip configuration is 127.0.0.1. If you
27
28
  config.port = 9050
28
29
  end
29
30
 
31
+ You can also set additional custom header fields, e.g. User-Agent:
32
+
33
+ Tor.configure do |config|
34
+ config.add_header('User-Agent', 'Netscape 2.0')
35
+ end
36
+
37
+
38
+
30
39
  == Contributing to tor_requests
31
40
 
32
41
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
@@ -42,3 +51,4 @@ The default port configuration is 9050 and ip configuration is 127.0.0.1. If you
42
51
  Copyright (c) 2012 Bruno Ghisi. See LICENSE.txt for
43
52
  further details.
44
53
 
54
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.4.0
@@ -8,9 +8,16 @@ module Tor
8
8
  attr_accessor :ip,
9
9
  :port
10
10
 
11
+ attr_reader :headers
12
+
13
+ def add_header(header, value)
14
+ @headers[header] = value
15
+ end
16
+
11
17
  def initialize
12
18
  @ip = '127.0.0.1'
13
19
  @port = 9050
20
+ @headers = Hash.new
14
21
  end
15
22
 
16
23
  end
data/lib/tor/http.rb CHANGED
@@ -15,12 +15,41 @@ module Tor
15
15
  port = uri_or_host.port
16
16
  end
17
17
  Net::HTTP.SOCKSProxy(Tor.configuration.ip, Tor.configuration.port).start(host, port) do |http|
18
- res = http.get(path || uri_or_host.path)
18
+ request = Net::HTTP::Get.new(path || uri_or_host.path)
19
+ Tor.configuration.headers.each do |header, value|
20
+ request.delete(header)
21
+ request.add_field(header, value)
22
+ end
23
+
24
+ res = http.request(request);
19
25
  end
20
26
  res
21
27
  end
22
28
 
29
+ def self.post(uri_or_host, post_options = {}, path = nil, port = nil)
30
+ res = ""
31
+ host = nil
32
+ if path
33
+ host = uri_or_host
34
+ else
35
+ host = uri_or_host.host
36
+ port = uri_or_host.port
37
+ path = uri_or_host.request_uri
38
+ end
39
+
40
+ Net::HTTP.SOCKSProxy(Tor.configuration.ip, Tor.configuration.port).start(host, port) do |http|
41
+ request = Net::HTTP::Post.new(path)
42
+ request.set_form_data(post_options)
43
+ Tor.configuration.headers.each do |header, value|
44
+ request.delete(header)
45
+ request.add_field(header, value)
46
+ end
47
+ res = http.request(request)
48
+ end
49
+ res
50
+ end
51
+
23
52
  end
24
53
 
25
54
  end
26
-
55
+
@@ -7,11 +7,24 @@ describe "Configure" do
7
7
  Tor::Configuration.new.port.should eq(9050)
8
8
  end
9
9
 
10
+ it "default headers" do
11
+ Tor::Configuration.new.headers.should eq(Hash.new)
12
+ end
13
+
14
+
10
15
  it "default ip" do
11
16
  Tor::Configuration.new.ip.should eq('127.0.0.1')
12
17
  end
13
18
 
14
19
  context "initialize" do
20
+
21
+ it "default headers" do
22
+ config = Tor::Configuration.new
23
+ config.add_header('User-Agent', 'Netscape 2.0')
24
+ config.headers.should eq({'User-Agent' => 'Netscape 2.0'})
25
+ end
26
+
27
+
15
28
  it "default port" do
16
29
  config = Tor::Configuration.new
17
30
  config.port = 99
data/spec/http_spec.rb CHANGED
@@ -28,4 +28,29 @@ describe "Http" do
28
28
 
29
29
  end
30
30
 
31
+ describe "post" do
32
+
33
+ context "with invalid parameters" do
34
+ it "does not work" do
35
+ expect { Tor::HTTP.post("google.com") }.to raise_error
36
+ end
37
+ end
38
+
39
+ context "with URI parameter" do
40
+ it "works" do
41
+ res = Tor::HTTP.post(URI('http://posttestserver.com/post.php?dir=example'), {"q" => "query", "var" => "variable"})
42
+ res.code.should eq("200")
43
+ end
44
+ end
45
+
46
+ context "with host, path and port parameters" do
47
+ it "works" do
48
+ res = Tor::HTTP.post('posttestserver.com', {"q" => "query", "var" => "variable"}, '/post.php?dir=example', 80)
49
+ res.code.should eq("200")
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
31
56
  end
@@ -10,6 +10,7 @@ describe "Configure" do
10
10
  Tor.configure do |config|
11
11
  config.ip = "a"
12
12
  config.port = 9051
13
+ config.add_header('User-Agent', 'Netscape 2.0')
13
14
  end
14
15
 
15
16
  proxy = Net::HTTP.SOCKSProxy("127.0.0.1", 9050)
data/spec/spec_helper.rb CHANGED
@@ -12,3 +12,4 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
12
12
  RSpec.configure do |config|
13
13
 
14
14
  end
15
+
data/tor_requests.gemspec CHANGED
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{tor_requests}
8
- s.version = "0.3.2"
7
+ s.name = "tor_requests"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Bruno Ghisi}]
12
- s.date = %q{2012-11-19}
13
- s.description = %q{Create anonymously requests through Tor network}
14
- s.email = %q{brunogh@gmail.com}
11
+ s.authors = ["Bruno Ghisi"]
12
+ s.date = "2013-07-20"
13
+ s.description = "Create anonymously requests through Tor network"
14
+ s.email = "brunogh@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.rdoc"
@@ -36,11 +36,11 @@ Gem::Specification.new do |s|
36
36
  "spec/spec_helper.rb",
37
37
  "tor_requests.gemspec"
38
38
  ]
39
- s.homepage = %q{http://github.com/brunogh/tor_requests}
40
- s.licenses = [%q{MIT}]
41
- s.require_paths = [%q{lib}]
42
- s.rubygems_version = %q{1.8.7}
43
- s.summary = %q{Create anonymously requests through Tor network}
39
+ s.homepage = "http://github.com/brunogh/tor_requests"
40
+ s.licenses = ["MIT"]
41
+ s.require_paths = ["lib"]
42
+ s.rubygems_version = "1.8.15"
43
+ s.summary = "Create anonymously requests through Tor network"
44
44
 
45
45
  if s.respond_to? :specification_version then
46
46
  s.specification_version = 3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tor_requests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-19 00:00:00.000000000Z
12
+ date: 2013-07-20 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &76465750 !ruby/object:Gem::Requirement
16
+ requirement: &70124356799160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.8.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *76465750
24
+ version_requirements: *70124356799160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &76465500 !ruby/object:Gem::Requirement
27
+ requirement: &70124356798520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.12'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *76465500
35
+ version_requirements: *70124356798520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &76465250 !ruby/object:Gem::Requirement
38
+ requirement: &70124356797860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *76465250
46
+ version_requirements: *70124356797860
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &76465010 !ruby/object:Gem::Requirement
49
+ requirement: &70124356797300 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.8.3
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *76465010
57
+ version_requirements: *70124356797300
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &76464760 !ruby/object:Gem::Requirement
60
+ requirement: &70124356796760 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *76464760
68
+ version_requirements: *70124356796760
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: socksify
71
- requirement: &76464510 !ruby/object:Gem::Requirement
71
+ requirement: &70124356796120 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *76464510
79
+ version_requirements: *70124356796120
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: socksify
82
- requirement: &76464250 !ruby/object:Gem::Requirement
82
+ requirement: &70124356795540 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *76464250
90
+ version_requirements: *70124356795540
91
91
  description: Create anonymously requests through Tor network
92
92
  email: brunogh@gmail.com
93
93
  executables: []
@@ -129,7 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
129
  version: '0'
130
130
  segments:
131
131
  - 0
132
- hash: -1046472205
132
+ hash: -1434211554258270422
133
133
  required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  none: false
135
135
  requirements:
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  version: '0'
139
139
  requirements: []
140
140
  rubyforge_project:
141
- rubygems_version: 1.8.7
141
+ rubygems_version: 1.8.15
142
142
  signing_key:
143
143
  specification_version: 3
144
144
  summary: Create anonymously requests through Tor network