faraday_middleware-reddit 0.3.1 → 0.3.2

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
  SHA1:
3
- metadata.gz: f1718b47002e61165ef63b3f1f5bbff6bd7cdba7
4
- data.tar.gz: 6d217bf1fa38587e94d37c359752a316bdfe3041
3
+ metadata.gz: 126f0eb8d05054996da34d5bd58dbdc0f4382bf6
4
+ data.tar.gz: a74cfa20ebc7484a892ecf8a22b49a64c23fed0f
5
5
  SHA512:
6
- metadata.gz: 2a49a065608873ce2313d66bfe931de7782999b295094a1b9e9c52cf8f584036dd702e08a735950ea9d50516a87696347aacdafe029d14d8ca6db24743384b51
7
- data.tar.gz: f54ce650af7e67d80b67383638058f3144808a8d802381fcaeda72f2c5ee1ddfc2f3a2a1b49ea4c924fcddab61b12fc826b0be86e512f99d389e5e4e044292a8
6
+ metadata.gz: 2e00559891603a725434bdee4edc9bf87ec36f8493a5387ba6cbfa49cbabd2309e09f8613d871229b5ab264c27f5ed6a05d24fba186ee3bcc8c1fff40213f21b
7
+ data.tar.gz: 886f50b45522fdf140b6dc5c250d369d68cbcba1855df2fc90d207d0bbbeeaeba0f4dcd2bad535d91447aee8f1f3ba4171562c625a4fdc31c3b8376d419c0059
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'faraday'
4
+ require 'faraday_middleware/reddit/helpers/modhash'
4
5
 
5
6
  module FaradayMiddleware
6
7
  module Reddit
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+
3
+ module FaradayMiddleware
4
+ module Reddit
5
+ module ModhashHelpers
6
+ def self.included(base)
7
+ base.dependency do
8
+ require 'json' unless defined?(::JSON)
9
+ end
10
+ end
11
+
12
+ def extract_modhash(env)
13
+ return unless env[:body].include?('modhash')
14
+
15
+ body = env[:body]
16
+ body = JSON.parse(body) if body.is_a?(String) && !body.strip.empty?
17
+ body = body['json'] if body['json']
18
+ body['data']['modhash'] if body['data']
19
+ end
20
+ end
21
+ end
22
+ end
@@ -10,11 +10,9 @@ module FaradayMiddleware
10
10
  # pre-generated `cookie`. Performs an additional login request when no
11
11
  # valid login cookie is available.
12
12
  class Authentication < Faraday::Middleware
13
- AUTH_URL = 'https://ssl.reddit.com/post/login'.freeze
13
+ include ModhashHelpers
14
14
 
15
- dependency do
16
- require 'json' unless defined?(::JSON)
17
- end
15
+ AUTH_URL = 'https://ssl.reddit.com/api/login'.freeze
18
16
 
19
17
  def initialize(app, options)
20
18
  super(app)
@@ -37,6 +35,7 @@ module FaradayMiddleware
37
35
  apply_cookie(env)
38
36
  else
39
37
  authenticate(env)
38
+ apply_cookie(env)
40
39
  end
41
40
 
42
41
  @app.call(env)
@@ -56,6 +55,7 @@ module FaradayMiddleware
56
55
 
57
56
  def authenticate(env)
58
57
  response = Faraday.post AUTH_URL, user: @user, passwd: @passwd, rem: @rem, api_type: 'json'
58
+ env[:modhash] = extract_modhash(response.env)
59
59
  @cookie = response.headers['set-cookie']
60
60
  end
61
61
  end
@@ -10,9 +10,7 @@ module FaradayMiddleware
10
10
  # most POST and PUT requests. Modhashes are currently provided in response
11
11
  # to listing GET requests.
12
12
  class Modhash < Faraday::Middleware
13
- dependency do
14
- require 'json' unless defined?(::JSON)
15
- end
13
+ include ModhashHelpers
16
14
 
17
15
  def initialize(app, options = nil)
18
16
  super(app)
@@ -28,17 +26,8 @@ module FaradayMiddleware
28
26
  end
29
27
  end
30
28
 
31
- def from_json(data)
32
- if data.is_a?(String) && !data.strip.empty? && data.include?('modhash')
33
- JSON.parse(data)
34
- else
35
- data
36
- end
37
- end
38
-
39
29
  def update_modhash(env)
40
- body = from_json(env[:body])
41
- @modhash = body['data']['modhash'] if body['data']
30
+ @modhash = extract_modhash(env)
42
31
  rescue JSON::JSONError
43
32
  # Ignore -- modhash can be acquired lazily.
44
33
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module FaradayMiddleware
4
4
  module Reddit
5
- VERSION = '0.3.1'
5
+ VERSION = '0.3.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday_middleware-reddit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel O'Brien
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-26 00:00:00.000000000 Z
11
+ date: 2014-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -81,6 +81,7 @@ files:
81
81
  - Rakefile
82
82
  - faraday_middleware-reddit.gemspec
83
83
  - lib/faraday_middleware/reddit.rb
84
+ - lib/faraday_middleware/reddit/helpers/modhash.rb
84
85
  - lib/faraday_middleware/reddit/request/authentication.rb
85
86
  - lib/faraday_middleware/reddit/use/force_json.rb
86
87
  - lib/faraday_middleware/reddit/use/modhash.rb
@@ -107,9 +108,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
108
  version: '0'
108
109
  requirements: []
109
110
  rubyforge_project:
110
- rubygems_version: 2.0.3
111
+ rubygems_version: 2.2.2
111
112
  signing_key:
112
113
  specification_version: 4
113
114
  summary: A collection of Faraday middleware for use with the Reddit API.
114
115
  test_files:
115
116
  - spec/helper.rb
117
+ has_rdoc: