reddit-base 0.5.0 → 0.6.0

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