jekyll-twitter-plugin 1.1.1 → 1.2.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: 6bc4b29e2c5e02dc8a97a086e7e6c1415de44a6a
4
- data.tar.gz: ac9904cc1514de2397acbd7701d5bb597eabf877
3
+ metadata.gz: 102db3b0c516a3de0e93b84790b2d58df8394df7
4
+ data.tar.gz: 4a6ae787a08375f14a48dc4353b1fe588efd10c7
5
5
  SHA512:
6
- metadata.gz: ce5bbf44ff966518bac79cc55f1fd60c4a1833cf9412c894228a6e1da3eb8ef6886c921bf98fee4487f67edae1c5db4c1660b81270f7ad92d218829da54a9cd3
7
- data.tar.gz: ac27faf62b5faaf825e4c955c4eb2be53c81c06a925731b1373c2b63e6e6921f5e1ac8f6dfeae12487cd1db7517979a6dc32833dc2bd62e6b144f02ab274ea2d
6
+ metadata.gz: 49095924e9b819e0bfec51f453b8f5c32c5c47edb72f348d0dee43afd9f65731db4987e10291a3a5e56172c63b69f6346027ba2224a219ca0ee3a87288ceaad3
7
+ data.tar.gz: 0be6b6ba0671ec4b33590a7b4fc5d09a3ea46f26de8f3b9db307a62f57d04b0116ba507583245b03bb51759ecf7fae169a34e9aa0c801218847c492ba681c7e0
data/README.md CHANGED
@@ -27,7 +27,6 @@ The plugin supports the following features:
27
27
 
28
28
  * Twitter oauth credentials - Most Twitter api functions now require authentication. Set up your [application](https://dev.twitter.com/apps/new) and get the credentials.
29
29
 
30
-
31
30
  ### Usage
32
31
 
33
32
  As mentioned by [Jekyll's documentation](http://jekyllrb.com/docs/plugins/#installing-a-plugin) you have two options; manually import the source file or require the plugin as a `gem`.
@@ -58,7 +57,21 @@ $ wget https://raw.githubusercontent.com/rob-murray/jekyll-twitter-plugin/master
58
57
 
59
58
  #### Credentials
60
59
 
61
- Your Twitter application authentication credentials are private - do not distribute these! As such this plugin requires your credentials as Environment variables, it requires the following keys to be set;
60
+ Your Twitter application authentication credentials are private - do not distribute these!
61
+
62
+ You can set the authentication variables by adding them to `_config.yml`.
63
+
64
+ ```yaml
65
+ # _config.yml
66
+ twitter:
67
+ consumer_key: asdf
68
+ consumer_secret: asdf
69
+ access_token: asdf
70
+ access_token_secret: asdf
71
+ ```
72
+
73
+ If the authentication variables are not present in `_config.yml` they can be gathered from
74
+ environment variables.
62
75
 
63
76
  * TWITTER_CONSUMER_KEY
64
77
  * TWITTER_CONSUMER_SECRET
@@ -100,7 +113,7 @@ The [oembed](https://dev.twitter.com/rest/reference/get/statuses/oembed) API ret
100
113
 
101
114
  ### Output
102
115
 
103
- As with the original plugin, all content will be rendered inside a div with the classes 'embed' and 'twitter'
116
+ As with the original plugin, all content will be rendered inside a div with the classes 'embed' and 'twitter'
104
117
 
105
118
  ```html
106
119
  <div class='embed twitter'>
@@ -115,11 +128,24 @@ If something goes wrong then a basic error message will be displayed;
115
128
 
116
129
  ### Caching
117
130
 
118
- TODO
131
+ Twitter API responses can be cached to speed up Jekyll site builds and avoid going over API limits. The reponses will be cached in a directory within your Jekyll project called `.tweet-cache`, ensure that this is not commit to source control.
132
+
133
+ Caching is enabled by default.
119
134
 
135
+ It is possible to disable caching by using the specific `twitternocache` tag.
136
+
137
+ ```liquid
138
+ {% twitternocache oembed status_url *options %}
139
+
140
+ # Example
141
+ {% twitternocache oembed https://twitter.com/rubygems/status/518821243320287232 %}
142
+
143
+ ```
120
144
 
121
145
  ### Contributions
122
146
 
147
+ I've tried hard to keep all classes and code in the one `lib/jekyll-twitter-plugin.rb` file so that people can just grab this file and include in their Jekyll `_plugins` directory if they do not want to use the Gem. This may have to be dropped if the one file gets too overwhelming.
148
+
123
149
  Please use the GitHub pull-request mechanism to submit contributions.
124
150
 
125
151
  ### License
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'jekyll-twitter-plugin'
7
- spec.version = '1.1.1'
7
+ spec.version = '1.2.0'
8
8
  spec.authors = ['Rob Murray']
9
9
  spec.email = ['robmurray17@gmail.com']
10
10
  spec.summary = 'A Liquid tag plugin for Jekyll that renders Tweets from Twitter API'
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
16
  spec.require_paths = ['lib']
17
17
 
18
- spec.add_development_dependency 'bundler', '~> 1.6'
18
+ spec.add_development_dependency 'bundler', '~> 1.7'
19
19
  spec.add_development_dependency 'rake'
20
20
  spec.add_development_dependency 'pry-byebug'
21
21
 
@@ -4,6 +4,7 @@ require 'twitter'
4
4
  # A Liquid tag plugin for Jekyll that renders Tweets from Twitter API.
5
5
  # https://github.com/rob-murray/jekyll-twitter-plugin
6
6
  #
7
+
7
8
  module TwitterJekyll
8
9
  class FileCache
9
10
  def initialize(path)
@@ -104,7 +105,7 @@ module TwitterJekyll
104
105
  private
105
106
 
106
107
  def key
107
- @status_url
108
+ '%s-%s' % [@status_url, @params.to_s]
108
109
  end
109
110
  end
110
111
 
@@ -123,11 +124,11 @@ module TwitterJekyll
123
124
  args = params.split(/\s+/).map(&:strip)
124
125
  @api_type = args.shift
125
126
  @params = args
126
-
127
- create_twitter_rest_client
128
127
  end
129
128
 
130
- def render(_context)
129
+ def render(context)
130
+ secrets = extract_twitter_secrets_from_context(context) || extract_twitter_secrets_from_env
131
+ create_twitter_rest_client(secrets)
131
132
  api_client = create_api_client(@api_type, @params)
132
133
  response = cached_response(api_client) || live_response(api_client)
133
134
  html_output_for(response)
@@ -167,14 +168,29 @@ module TwitterJekyll
167
168
  end
168
169
  end
169
170
 
170
- def create_twitter_rest_client
171
+ def create_twitter_rest_client(secrets)
171
172
  @twitter_client = Twitter::REST::Client.new do |config|
172
- config.consumer_key = ENV.fetch('TWITTER_CONSUMER_KEY')
173
- config.consumer_secret = ENV.fetch('TWITTER_CONSUMER_SECRET')
174
- config.access_token = ENV.fetch('TWITTER_ACCESS_TOKEN')
175
- config.access_token_secret = ENV.fetch('TWITTER_ACCESS_TOKEN_SECRET')
173
+ config.consumer_key = secrets.consumer_key
174
+ config.consumer_secret = secrets.consumer_secret
175
+ config.access_token = secrets.access_token
176
+ config.access_token_secret = secrets.access_token_secret
176
177
  end
177
178
  end
179
+
180
+ TwitterSecrets = Struct.new(:consumer_key, :consumer_secret, :access_token, :access_token_secret)
181
+
182
+ def extract_twitter_secrets_from_context(context)
183
+ TwitterSecrets.new(context.registers[:site].config['twitter']['consumer_key'], context.registers[:site].config['twitter']['consumer_secret'], context.registers[:site].config['twitter']['access_token'], context.registers[:site].config['twitter']['access_token_secret']) if context_has_twitter_secrets?(context)
184
+ end
185
+
186
+ def context_has_twitter_secrets?(context)
187
+ twitter_secrets = context.registers[:site].config['twitter'] || {}
188
+ ['consumer_key', 'consumer_secret', 'access_token', 'access_token_secret'].all? {|s| twitter_secrets.key?(s)}
189
+ end
190
+
191
+ def extract_twitter_secrets_from_env
192
+ TwitterSecrets.new(ENV.fetch('TWITTER_CONSUMER_KEY'), ENV.fetch('TWITTER_CONSUMER_SECRET'), ENV.fetch('TWITTER_ACCESS_TOKEN'), ENV.fetch('TWITTER_ACCESS_TOKEN_SECRET'))
193
+ end
178
194
  end
179
195
 
180
196
  class TwitterTagNoCache < TwitterTag
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-twitter-plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Murray
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-25 00:00:00.000000000 Z
11
+ date: 2014-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  version: '0'
101
101
  requirements: []
102
102
  rubyforge_project:
103
- rubygems_version: 2.2.2
103
+ rubygems_version: 2.4.3
104
104
  signing_key:
105
105
  specification_version: 4
106
106
  summary: A Liquid tag plugin for Jekyll that renders Tweets from Twitter API