module DadJokes
Constants
- API_HEADERS
- API_URL
- DEFAULT_LIMIT
- VERSION
Public Class Methods
fetch(joke_id:)
click to toggle source
# File lib/dad_jokes.rb, line 31 def self.fetch(joke_id:) uri = "/j/#{joke_id}" joke_object = parse_response(uri) get_joke(joke_object) end
random()
click to toggle source
# File lib/dad_jokes.rb, line 13 def self.random uri = "/" joke_object = parse_response(uri) get_joke(joke_object) end
random_image()
click to toggle source
# File lib/dad_jokes.rb, line 19 def self.random_image uri = "/" joke_object = parse_response(uri) joke_id = get_id(joke_object) image_uri = "/j/#{joke_id}.png" url = File.join(API_URL, image_uri).to_s download = open(url) path = get_image_save_path(joke_id) IO.copy_stream(download, path) "#{get_joke(joke_object)} ( Saved as image in location: #{path} !)" end
search(term: '',limit: DEFAULT_LIMIT)
click to toggle source
# File lib/dad_jokes.rb, line 37 def self.search(term: '',limit: DEFAULT_LIMIT) uri = "/search?term=#{term}&limit=#{limit}" response = connection.get(uri) jokes_hash = JSON.parse(response.body) jokes = filter_jokes(jokes_hash) jokes end
Private Class Methods
connection()
click to toggle source
# File lib/dad_jokes.rb, line 69 def self.connection Faraday.new(url: API_URL, headers: API_HEADERS) end
filter_jokes(jokes_hash)
click to toggle source
# File lib/dad_jokes.rb, line 60 def self.filter_jokes(jokes_hash) jokes_arr = jokes_hash['results'] || [] jokes = [] jokes_arr.each do |joke| jokes << joke['joke'] end jokes end
get_id(joke_object)
click to toggle source
# File lib/dad_jokes.rb, line 56 def self.get_id(joke_object) joke_object['id'] end
get_image_save_path(joke_id)
click to toggle source
# File lib/dad_jokes.rb, line 73 def self.get_image_save_path(joke_id) if in_rails_app? File.join(Rails.root,"public","dadjokes","joke_#{joke_id}.png") else "joke_#{joke_id}.png" end end
get_joke(joke_object)
click to toggle source
# File lib/dad_jokes.rb, line 52 def self.get_joke(joke_object) joke_object['joke'] end
in_rails_app?()
click to toggle source
# File lib/dad_jokes.rb, line 81 def self.in_rails_app? klass = Module.const_get("Rails") return klass.is_a?(Module) rescue NameError return false end
parse_response(uri)
click to toggle source
# File lib/dad_jokes.rb, line 47 def self.parse_response(uri) response = connection.get(uri) JSON.parse(response.body) end