simple-http 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b4588e9e8c027217ca27a55496429b8c17b1bb49
4
- data.tar.gz: be034b0620f7358c4e3d806ca4a0ab8b7c16e77d
3
+ metadata.gz: 6297e0992a3d447dd6803a3692d48a737e63420c
4
+ data.tar.gz: c33f894babece51848969ccccf3a3f6425231cdf
5
5
  SHA512:
6
- metadata.gz: 25d97c4098cdd837a45c7cf4b6377d943cd29fde1a51db79b7f52f9457658127a411f910b618d23bb42c368f1dc3ef49c47219f929b72ddd96df552a3639ac27
7
- data.tar.gz: f8044c467a6f30109a21cfa2d86d5b4c9fadeec52f930375502a11a7dfa0f2a74ae932a669417e7c205e7610feb77a01cbf091e7674296dfe6fba64bf8788df9
6
+ metadata.gz: ad178342ff251fcc2702f09432c96406b37095cec930cf7917f33b97be6f08a214f7a5ce77b10acbdc7385369d20699ad3c8745ee237df5129904d396453f882
7
+ data.tar.gz: 8586f61a9529b83894a76e13020ff7e06840fd70b103676fb76a9f8461eeb524f2a16ea33de44535927325a8456bc6f8b683daf9c6d69b1cee8d4c09cb1e898a
@@ -0,0 +1,16 @@
1
+ # Author:: radiospiel (mailto:eno@radiospiel.org)
2
+ # Copyright:: Copyright (c) 2011-2015 radiospiel
3
+ # License:: Distributes under the terms of the Modified BSD License, see LICENSE.BSD for details.
4
+
5
+ module Simple::HTTP::Assertions
6
+ def assert_http_error(expected_status, &block)
7
+ http_error = assert_raises(Simple::HTTP::Error, &block)
8
+ assert_equal(expected_status, http_error.code)
9
+ end
10
+
11
+ def assert_http_redirects_to(expected_location, &block)
12
+ http_error = assert_raises(Simple::HTTP::Error, &block)
13
+ assert_includes([301, 302], http_error.code)
14
+ assert_equal(expected_location, http_error.response["Location"])
15
+ end
16
+ end
@@ -5,5 +5,5 @@
5
5
 
6
6
  module Simple; end
7
7
  class Simple::HTTP
8
- VERSION = "0.1.0"
8
+ VERSION = "0.1.1"
9
9
  end
data/lib/simple/http.rb CHANGED
@@ -36,6 +36,11 @@ class Simple::HTTP
36
36
  # When set, appends this to all request URLs
37
37
  attr :default_params, true
38
38
 
39
+ #
40
+ # When set, sets Authorization headers to all requests. Must be an
41
+ # array [ username, password ].
42
+ attr :basic_auth, true
43
+
39
44
  def initialize
40
45
  self.follows_redirections = true
41
46
  end
@@ -89,7 +94,15 @@ class Simple::HTTP
89
94
  end
90
95
 
91
96
  uri = URI.parse(url)
97
+ unless uri.is_a?(URI::HTTP)
98
+ raise ArgumentError, "Invalid URL: #{url}"
99
+ end
100
+
92
101
  http = Net::HTTP.new(uri.host, uri.port)
102
+ if uri.scheme == "https"
103
+ http.use_ssl = true
104
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
105
+ end
93
106
 
94
107
  #
95
108
  # build request
@@ -146,6 +159,11 @@ class Simple::HTTP
146
159
  klass = REQUEST_CLASSES.fetch(method)
147
160
  request = klass.new(uri.request_uri)
148
161
 
162
+ if basic_auth
163
+ username, password = *basic_auth
164
+ request.basic_auth(username, password)
165
+ end
166
+
149
167
  # set request headers
150
168
  # unless headers && !headers.empty?
151
169
  # # TODO: set headers
