summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/helpers/twitter_helper.rb28
-rw-r--r--app/views/twitter/_index.html.erb15
-rw-r--r--doc/TWITTER_FEED.md19
-rwxr-xr-xscript/generate_bearer_token6
4 files changed, 58 insertions, 10 deletions
diff --git a/app/helpers/twitter_helper.rb b/app/helpers/twitter_helper.rb
index f824a03..719f95e 100644
--- a/app/helpers/twitter_helper.rb
+++ b/app/helpers/twitter_helper.rb
@@ -23,6 +23,30 @@ module TwitterHelper
twitter_user_info[0] = Time.now
twitter_user_info[1] = twitter_client.user(twitter_handle).name
twitter_user_info[2] = twitter_client.user_timeline(twitter_handle).select{ |tweet| tweet.text.start_with?('RT','@')==false}.take(3)
+ if twitter_user_info[2] == nil
+ error_handling
+ twitter_user_info[3] = "The twitter-handle does not exist or the account is private. Please change it or contact your provider-admin."
+ end
+ rescue Twitter::Error::BadRequest
+ error_handling
+ twitter_user_info[3] = "The request to have the tweets shown was invalid or cannot be otherwise served."
+ rescue Twitter::Error::Unauthorized
+ error_handling
+ twitter_user_info[3] = "Please change your twitter-credentials, make sure that the twitter-account you access is public or contact your provider-admin to have the tweets shown."
+ rescue Twitter::Error::Forbidden
+ error_handling
+ twitter_user_info[3] = "The request to have the tweets shown is understood, but it has been refused or access is not allowed."
+ rescue Twitter::Error::NotAcceptable
+ error_handling
+ twitter_user_info[3] = "An invalid format is specified in the request to have the tweets shown."
+ rescue Twitter::Error::TooManyRequests
+ error_handling
+ twitter_user_info[3] = "The rate-limit for accessing the tweets is reached. You should be able to see the tweets in a couple of minutes."
+ end
+
+ def error_handling
+ twitter_user_info[2] = []
+ return twitter_user_info
end
def cached_info
@@ -43,4 +67,8 @@ module TwitterHelper
def tweets
cached_info[2]
end
+
+ def error_message
+ cached_info[3]
+ end
end
diff --git a/app/views/twitter/_index.html.erb b/app/views/twitter/_index.html.erb
index a7ebd1b..8529b83 100644
--- a/app/views/twitter/_index.html.erb
+++ b/app/views/twitter/_index.html.erb
@@ -9,14 +9,15 @@
</div>
<div class="twitter_list">
- <% tweets.each do |e| %>
- <div class="tweet">
- <div class="tweet_text"><%= " #{e.text}" %>
+ <%if tweets == [] then%><%= error_message %><% end %>
+ <% tweets.each do |e| %>
+ <div class="tweet">
+ <div class="tweet_text"><%= " #{e.text}" %>
+ </div>
+ <div class="tweet_text_date">tweeted on <% t = e.created_at%> <%= t.strftime("%m/%d/%y").to_s %>
+ </div>
</div>
- <div class="tweet_text_date">tweeted on <% t = e.created_at%> <%= t.strftime("%m/%d/%y").to_s %>
- </div>
- </div>
- <% end %>
+ <% end %>
</div>
<div class="twitter_footer">
diff --git a/doc/TWITTER_FEED.md b/doc/TWITTER_FEED.md
index dd3954c..94de8c1 100644
--- a/doc/TWITTER_FEED.md
+++ b/doc/TWITTER_FEED.md
@@ -19,12 +19,29 @@ LEAP web app (as part of the main view).
* Activate the feature within your local LEAP Web Application
* If not already existing create a secrets-file in /config with the name secrets.yml (`/config/secrets.yml`)
* Secrets-file should contain the following, make sure its in YAML: {"development"=> {"twitter"=>{"enabled"=>false, "twitter_handle"=>"", "bearer_token"=>"", "twitter_picture"=>nil}}, "test"=>{"twitter"=>{"enabled"=>false, "twitter_handle"=>"", "bearer_token"=>"", "twitter_picture"=>nil}}}
+```
+development:
+ twitter:
+ enabled: false # set to true for usage
+ twitter_handle: XXXXX #put your twitter handle here
+ bearer_token: XXXXX #put your bearer token here
+test:
+ twitter:
+ enabled: false # set to true for usage
+ twitter_handle: XXXXX #put your twitter handle here
+ bearer_token: XXXXX #put your bearer token here
+production:
+ twitter:
+ enabled: false # set to true for usage
+ twitter_handle: XXXXX #put your twitter handle here
+ bearer_token: XXXXX #put your bearer token here
+```
* To have your bearer token created, run script in terminal being in the file of leap_web: `script/generate_bearer_token`
* To have the script run properly you have to add before running: `--key your_consumerkey --secret your_consumersecret`
* Add also `--projectroot your_projectroot --twitterhandle your_twitterhandle` as well to not have manually put the data in your secrets-file
* The full command looks like this: `script/generate_bearer_token --key your_consumerkey --secret your_consumersecret --projectroot your_projectroot --twitterhandle your_twitterhandle`
* If you didn't give all your information to the script, had a typo or want to change anything else, please do so by finding the secrets-file at `/config/secrets.yml`
- * Make sure that the correct twitterhandle and bearer-token is included
+ * Make sure that the correct twitterhandle and bearer-token is included. The twitter-account you want to have shown (the twitterhandle) is a public account!
* Deactivate your bearer token
* To deactivate your generated bearer token you can run script/invalidate_bearer_token
diff --git a/script/generate_bearer_token b/script/generate_bearer_token
index 7091a8d..3a09382 100755
--- a/script/generate_bearer_token
+++ b/script/generate_bearer_token
@@ -55,8 +55,8 @@ if options[:projectroot].nil? then
puts "You didn't tell us the directory to have your secrets-file created or being filled. Feel free to copy/paste your bearer_token:"
puts $bearer_token
else
- if File.exist?("#{options[:projectroot]}/leap_web/config/secrets.yml")
- secrets = YAML.load_file("#{options[:projectroot]}/leap_web/config/secrets.yml")
+ if File.exist?("#{options[:projectroot]}/config/secrets.yml")
+ secrets = YAML.load_file("#{options[:projectroot]}/config/secrets.yml")
else
puts "Please make sure that you created a secrets-file as described in the documentation or have given the correct directory. No secrets-file could be found."
exit
@@ -73,10 +73,12 @@ else
else
secrets["development"]["twitter"]["twitter_handle"] = options[:twitterhandle]
secrets["test"]["twitter"]["twitter_handle"] = options[:twitterhandle]
+ secrets["production"]["twitter"]["twitter_handle"] = options[:twitterhandle]
end
secrets["development"]["twitter"]["bearer_token"] = $bearer_token
secrets["test"]["twitter"]["bearer_token"] = $bearer_token
+ secrets["production"]["twitter"]["twitter_handle"] = $bearer_token
File.open("#{options[:projectroot]}/leap_web/config/secrets.yml", "r+") do |file|
file.write(secrets.to_yaml)