reddit-base 0.5.0 → 0.6.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.
- checksums.yaml +4 -4
- data/README.md +11 -0
- data/lib/reddit/base/basic_client.rb +1 -1
- data/lib/reddit/base/client.rb +17 -7
- data/lib/reddit/base/version.rb +1 -1
- data/lib/reddit/base.rb +1 -0
- data/reddit-base.gemspec +3 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b67f0344526fb1cfd6c7913c61452d9bdc138bdc
|
4
|
+
data.tar.gz: f303e6f16741a9c946c20847b6aff850ccefd293
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00bd9c8bf4c7e32a7114143c518415a6867928c9d8ac4a8370b25204d0da6a368fd1dfa0d9544b7199a2086af2d1c850d8b6155248936ea9d73f1b323c0551ad
|
7
|
+
data.tar.gz: b454f237ccd5e4fb16073ec839babea60bf7d2398e5d626f7b7795fc7d47ad86a977b9550991c4289c0fdca4e316eb4ccac41ab2262c9db0b3cbf39fa050d172
|
data/README.md
CHANGED
@@ -44,6 +44,7 @@ What it Does
|
|
44
44
|
* Multipart POST.
|
45
45
|
* Reddit error wrapping.
|
46
46
|
* Retries for common errors (e.g. Gateway Timeout).
|
47
|
+
* Request caching.
|
47
48
|
|
48
49
|
What it Doesn't
|
49
50
|
---------------
|
@@ -119,6 +120,16 @@ so you can take it a step further and just do:
|
|
119
120
|
client.get('/r/AskReddit').children
|
120
121
|
```
|
121
122
|
|
123
|
+
### Caching
|
124
|
+
|
125
|
+
Reddit recommends not request the same endpoint more than once every 30 seconds, and `Client` respects that.
|
126
|
+
|
127
|
+
But this can be by passed by passing in a `nocache` parameter, useful if you're polling a frequently-updated endpoint, e.g.:
|
128
|
+
|
129
|
+
```ruby
|
130
|
+
client.get('/r/all/comments', nocache: true)
|
131
|
+
```
|
132
|
+
|
122
133
|
Recommended Reading
|
123
134
|
-------------------
|
124
135
|
|
@@ -38,8 +38,8 @@ module Reddit
|
|
38
38
|
builder.request :retry, max: @retries, interval: 2, exceptions: FaradayMiddleware::Reddit::RETRIABLE_ERRORS
|
39
39
|
builder.response :follow_redirects
|
40
40
|
builder.response :reddit_raise_error
|
41
|
-
builder.use :reddit_rate_limit
|
42
41
|
builder.use :reddit_modhash
|
42
|
+
builder.use :reddit_rate_limit
|
43
43
|
builder.adapter Faraday.default_adapter
|
44
44
|
end
|
45
45
|
end
|
data/lib/reddit/base/client.rb
CHANGED
@@ -9,17 +9,27 @@ module Reddit
|
|
9
9
|
super(options)
|
10
10
|
|
11
11
|
connection.builder.insert_before FaradayMiddleware::FollowRedirects, FaradayMiddleware::ParseJson
|
12
|
-
connection.builder.insert_before FaradayMiddleware::Reddit::
|
12
|
+
connection.builder.insert_before FaradayMiddleware::Reddit::Modhash, Faraday::ManualCache, expires_in: 30
|
13
|
+
connection.builder.insert_before Faraday::ManualCache, FaradayMiddleware::Reddit::ForceJson
|
13
14
|
end
|
14
15
|
|
15
|
-
def get(
|
16
|
-
|
17
|
-
|
16
|
+
def get(url, **options)
|
17
|
+
nocache = options.delete(:nocache)
|
18
|
+
|
19
|
+
response = connection.get do |req|
|
20
|
+
req.url url
|
21
|
+
req.headers['x-faraday-manual-cache'] = 'NOCACHE' if nocache
|
22
|
+
req.params = options
|
23
|
+
end
|
24
|
+
|
25
|
+
Mash.new response.body
|
18
26
|
end
|
19
27
|
|
20
|
-
def post(
|
21
|
-
|
22
|
-
|
28
|
+
def post(url, **options)
|
29
|
+
nocache = options.delete(:nocache)
|
30
|
+
|
31
|
+
response = connection.post(url, **options)
|
32
|
+
Mash.new response.body
|
23
33
|
end
|
24
34
|
end
|
25
35
|
end
|
data/lib/reddit/base/version.rb
CHANGED
data/lib/reddit/base.rb
CHANGED
data/reddit-base.gemspec
CHANGED
@@ -8,6 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Reddit::Base::VERSION
|
9
9
|
spec.authors = ["Daniel O'Brien"]
|
10
10
|
spec.email = ["dan@dobs.org"]
|
11
|
+
spec.homepage = "https://github.com/dobs/reddit-base"
|
11
12
|
spec.summary = %q{A minimal reddit API client for Ruby.}
|
12
13
|
spec.description = %q{A minimal reddit API client for Ruby that
|
13
14
|
simplifies concerns such as authentication, rate limiting and extracting
|
@@ -24,6 +25,7 @@ Gem::Specification.new do |spec|
|
|
24
25
|
spec.add_development_dependency "bundler", "~> 1.5"
|
25
26
|
spec.add_development_dependency "rake", '~> 0'
|
26
27
|
|
27
|
-
spec.add_dependency '
|
28
|
+
spec.add_dependency 'faraday-manual-cache', '~> 0.1.1'
|
29
|
+
spec.add_dependency 'faraday_middleware-reddit', '~> 0.4.0'
|
28
30
|
spec.add_dependency 'hashie', '~> 2.1'
|
29
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reddit-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
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-05-
|
11
|
+
date: 2014-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,18 +38,32 @@ dependencies:
|
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday-manual-cache
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.1.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.1.1
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: faraday_middleware-reddit
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- -
|
59
|
+
- - ~>
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: 0.4.0
|
48
62
|
type: :runtime
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - ~>
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: 0.4.0
|
55
69
|
- !ruby/object:Gem::Dependency
|