@@ -0,0 +1,20 @@
1
+ # Author:: radiospiel (mailto:eno@radiospiel.org)
2
+ # Copyright:: Copyright (c) 2011-2015 radiospiel
3
+ # License:: Distributes under the terms of the Modified BSD License, see LICENSE.BSD for details.
4
+
5
+ require_relative 'test_helper'
6
+
7
+ class SimpleHttpTest < Simple::HTTP::TestCase
8
+ def test_assert_http_error
9
+ assert_http_error(456) do
10
+ http.get "http://eu.httpbin.org/status/456"
11
+ end
12
+ end
13
+
14
+ def test_assert_http_redirects_to
15
+ http.follows_redirections = false
16
+ assert_http_redirects_to "http://eu.httpbin.org" do
17
+ http.get "http://eu.httpbin.org/redirect-to?url=http://eu.httpbin.org"
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ # Author:: radiospiel (mailto:eno@radiospiel.org)
2
+ # Copyright:: Copyright (c) 2011-2015 radiospiel
3
+ # License:: Distributes under the terms of the Modified BSD License, see LICENSE.BSD for details.
4
+
5
+ require_relative 'test_helper'
6
+
7
+ class SimpleHttpTest < Simple::HTTP::TestCase
8
+ def test_basic_auth
9
+ http.basic_auth = [ "user", "passwd" ]
10
+ http.get "http://eu.httpbin.org/basic-auth/user/passwd"
11
+ end
12
+
13
+ def test_basic_auth_invalid
14
+ http.basic_auth = [ "wronguser", "passwd" ]
15
+ assert_http_error 401 do
16
+ http.get "http://eu.httpbin.org/basic-auth/user/passwd"
17
+ end
18
+ end
19
+
20
+ def test_basic_auth_missing
21
+ http.basic_auth = [ "wronguser", "passwd" ]
22
+ assert_http_error 401 do
23
+ http.get "http://eu.httpbin.org/basic-auth/user/passwd"
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ # Author:: radiospiel (mailto:eno@radiospiel.org)
2
+ # Copyright:: Copyright (c) 2011-2015 radiospiel
3
+ # License:: Distributes under the terms of the Modified BSD License, see LICENSE.BSD for details.
4
+
5
+ require_relative 'test_helper'
6
+
7
+ class RedirectionTest < Simple::HTTP::TestCase
8
+ def test_follows_redirections
9
+ html = http.get "http://eu.httpbin.org/redirect-to?url=http://eu.httpbin.org"
10
+ assert_match(/title.*httpbin/, html)
11
+ end
12
+
13
+ def test_raises_error_on_invalid_redirect_location
14
+ assert_raise(ArgumentError) {
15
+ http.get "http://eu.httpbin.org/redirect-to?url=foo"
16
+ }
17
+ end
18
+ end
@@ -4,11 +4,14 @@
4
4
 
5
5
  require_relative 'test_helper'
6
6
 
7
- class SimpleHttpTest < Test::Unit::TestCase
8
- HTTP = Simple::HTTP.new
7
+ class SimpleHttpTest < Simple::HTTP::TestCase
8
+ def test_http_google
9
+ google = http.get "http://google.com"
10
+ assert_match(/doctype/, google)
11
+ end
9
12
 
10
- def test_loaded
11
- google = HTTP.get "http://google.com"
13
+ def test_https_google
14
+ google = http.get "https://google.com"
12
15
  assert_match(/doctype/, google)
13
16
  end
14
17
  end
data/test/test_helper.rb CHANGED
@@ -8,4 +8,15 @@ require 'test/unit'
8
8
  # add_filter "test/*.rb"
9
9
  # end
10
10
 
11
- require "simple/http"
11
+ require 'simple/http'
12
+ require 'simple/http/assertions'
13
+
14
+ class Simple::HTTP::TestCase < Test::Unit::TestCase
15
+ include Simple::HTTP::Assertions
16
+
17
+ attr :http
18
+
19
+ def setup
20
+ @http = Simple::HTTP.new
21
+ end
22
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - radiospiel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-16 00:00:00.000000000 Z
11
+ date: 2015-09-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Simple code for simple HTTP requests
14
14
  email: eno@radiospiel.org
@@ -18,10 +18,14 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - README.md
20
20
  - lib/simple/http.rb
21
+ - lib/simple/http/assertions.rb
21
22
  - lib/simple/http/errors.rb
22
23
  - lib/simple/http/expires_in.rb
23
24
  - lib/simple/http/result.rb
24
25
  - lib/simple/http/version.rb
26
+ - test/assertions_test.rb
27
+ - test/basic_auth_test.rb
28
+ - test/redirection_test.rb
25
29
  - test/simple_http_test.rb
26
30
  - test/test_helper.rb
27
31
  homepage: http://github.com/radiospiel/simple-http