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 +4 -4
- data/lib/faraday_middleware/reddit.rb +1 -0
- data/lib/faraday_middleware/reddit/helpers/modhash.rb +22 -0
- data/lib/faraday_middleware/reddit/request/authentication.rb +4 -4
- data/lib/faraday_middleware/reddit/use/modhash.rb +2 -13
- data/lib/faraday_middleware/reddit/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 126f0eb8d05054996da34d5bd58dbdc0f4382bf6
|
4
|
+
data.tar.gz: a74cfa20ebc7484a892ecf8a22b49a64c23fed0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e00559891603a725434bdee4edc9bf87ec36f8493a5387ba6cbfa49cbabd2309e09f8613d871229b5ab264c27f5ed6a05d24fba186ee3bcc8c1fff40213f21b
|
7
|
+
data.tar.gz: 886f50b45522fdf140b6dc5c250d369d68cbcba1855df2fc90d207d0bbbeeaeba0f4dcd2bad535d91447aee8f1f3ba4171562c625a4fdc31c3b8376d419c0059
|
@@ -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
|
-
|
13
|
+
include ModhashHelpers
|
14
14
|
|
15
|
-
|
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
|
-
|
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
|
-
|
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
|
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.
|
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-
|
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.
|
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:
|