faraday_middleware-reddit 0.3.1 → 0.3.2

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: 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: