class Lita::Handlers::RedditImage
Constants
- VERSION
Public Instance Methods
fetch(response)
click to toggle source
# File lib/lita/handlers/reddit_image.rb, line 17 def fetch(response) (subreddit, query) = response.matches.to_a.flatten subreddit.strip! query.strip! json = JSON.parse(RestClient.get(reddit_url(subreddit, query), user_agent: reddit_user_agent)) json['data']['children'].each do |post| post_title = post['data']['title'] post_url = post['data']['url'] # return if image was found if (/[\w:]+\.(jpe?g|png|gif)/i =~ post_url) filename = $~ return response.reply([post_title, post_url].join(": ")) end # keep searching, but wait half a second between requests sleep 0.5 rescue StandardError => e Lita.logger.warn("Couldn't fetch image from Reddit: " + e.message) response.reply("I couldn't fetch an image from Reddit.") end end
Protected Instance Methods
platform()
click to toggle source
# File lib/lita/handlers/reddit_image.rb, line 54 def platform 'ruby' end
reddit_url(subreddit, query)
click to toggle source
# File lib/lita/handlers/reddit_image.rb, line 46 def reddit_url(subreddit, query) URI.parse('https://www.reddit.com/r/' + subreddit + '/search.json?q=' + query + '&restrict_sr=on').to_s end
reddit_user_agent()
click to toggle source
# File lib/lita/handlers/reddit_image.rb, line 50 def reddit_user_agent "#{platform}:#{config.app_id}:#{version} (by /u/#{config.username})" end
version()
click to toggle source
# File lib/lita/handlers/reddit_image.rb, line 58 def version VERSION end
Private Instance Methods
content_type(filename)
click to toggle source
# File lib/lita/handlers/reddit_image.rb, line 64 def content_type(filename) case filename when /[\w:]+\.jpe?g/i 'image/jpeg' when /[\w:]+\.png/i 'image/png' when /[\w:]+\.gif/i 'image/gif' else 'image/jpeg' end end