htty 1.1.4 → 1.1.5

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/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.4
1
+ 1.1.5
@@ -52,6 +52,7 @@ private
52
52
  'Building Requests',
53
53
  'Issuing Requests',
54
54
  'Inspecting Responses',
55
+ 'Preferences',
55
56
  nil]
56
57
  HTTY::CLI::Commands.select do |c|
57
58
  # Filter out commands not yet implemented.
@@ -60,7 +61,7 @@ private
60
61
  c.alias_for.instance_methods.collect(&:to_sym).include?(:perform))
61
62
  end.group_by(&:category).sort_by do |category, commands|
62
63
  # Group commands by category and give the categories a custom order.
63
- categories_in_order.index category
64
+ categories_in_order.index(category) || 0
64
65
  end.each do |category, commands|
65
66
  category ||= 'Miscellaneous'
66
67
  puts
@@ -0,0 +1,57 @@
1
+ require File.expand_path("#{File.dirname __FILE__}/../../preferences")
2
+ require File.expand_path("#{File.dirname __FILE__}/../command")
3
+ require File.expand_path("#{File.dirname __FILE__}/../display")
4
+ require File.expand_path("#{File.dirname __FILE__}/ssl_verification_off")
5
+ require File.expand_path("#{File.dirname __FILE__}/ssl_verification_on")
6
+
7
+ module HTTY; end
8
+
9
+ class HTTY::CLI; end
10
+
11
+ module HTTY::CLI::Commands; end
12
+
13
+ # Encapsulates the _ssl-verification_ command.
14
+ class HTTY::CLI::Commands::SslVerification < HTTY::CLI::Command
15
+
16
+ include HTTY::CLI::Display
17
+
18
+ # Returns the name of a category under which help for the _ssl-verification_
19
+ # command should appear.
20
+ def self.category
21
+ 'Preferences'
22
+ end
23
+
24
+ # Returns the help text for the _ssl-verification_ command.
25
+ def self.help
26
+ 'Displays the preference for SSL certificate verification'
27
+ end
28
+
29
+ # Returns the extended help text for the _ssl-verification_ command.
30
+ def self.help_extended
31
+ 'Displays the preference for SSL certificate verification. Does not ' +
32
+ "communicate with the host.\n" +
33
+ "\n" +
34
+ 'When issuing HTTP Secure requests, server certificates will be ' +
35
+ 'verified. You can disable and reenable this behavior.'
36
+ end
37
+
38
+ # Returns related command classes for the _ssl-verification_ command.
39
+ def self.see_also_commands
40
+ [HTTY::CLI::Commands::SslVerificationOff,
41
+ HTTY::CLI::Commands::SslVerificationOn]
42
+ end
43
+
44
+ # Performs the _ssl-verification_ command.
45
+ def perform
46
+ unless arguments.empty?
47
+ raise ArgumentError,
48
+ "wrong number of arguments (#{arguments.length} for 0)"
49
+ end
50
+
51
+ will_or_not = HTTY::Preferences.current.verify_certificates? ?
52
+ 'will' :
53
+ 'will not'
54
+ puts notice("SSL certificates #{will_or_not} be verified")
55
+ end
56
+
57
+ end
@@ -0,0 +1,42 @@
1
+ require File.expand_path("#{File.dirname __FILE__}/../../preferences")
2
+ require File.expand_path("#{File.dirname __FILE__}/../command")
3
+ require File.expand_path("#{File.dirname __FILE__}/ssl_verification")
4
+ require File.expand_path("#{File.dirname __FILE__}/ssl_verification_on")
5
+
6
+ module HTTY; end
7
+
8
+ class HTTY::CLI; end
9
+
10
+ module HTTY::CLI::Commands; end
11
+
12
+ # Encapsulates the _ssl-verification-off_ command.
13
+ class HTTY::CLI::Commands::SslVerificationOff < HTTY::CLI::Command
14
+
15
+ # Returns the name of a category under which help for the
16
+ # _ssl-verification-off_ command should appear.
17
+ def self.category
18
+ 'Preferences'
19
+ end
20
+
21
+ # Returns the help text for the _ssl-verification-off_ command.
22
+ def self.help
23
+ 'Disables SSL certificate verification'
24
+ end
25
+
26
+ # Returns the extended help text for the _ssl-verification-off_ command.
27
+ def self.help_extended
28
+ 'Disables SSL certificate verification. Does not communicate with the host.'
29
+ end
30
+
31
+ # Returns related command classes for the _ssl-verification-off_ command.
32
+ def self.see_also_commands
33
+ [HTTY::CLI::Commands::SslVerificationOn,
34
+ HTTY::CLI::Commands::SslVerification]
35
+ end
36
+
37
+ # Performs the _ssl-verification-off_ command.
38
+ def perform
39
+ HTTY::Preferences.current.verify_certificates = false
40
+ end
41
+
42
+ end
@@ -0,0 +1,43 @@
1
+ require File.expand_path("#{File.dirname __FILE__}/../../preferences")
2
+ require File.expand_path("#{File.dirname __FILE__}/../command")
3
+ require File.expand_path("#{File.dirname __FILE__}/ssl_verification")
4
+ require File.expand_path("#{File.dirname __FILE__}/ssl_verification_off")
5
+
6
+ module HTTY; end
7
+
8
+ class HTTY::CLI; end
9
+
10
+ module HTTY::CLI::Commands; end
11
+
12
+ # Encapsulates the _ssl-verification-on_ command.
13
+ class HTTY::CLI::Commands::SslVerificationOn < HTTY::CLI::Command
14
+
15
+ # Returns the name of a category under which help for the
16
+ # _ssl-verification-on_ command should appear.
17
+ def self.category
18
+ 'Preferences'
19
+ end
20
+
21
+ # Returns the help text for the _ssl-verification-on_ command.
22
+ def self.help
23
+ 'Reenables SSL certificate verification'
24
+ end
25
+
26
+ # Returns the extended help text for the _ssl-verification-on_ command.
27
+ def self.help_extended
28
+ 'Reenables SSL certificate verification. Does not communicate with the ' +
29
+ 'host.'
30
+ end
31
+
32
+ # Returns related command classes for the _ssl-verification-on_ command.
33
+ def self.see_also_commands
34
+ [HTTY::CLI::Commands::SslVerificationOff,
35
+ HTTY::CLI::Commands::SslVerification]
36
+ end
37
+
38
+ # Performs the _ssl-verification-on_ command.
39
+ def perform
40
+ HTTY::Preferences.current.verify_certificates = true
41
+ end
42
+
43
+ end
@@ -0,0 +1,26 @@
1
+ module HTTY; end
2
+
3
+ # Encapsulates _htty_ user preferences.
4
+ class HTTY::Preferences
5
+
6
+ # Returns the instance of HTTY::Preferences holding current preferences.
7
+ def self.current
8
+ @current ||= new
9
+ end
10
+
11
+ # Sets the boolean preference for whether server certificates are verified
12
+ # during HTTP Secure requests.
13
+ attr_writer :verify_certificates
14
+
15
+ # Initializes a new HTTY::Preferences object.
16
+ def initialize
17
+ @verify_certificates = true
18
+ end
19
+
20
+ # Returns +true+ if server certificates are verified during HTTP Secure
21
+ # requests.
22
+ def verify_certificates?
23
+ @verify_certificates
24
+ end
25
+
26
+ end
data/lib/htty/request.rb CHANGED
@@ -490,7 +490,8 @@ private
490
490
  end
491
491
 
492
492
  def field_matcher(name)
493
- Regexp.new "^#{Regexp.escape name}=?.*"
493
+ escaped = Regexp.escape(name)
494
+ Regexp.new "^(#{escaped}|#{escaped}=.*)$"
494
495
  end
495
496
 
496
497
  def request!(method)
@@ -1,6 +1,7 @@
1
1
  require 'net/http'
2
2
  require 'net/https'
3
3
  require 'uri'
4
+ require File.expand_path("#{File.dirname __FILE__}/preferences")
4
5
  require File.expand_path("#{File.dirname __FILE__}/response")
5
6
 
6
7
  module HTTY; end
@@ -73,7 +74,14 @@ private
73
74
 
74
75
  def self.request(request)
75
76
  http = Net::HTTP.new(request.uri.host, request.uri.port)
76
- http.use_ssl = true if request.uri.kind_of?(URI::HTTPS)
77
+
78
+ if request.uri.kind_of?(URI::HTTPS)
79
+ http.use_ssl = true
80
+ http.verify_mode = HTTY::Preferences.current.verify_certificates? ?
81
+ OpenSSL::SSL::VERIFY_PEER :
82
+ OpenSSL::SSL::VERIFY_NONE
83
+ end
84
+
77
85
  http.start do |host|
78
86
  http_response = yield(host)
79
87
  headers = []
@@ -14,7 +14,8 @@ Dir.glob "#{all_dir}/**/*/" do |this_dir|
14
14
  content
15
15
  end
16
16
 
17
- define_method :run_and_capture do |options={}|
17
+ define_method :run_and_capture do |*args|
18
+ options = args.first || {}
18
19
  stdin_filename = "#{this_dir}/stdin"
