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

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