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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3050b7e6d6b2a676067d35bc9a5027fc4f27e4b
4
- data.tar.gz: a88430d27af49335827efe29d4118a8bfb28e0bb
3
+ metadata.gz: b67f0344526fb1cfd6c7913c61452d9bdc138bdc
4
+ data.tar.gz: f303e6f16741a9c946c20847b6aff850ccefd293
5
5
  SHA512:
6
- metadata.gz: e354d7e5b264c18eb5e6a6181ae7023fc42a3571dfc5c2bb59537fc32480a189208c2627221cc452ac8832b82fa5a40e169d3425d15bcc3aea2eb7a0d7695b28
7
- data.tar.gz: f6e90de8c1dba0a229139ed42207eb6b9a20c3c84c2421a4ebf3529f4bb8f4595263f35b8f29489ab31b9e0ede496743588702dc8c6318acf7bf9fdfbd9f430e
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
@@ -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::RateLimit, FaradayMiddleware::Reddit::ForceJson
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(*args, **options)
16
- body = connection.get(*args, **options).body
17
- Mash.new body
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(*args, **options)
21
- body = connection.post(*args, **options).body
22
- Mash.new body
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
@@ -1,5 +1,5 @@
1
1
  module Reddit
2
2
  module Base
3
- VERSION = '0.5.0'
3
+ VERSION = '0.6.0'
4
4
  end
5
5
  end
data/lib/reddit/base.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'faraday'
2
+ require 'faraday-manual-cache'
2
3
  require 'faraday_middleware'
3
4
  require 'faraday_middleware/reddit'
4
5
  require 'json'
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 'faraday_middleware-reddit', '0.4.0'
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.5.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-20 00:00:00.000000000 Z
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