19
20
  htty_filename = "#{File.dirname __FILE__}/../../bin/htty"
20
21
  stderr_target = options[:combine_stdout_and_stderr] ?
@@ -54,9 +54,10 @@ describe HTTY::CLI::Commands::QuerySet do
54
54
  end
55
55
 
56
56
  it 'should play nice with nested fields' do
57
- @session.requests.last.uri.query = 'test[my][]=true'
58
- query_set = create_query_set_and_perform('test[my][]', 'false')
59
- query_set.session.requests.last.uri.query.should == 'test[my][]=false'
57
+ @session.requests.last.uri.query = 'test[my][]=1'
58
+ query_set = create_query_set_and_perform('test[my][]', '2')
59
+ query_set = create_query_set_and_perform('test', '3')
60
+ query_set.session.requests.last.uri.query.should == 'test[my][]=2&test=3'
60
61
  end
61
62
  end
62
63
 
@@ -0,0 +1,8 @@
1
+ require 'spec'
2
+ require File.expand_path("#{File.dirname __FILE__}/../../../lib/htty/preferences")
3
+
4
+ describe HTTY::Preferences do
5
+ it 'should maintain current preferences' do
6
+ HTTY::Preferences.current.should be_equal(HTTY::Preferences.current)
7
+ end
8
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: htty
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 25
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
7
8
  - 1
8
- - 4
9
- version: 1.1.4
9
+ - 5
10
+ version: 1.1.5
10
11
  platform: ruby
11
12
  authors:
12
13
  - Nils Jonsson
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-10-16 00:00:00 -05:00
18
+ date: 2010-10-20 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -25,6 +26,7 @@ dependencies:
25
26
  requirements:
26
27
  - - ">="
27
28
  - !ruby/object:Gem::Version
29
+ hash: 1
28
30
  segments:
29
31
  - 2
30
32
  - 0
@@ -40,6 +42,7 @@ dependencies:
40
42
  requirements:
41
43
  - - ">="
42
44
  - !ruby/object:Gem::Version
45
+ hash: 49
43
46
  segments:
44
47
  - 0
45
48
  - 8
@@ -55,6 +58,7 @@ dependencies:
55
58
  requirements:
56
59
  - - ">="
57
60
  - !ruby/object:Gem::Version
61
+ hash: 27
58
62
  segments:
59
63
  - 1
60
64
  - 3
@@ -70,6 +74,7 @@ dependencies:
70
74
  requirements:
71
75
  - - ">="
72
76
  - !ruby/object:Gem::Version
77
+ hash: 5
73
78
  segments:
74
79
  - 0
75
80
  - 6
@@ -148,6 +153,9 @@ files:
148
153
  - lib/htty/cli/commands/quit.rb
149
154
  - lib/htty/cli/commands/reuse.rb
150
155
  - lib/htty/cli/commands/scheme_set.rb
156
+ - lib/htty/cli/commands/ssl_verification.rb
157
+ - lib/htty/cli/commands/ssl_verification_off.rb
158
+ - lib/htty/cli/commands/ssl_verification_on.rb
151
159
  - lib/htty/cli/commands/status.rb
152
160
  - lib/htty/cli/commands/undo.rb
153
161
  - lib/htty/cli/commands/userinfo_clear.rb
@@ -164,6 +172,7 @@ files:
164
172
  - lib/htty/no_set_cookie_header_error.rb
165
173
  - lib/htty/ordered_hash.rb
166
174
  - lib/htty/payload.rb
175
+ - lib/htty/preferences.rb
167
176
  - lib/htty/request.rb
168
177
  - lib/htty/requests_util.rb
169
178
  - lib/htty/response.rb
@@ -181,6 +190,7 @@ files:
181
190
  - spec/unit/htty/cli/commands/query_set_spec.rb
182
191
  - spec/unit/htty/cli_spec.rb
183
192
  - spec/unit/htty/ordered_hash_spec.rb
193
+ - spec/unit/htty/preferences_spec.rb
184
194
  - spec/unit/htty/request_spec.rb
185
195
  - spec/unit/htty/response_spec.rb
186
196
  - spec/unit/htty/session_spec.rb
@@ -200,6 +210,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
200
210
  requirements:
201
211
  - - ">="
202
212
  - !ruby/object:Gem::Version
213
+ hash: 3
203
214
  segments:
204
215
  - 0
205
216
  version: "0"
@@ -208,6 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
219
  requirements:
209
220
  - - ">="
210
221
  - !ruby/object:Gem::Version
222
+ hash: 3
211
223
  segments:
212
224
  - 0
213
225
  version: "0"