faraday-digestauth 0.2.0 → 0.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
- metadata.gz: 5e80cb294f034a9b9e14cb46d063ba8b1e9d466e
4
- data.tar.gz: e622418ada1c6d1858d8d26263d35396a803efed
3
+ metadata.gz: 1c01446f0b7a664c1686708031360d4de062e0a4
4
+ data.tar.gz: 3c7447336b7b528bb1f9fe0ae111cccca2e9127f
5
5
  SHA512:
6
- metadata.gz: a057d93c5969e4f9b29af8084712c2c5e2c6c83ec5eddc589ff14318ca890b6d40467c0ba3185a9ec98bd2e71ebc8b856c8b7c247da027c05b317765cddcb475
7
- data.tar.gz: 225060eae656de664177c984f392240f0fcdfc369583c24907ad925c33e0b1bebd2d4f2e0d27399e5d5b13f881484f146c13dac2c068cc902d5ce36150b622f5
6
+ metadata.gz: a579073989264f24fdebe0f9ef56572af56fa667c8bc998c65e284ba1979acb6afb4140b157aa5936699e161e8e2d95dc632c938fb220609bd3bc8c3a089df83
7
+ data.tar.gz: a8721c84ad509ec0e97143565b1586d5ff049836e4077d3b60de699cb55708f702ab7fa36235bbb7120ac6a7156f708f1d6ad7825c8b0c5beaf1b68a07ccc157
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --colour
2
+ --format documentation
3
+
data/.rubocop.yml ADDED
@@ -0,0 +1,72 @@
1
+ AllCops:
2
+ Exclude:
3
+ - vendor/**/*
4
+ - bin/**/*
5
+
6
+ LineLength:
7
+ Enabled: false
8
+
9
+ MethodLength:
10
+ Enabled: false
11
+
12
+ ClassLength:
13
+ Enabled: false
14
+
15
+ Documentation:
16
+ # don't require classes to be documented
17
+ Enabled: false
18
+
19
+ CollectionMethods:
20
+ # don't prefer map to collect, recuce to inject
21
+ Enabled: false
22
+
23
+ Encoding:
24
+ # no need to always specify encoding
25
+ Enabled: false
26
+
27
+ StringLiterals:
28
+ # use single or double-quoted strings, as you please
29
+ Enabled: false
30
+
31
+ Void:
32
+ # == operator used in void context in specs
33
+ Enabled: false
34
+
35
+ SignalException:
36
+ # prefer raise to fail
37
+ EnforcedStyle: only_raise
38
+
39
+ RaiseArgs:
40
+ # don't care for what kind of raise
41
+ Enabled: false
42
+
43
+ PerlBackrefs:
44
+ # TODO: regular expression matching with $1, $2, etc.
45
+ Enabled: false
46
+
47
+ BlockNesting:
48
+ # TODO: fix too much nesting
49
+ Max: 4
50
+
51
+ Lambda:
52
+ # TODO: replace all lambda with -> or Proc
53
+ Enabled: false
54
+
55
+ Blocks:
56
+ # allow multi-line blocks like expect { }
57
+ Enabled: false
58
+
59
+ WordArray:
60
+ # %w vs. [ '', ... ]
61
+ Enabled: false
62
+
63
+ CyclomaticComplexity:
64
+ Enabled: false
65
+
66
+ DoubleNegation:
67
+ Enabled: false
68
+
69
+ PredicateName:
70
+ Enabled: false
71
+
72
+ inherit_from: .rubocop_todo.yml
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,16 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`
2
+ # on 2014-09-26 16:00:47 -0400 using RuboCop version 0.26.1.
3
+ # The point is for the user to remove these configuration records
4
+ # one by one as the offenses are removed from the code base.
5
+ # Note that changes in the inspected code, or installation of new
6
+ # versions of RuboCop, may require this file to be generated again.
7
+
8
+ # Offense count: 1
9
+ # Configuration parameters: Exclude.
10
+ Style/FileName:
11
+ Enabled: false
12
+
13
+ # Offense count: 3
14
+ # Configuration parameters: MaxSlashes.
15
+ Style/RegexpLiteral:
16
+ Enabled: false
data/.travis.yml CHANGED
@@ -3,22 +3,18 @@ env:
3
3
  global:
4
4
  - "JRUBY_OPTS=-Xcext.enabled=true"
5
5
  rvm:
6
- - 2.1.0
6
+ - 2.1.2
7
7
  - 2.0.0
8
8
  - 1.9.3
9
- - 1.9.2
10
- - 1.8.7
11
- - jruby-18mode
12
9
  - jruby-19mode
13
- - rbx
10
+ - rbx-2.2.10
14
11
  - ruby-head
15
12
  - jruby-head
16
13
  - ree
17
14
  matrix:
18
15
  allow_failures:
19
- - rvm: 1.8.7
20
16
  - rvm: ree
17
+ - rvm: ruby-head
21
18
  - rvm: jruby-18mode
22
- - rvm: jruby-19mode
23
19
  - rvm: jruby-head
24
20
  fast_finish: true
data/README.md CHANGED
@@ -6,12 +6,6 @@
6
6
  [![Coverage Status](https://coveralls.io/repos/bhaberer/faraday-digestauth/badge.png?branch=master)](https://coveralls.io/r/bhaberer/faraday-digestauth?branch=m aster)
7
7
  [![Code Climate](https://codeclimate.com/github/bhaberer/faraday-digestauth.png)](https://codeclimate.com/github/bhaberer/faraday-digestauth)
8
8
 
9
- This gem started as a direct copy of a gist belonging to @kapkaev
10
-
11
- It is located at https://gist.github.com/kapkaev/5088751
12
-
13
- I merely gemmed it up so that I could use it in multiple places.
14
-
15
9
  ## Installation
16
10
 
17
11
  Add this line to your application's Gemfile:
@@ -47,3 +41,11 @@ end
47
41
  3. Commit your changes (`git commit -am 'Add some feature'`)
48
42
  4. Push to the branch (`git push origin my-new-feature`)
49
43
  5. Create new Pull Request
44
+
45
+ ## History
46
+
47
+ This gem was extracted from [Hyperclient](https://github.com/codegram/hyperclient) by [@oriolgual](https://github.com/oriolgual).
48
+
49
+ ## License
50
+
51
+ MIT License, see [LICENSE](LICENSE.txt) for details.
data/Rakefile CHANGED
@@ -1,7 +1,11 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new
5
5
 
6
- task :default => :spec
7
- task :test => :spec
6
+ task test: :spec
7
+
8
+ require 'rubocop/rake_task'
9
+ RuboCop::RakeTask.new
10
+
11
+ task default: [:rubocop, :spec]
@@ -6,14 +6,14 @@ require 'faraday/digestauth/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'faraday-digestauth'
8
8
  spec.version = Faraday::DigestAuth::VERSION
9
- spec.authors = ['Brian Haberer', 'Ildar Kapkaev']
10
- spec.email = ['bhaberer@gmail.com', 'kirs.box@gmail.com']
11
- spec.description = %q{Faraday extension to enable digest auth}
12
- spec.summary = %q{Digest Auth for Faraday}
9
+ spec.authors = ['Brian Haberer', 'Oriol Gual']
10
+ spec.email = ['bhaberer@gmail.com', 'oriol.gual@gmail.com']
11
+ spec.description = 'Faraday extension to enable digest auth'
12
+ spec.summary = 'Digest Auth for Faraday'
13
13
  spec.homepage = 'https://github.com/bhaberer/faraday-digestauth'
14
14
  spec.license = 'MIT'
15
15
 
16
- spec.files = `git ls-files`.split($/)
16
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
@@ -24,4 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'rake', '~> 10'
25
25
  spec.add_development_dependency 'rspec', '~> 3'
26
26
  spec.add_development_dependency 'coveralls', '~> 0.1'
27
+ spec.add_development_dependency 'rubocop', '~> 0.26.1'
28
+ spec.add_development_dependency 'webmock', '~> 1'
27
29
  end
@@ -7,9 +7,9 @@ require 'faraday/request/digestauth'
7
7
 
8
8
  # Register the middleware as a Request middleware with the name :digest
9
9
  if Faraday.respond_to?(:register_middleware) # Faraday 0.8
10
- Faraday.register_middleware :request, :digest => Faraday::Request::DigestAuth
10
+ Faraday.register_middleware :request, digest: Faraday::Request::DigestAuth
11
11
  elsif Faraday::Request.respond_to?(:register_middleware) # Faraday 0.9
12
- Faraday::Request.register_middleware :digest => Faraday::Request::DigestAuth
12
+ Faraday::Request.register_middleware digest: Faraday::Request::DigestAuth
13
13
  elsif Faraday::Request.respond_to?(:register_lookup_modules) # Faraday 0.7
14
- Faraday::Request.register_lookup_modules :digest => :DigestAuth
14
+ Faraday::Request.register_lookup_modules digest: :DigestAuth
15
15
  end
@@ -2,6 +2,6 @@
2
2
  module Faraday
3
3
  # Versioning Info
4
4
  module DigestAuth
5
- VERSION = '0.2.0'
5
+ VERSION = '0.2.1'
6
6
  end
7
7
  end
@@ -26,9 +26,13 @@ module Faraday
26
26
  # app - The Faraday app.
27
27
  # user - A String with the user to authentication the connection.
28
28
  # password - A String with the password to authentication the connection.
29
- def initialize(app, user, password)
29
+ # opts - A hash with options
30
+ # - keep_body_on_handshake: if set to truthy, will also send
31
+ # the original request body
32
+ def initialize(app, user, password, opts = {})
30
33
  super(app)
31
34
  @user, @password = user, password
35
+ @opts = opts
32
36
  end
33
37
 
34
38
  # Public: Sends a first request with an empty body to get the
@@ -55,7 +59,7 @@ module Faraday
55
59
  # Returns a Faraday::Response.
56
60
  def handshake(env)
57
61
  env_without_body = env.dup
58
- env_without_body.delete(:body)
62
+ env_without_body.delete(:body) unless @opts[:keep_body_on_handshake]
59
63
  @app.call(env_without_body)
60
64
  end
61
65
 
@@ -1,13 +1,38 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Faraday::Request::DigestAuth do
4
+ let(:connection) do
5
+ Faraday.new('http://api.example.org/') do |builder|
6
+ builder.request :digest, 'USER', 'PASS'
7
+ builder.adapter :net_http
8
+ end
9
+ end
10
+
11
+ describe 'when the server does not return a 401' do
12
+ it 'does nothing' do
13
+ stub_request(:get, 'http://api.example.org/productions/1')
14
+ .to_return(status: 500, body: 'Foo body')
15
+
16
+ response = connection.get('/productions/1')
17
+ expect(response.body).to eq 'Foo body'
18
+ end
19
+ end
20
+
21
+ describe 'when the server returns a 401' do
22
+ let(:first_call_headers) { 'Digest realm="MyApp", algorithm=MD5' }
23
+ let(:second_call_headers) { 'Digest username="USER", realm="MyApp", uri="/", algorithm="MD5"' }
24
+ it 'authenticates using digest' do
25
+ stub_request(:get, 'http://api.example.org/productions/1')
26
+ .with(body: nil)
27
+ .to_return(status: 401, headers: { 'www-authenticate' => first_call_headers })
4
28
 
5
- # This doesn't do anything yet.
6
- it 'should allow users to build faraday objects with digest creds' do
7
- @conn = Faraday.new(:url => 'http://localhost/') do |f|
8
- f.request(:digest, :username, :password)
9
- f.adapter Faraday.default_adapter
10
- end
29
+ stub_request(:get, 'http://api.example.org/productions/1')
30
+ .with(body: "{\"foo\":1}",
31
+ headers: { 'Authorization' => %r{second_call_headers} })
32
+ .to_return(body: '{"resource": "This is the resource"}',
33
+ headers: { content_type: 'application/json' })
11
34
 
35
+ connection.get('/productions/1')
36
+ end
12
37
  end
13
38
  end
data/spec/spec_helper.rb CHANGED
@@ -8,3 +8,4 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
8
8
  SimpleCov.start
9
9
 
10
10
  require 'faraday/digestauth'
11
+ require 'webmock/rspec'
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-digestauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Haberer
8
- - Ildar Kapkaev
8
+ - Oriol Gual
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-04 00:00:00.000000000 Z
12
+ date: 2015-04-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -95,15 +95,46 @@ dependencies:
95
95
  - - ~>
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0.1'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rubocop
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: 0.26.1
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 0.26.1
112
+ - !ruby/object:Gem::Dependency
113
+ name: webmock
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: '1'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '1'
98
126
  description: Faraday extension to enable digest auth
99
127
  email:
100
128
  - bhaberer@gmail.com
101
- - kirs.box@gmail.com
129
+ - oriol.gual@gmail.com
102
130
  executables: []
103
131
  extensions: []
104
132
  extra_rdoc_files: []
105
133
  files:
106
134
  - .gitignore
135
+ - .rspec
136
+ - .rubocop.yml
137
+ - .rubocop_todo.yml
107
138
  - .travis.yml
108
139
  - Gemfile
109
140
  - LICENSE.txt
@@ -136,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
167
  version: '0'
137
168
  requirements: []
138
169
  rubyforge_project:
139
- rubygems_version: 2.2.2
170
+ rubygems_version: 2.4.4
140
171
  signing_key:
141
172
  specification_version: 4
142
173
  summary: Digest Auth for Faraday