faraday-digestauth 0.0.2 → 0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: 5e80cb294f034a9b9e14cb46d063ba8b1e9d466e
4
+ data.tar.gz: e622418ada1c6d1858d8d26263d35396a803efed
5
+ SHA512:
6
+ metadata.gz: a057d93c5969e4f9b29af8084712c2c5e2c6c83ec5eddc589ff14318ca890b6d40467c0ba3185a9ec98bd2e71ebc8b856c8b7c247da027c05b317765cddcb475
7
+ data.tar.gz: 225060eae656de664177c984f392240f0fcdfc369583c24907ad925c33e0b1bebd2d4f2e0d27399e5d5b13f881484f146c13dac2c068cc902d5ce36150b622f5
@@ -0,0 +1,24 @@
1
+ language: ruby
2
+ env:
3
+ global:
4
+ - "JRUBY_OPTS=-Xcext.enabled=true"
5
+ rvm:
6
+ - 2.1.0
7
+ - 2.0.0
8
+ - 1.9.3
9
+ - 1.9.2
10
+ - 1.8.7
11
+ - jruby-18mode
12
+ - jruby-19mode
13
+ - rbx
14
+ - ruby-head
15
+ - jruby-head
16
+ - ree
17
+ matrix:
18
+ allow_failures:
19
+ - rvm: 1.8.7
20
+ - rvm: ree
21
+ - rvm: jruby-18mode
22
+ - rvm: jruby-19mode
23
+ - rvm: jruby-head
24
+ fast_finish: true
data/README.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Faraday::DigestAuth
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/faraday-digestauth.png)](http://badge.fury.io/rb/faraday-digestauth)
4
+ [![Dependency Status](https://gemnasium.com/bhaberer/faraday-digestauth.png)](https://gemnasium.com/bhaberer/faraday-digestauth)
5
+ [![Build Status](https://travis-ci.org/bhaberer/faraday-digestauth.png?branch=master)](https://travis-ci.org/bhaberer/faraday-digestauth)
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
+ [![Code Climate](https://codeclimate.com/github/bhaberer/faraday-digestauth.png)](https://codeclimate.com/github/bhaberer/faraday-digestauth)
8
+
3
9
  This gem started as a direct copy of a gist belonging to @kapkaev
4
10
 
5
11
  It is located at https://gist.github.com/kapkaev/5088751
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
7
+ task :test => :spec
@@ -4,23 +4,24 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'faraday/digestauth/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "faraday-digestauth"
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"]
9
+ spec.authors = ['Brian Haberer', 'Ildar Kapkaev']
10
+ spec.email = ['bhaberer@gmail.com', 'kirs.box@gmail.com']
11
11
  spec.description = %q{Faraday extension to enable digest auth}
12
12
  spec.summary = %q{Digest Auth for Faraday}
13
- spec.homepage = "https://github.com/bhaberer/faraday-digestauth"
14
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/bhaberer/faraday-digestauth'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
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
- spec.require_paths = ["lib"]
20
-
21
- spec.add_dependency 'faraday'
22
- spec.add_dependency 'net-http-digest_auth'
19
+ spec.require_paths = ['lib']
23
20
 
21
+ spec.add_dependency 'faraday', '~> 0.7'
22
+ spec.add_dependency 'net-http-digest_auth', '~> 1.4'
24
23
  spec.add_development_dependency 'bundler', '~> 1.3'
25
- spec.add_development_dependency 'rake'
24
+ spec.add_development_dependency 'rake', '~> 10'
25
+ spec.add_development_dependency 'rspec', '~> 3'
26
+ spec.add_development_dependency 'coveralls', '~> 0.1'
26
27
  end
@@ -1,96 +1,15 @@
1
1
  # -*- coding: utf-8 -*-
2
+ require 'net/http/digest_auth'
2
3
  require 'faraday'
3
4
  require 'faraday/digestauth/version'
4
- require 'net/http/digest_auth'
5
-
6
- module Faraday
7
- # Public: A Faraday middleware to use digest authentication. Since order of
8
- # middlewares do care, it should be the first one of the Request middlewares
9
- # in order to work properly (due to how digest authentication works).
10
- #
11
- # If some requests using the connection don't need to use digest auth you
12
- # don't have to worry, the middleware will do nothing.
13
- #
14
- # It uses Net::HTTP::DigestAuth to generate the authorization header but it
15
- # should work with any adapter.
16
- #
17
- # Examples:
18
- #
19
- # connection = Faraday.new(...) do |connection|
20
- # connection.request :digest, USER, PASSWORD
21
- # end
22
- #
23
- # # You can also use it later with a connection:
24
- # connection.digest_auth('USER', 'PASSWORD')
25
- #
26
- class Request::DigestAuth < Faraday::Middleware
27
- # Public: Initializes a DigestAuth.
28
- #
29
- # app - The Faraday app.
30
- # user - A String with the user to authentication the connection.
31
- # password - A String with the password to authentication the connection.
32
- def initialize(app, user, password)
33
- super(app)
34
- @user, @password = user, password
35
- end
36
-
37
- # Public: Sends a first request with an empty body to get the
38
- # authentication headers and then send the same request with the body and
39
- # authorization header.
40
- #
41
- # env - A Hash with the request environment.
42
- #
43
- # Returns a Faraday::Response.
44
- def call(env)
45
- response = handshake(env)
46
- return response unless response.status == 401
47
-
48
- env[:request_headers]['Authorization'] = header(response)
49
- @app.call(env)
50
- end
51
-
52
- private
53
-
54
- # Internal: Sends the the request with an empry body.
55
- #
56
- # env - A Hash with the request environment.
57
- #
58
- # Returns a Faraday::Response.
59
- def handshake(env)
60
- env_without_body = env.dup
61
- env_without_body.delete(:body)
62
- @app.call(env_without_body)
63
- end
64
-
65
- # Internal: Builds the authorization header with the authentication data.
66
- #
67
- # response - A Faraday::Response with the authenticate headers.
68
- #
69
- # Returns a String with the DigestAuth header.
70
- def header(response)
71
- uri = response.env[:url]
72
- uri.user = @user
73
- uri.password = @password
74
-
75
- realm = response.headers['www-authenticate']
76
- method = response.env[:method].to_s.upcase
77
-
78
- Net::HTTP::DigestAuth.new.auth_header(uri, realm, method)
79
- end
80
- end
81
-
82
- class Connection
83
- # Public: Adds the digest auth middleware at the top and sets the user and
84
- # password.
85
- #
86
- # user - A String with the user.
87
- # password - A String with the password.
88
- #
89
- def digest_auth(user, password)
90
- self.builder.insert(0, Faraday::Request::DigestAuth, user, password)
91
- end
92
- end
93
- end
5
+ require 'faraday/digestauth/connection'
6
+ require 'faraday/request/digestauth'
94
7
 
95
8
  # Register the middleware as a Request middleware with the name :digest
96
- Faraday.register_middleware :request, digest: Faraday::Request::DigestAuth
9
+ if Faraday.respond_to?(:register_middleware) # Faraday 0.8
10
+ Faraday.register_middleware :request, :digest => Faraday::Request::DigestAuth
11
+ elsif Faraday::Request.respond_to?(:register_middleware) # Faraday 0.9
12
+ Faraday::Request.register_middleware :digest => Faraday::Request::DigestAuth
13
+ elsif Faraday::Request.respond_to?(:register_lookup_modules) # Faraday 0.7
14
+ Faraday::Request.register_lookup_modules :digest => :DigestAuth
15
+ end
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+ module Faraday
3
+ module DigestAuth
4
+ # Connection methods
5
+ module Connection
6
+ # Public: Adds the digest auth middleware at the top and sets the user and
7
+ # password.
8
+ #
9
+ # user - A String with the user.
10
+ # password - A String with the password.
11
+ #
12
+ def digest_auth(user, password)
13
+ builder.insert(0, Faraday::Request::DigestAuth, user, password)
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ Faraday::Connection.send :include, Faraday::DigestAuth::Connection
@@ -2,6 +2,6 @@
2
2
  module Faraday
3
3
  # Versioning Info
4
4
  module DigestAuth
5
- VERSION = '0.0.2'
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
@@ -0,0 +1,79 @@
1
+ # -*- coding: utf-8 -*-
2
+ module Faraday
3
+ class Request
4
+ # Public: A Faraday middleware to use digest authentication. Since order of
5
+ # middlewares do care, it should be the first one of the Request middlewares
6
+ # in order to work properly (due to how digest authentication works).
7
+ #
8
+ # If some requests using the connection don't need to use digest auth you
9
+ # don't have to worry, the middleware will do nothing.
10
+ #
11
+ # It uses Net::HTTP::DigestAuth to generate the authorization header but it
12
+ # should work with any adapter.
13
+ #
14
+ # Examples:
15
+ #
16
+ # connection = Faraday.new(...) do |connection|
17
+ # connection.request :digest, USER, PASSWORD
18
+ # end
19
+ #
20
+ # # You can also use it later with a connection:
21
+ # connection.digest_auth('USER', 'PASSWORD')
22
+ #
23
+ class DigestAuth < Faraday::Middleware
24
+ # Public: Initializes a DigestAuth.
25
+ #
26
+ # app - The Faraday app.
27
+ # user - A String with the user to authentication the connection.
28
+ # password - A String with the password to authentication the connection.
29
+ def initialize(app, user, password)
30
+ super(app)
31
+ @user, @password = user, password
32
+ end
33
+
34
+ # Public: Sends a first request with an empty body to get the
35
+ # authentication headers and then send the same request with the body and
36
+ # authorization header.
37
+ #
38
+ # env - A Hash with the request environment.
39
+ #
40
+ # Returns a Faraday::Response.
41
+ def call(env)
42
+ response = handshake(env)
43
+ return response unless response.status == 401
44
+
45
+ env[:request_headers]['Authorization'] = header(response)
46
+ @app.call(env)
47
+ end
48
+
49
+ private
50
+
51
+ # Internal: Sends the the request with an empry body.
52
+ #
53
+ # env - A Hash with the request environment.
54
+ #
55
+ # Returns a Faraday::Response.
56
+ def handshake(env)
57
+ env_without_body = env.dup
58
+ env_without_body.delete(:body)
59
+ @app.call(env_without_body)
60
+ end
61
+
62
+ # Internal: Builds the authorization header with the authentication data.
63
+ #
64
+ # response - A Faraday::Response with the authenticate headers.
65
+ #
66
+ # Returns a String with the DigestAuth header.
67
+ def header(response)
68
+ uri = response.env[:url]
69
+ uri.user = @user
70
+ uri.password = @password
71
+
72
+ realm = response.headers['www-authenticate']
73
+ method = response.env[:method].to_s.upcase
74
+
75
+ Net::HTTP::DigestAuth.new.auth_header(uri, realm, method)
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Faraday::Request::DigestAuth do
4
+
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
11
+
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ require 'coveralls'
2
+ require 'simplecov'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
9
+
10
+ require 'faraday/digestauth'
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-digestauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Brian Haberer
@@ -10,44 +9,39 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2014-02-14 00:00:00.000000000 Z
12
+ date: 2014-08-04 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: faraday
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - ~>
21
19
  - !ruby/object:Gem::Version
22
- version: '0'
20
+ version: '0.7'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - ~>
29
26
  - !ruby/object:Gem::Version
30
- version: '0'
27
+ version: '0.7'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: net-http-digest_auth
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - ~>
37
33
  - !ruby/object:Gem::Version
38
- version: '0'
34
+ version: '1.4'
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - ~>
45
40
  - !ruby/object:Gem::Version
46
- version: '0'
41
+ version: '1.4'
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: bundler
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - ~>
53
47
  - !ruby/object:Gem::Version
@@ -55,7 +49,6 @@ dependencies:
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - ~>
61
54
  - !ruby/object:Gem::Version
@@ -63,19 +56,45 @@ dependencies:
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: rake
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
- - - ! '>='
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '10'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '10'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '3'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: '3'
84
+ - !ruby/object:Gem::Dependency
85
+ name: coveralls
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
69
89
  - !ruby/object:Gem::Version
70
- version: '0'
90
+ version: '0.1'
71
91
  type: :development
72
92
  prerelease: false
73
93
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
94
  requirements:
76
- - - ! '>='
95
+ - - ~>
77
96
  - !ruby/object:Gem::Version
78
- version: '0'
97
+ version: '0.1'
79
98
  description: Faraday extension to enable digest auth
80
99
  email:
81
100
  - bhaberer@gmail.com
@@ -85,37 +104,42 @@ extensions: []
85
104
  extra_rdoc_files: []
86
105
  files:
87
106
  - .gitignore
107
+ - .travis.yml
88
108
  - Gemfile
89
109
  - LICENSE.txt
90
110
  - README.md
91
111
  - Rakefile
92
112
  - faraday-digestauth.gemspec
93
113
  - lib/faraday/digestauth.rb
114
+ - lib/faraday/digestauth/connection.rb
94
115
  - lib/faraday/digestauth/version.rb
116
+ - lib/faraday/request/digestauth.rb
117
+ - spec/faraday-digestauth_spec.rb
118
+ - spec/spec_helper.rb
95
119
  homepage: https://github.com/bhaberer/faraday-digestauth
96
120
  licenses:
97
121
  - MIT
122
+ metadata: {}
98
123
  post_install_message:
99
124
  rdoc_options: []
100
125
  require_paths:
101
126
  - lib
102
127
  required_ruby_version: !ruby/object:Gem::Requirement
103
- none: false
104
128
  requirements:
105
129
  - - ! '>='
106
130
  - !ruby/object:Gem::Version
107
131
  version: '0'
108
132
  required_rubygems_version: !ruby/object:Gem::Requirement
109
- none: false
110
133
  requirements:
111
134
  - - ! '>='
112
135
  - !ruby/object:Gem::Version
113
136
  version: '0'
114
137
  requirements: []
115
138
  rubyforge_project:
116
- rubygems_version: 1.8.25
139
+ rubygems_version: 2.2.2
117
140
  signing_key:
118
- specification_version: 3
141
+ specification_version: 4
119
142
  summary: Digest Auth for Faraday
120
- test_files: []
121
- has_rdoc:
143
+ test_files:
144
+ - spec/faraday-digestauth_spec.rb
145
+ - spec/spec_helper.rb