class PodcastApi::Client
Attributes
base_url[R]
Public Class Methods
new(api_key: nil, user_agent: nil)
click to toggle source
# File lib/podcast_api.rb, line 19 def initialize(api_key: nil, user_agent: nil) @api_key = api_key @base_url = api_key ? @@BASE_URL_PROD : @@BASE_URL_TEST @headers = { 'X-ListenAPI-Key' => @api_key ? @api_key : '', 'User-Agent' => user_agent ? user_agent : "podcasts-api-ruby #{VERSION}" } end
Public Instance Methods
batch_fetch_episodes(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 83 def batch_fetch_episodes(**kwargs) @headers['Content-Type'] = 'application/x-www-form-urlencoded' return send_http_request('post', "#{@base_url}/episodes", {body: kwargs, headers: @headers}) end
batch_fetch_podcasts(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 78 def batch_fetch_podcasts(**kwargs) @headers['Content-Type'] = 'application/x-www-form-urlencoded' return send_http_request('post', "#{@base_url}/podcasts", {body: kwargs, headers: @headers}) end
delete_podcast(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 137 def delete_podcast(**kwargs) id = kwargs.delete(:id) return send_http_request('delete', "#{@base_url}/podcasts/#{id}", {query: kwargs, headers: @headers}) end
fetch_best_podcasts(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 64 def fetch_best_podcasts(**kwargs) return send_http_request('get', "#{@base_url}/best_podcasts", {query: kwargs, headers: @headers}) end
fetch_curated_podcasts_list_by_id(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 88 def fetch_curated_podcasts_list_by_id(**kwargs) id = kwargs.delete(:id) return send_http_request('get', "#{@base_url}/curated_podcasts/#{id}", {query: kwargs, headers: @headers}) end
fetch_curated_podcasts_lists(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 93 def fetch_curated_podcasts_lists(**kwargs) return send_http_request('get', "#{@base_url}/curated_podcasts", {query: kwargs, headers: @headers}) end
fetch_episode_by_id(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 73 def fetch_episode_by_id(**kwargs) id = kwargs.delete(:id) return send_http_request('get', "#{@base_url}/episodes/#{id}", {query: kwargs, headers: @headers}) end
fetch_my_playlists(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 128 def fetch_my_playlists(**kwargs) return send_http_request('get', "#{@base_url}/playlists", {query: kwargs, headers: @headers}) end
fetch_playlist_by_id(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 123 def fetch_playlist_by_id(**kwargs) id = kwargs.delete(:id) return send_http_request('get', "#{@base_url}/playlists/#{id}", {query: kwargs, headers: @headers}) end
fetch_podcast_by_id(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 68 def fetch_podcast_by_id(**kwargs) id = kwargs.delete(:id) return send_http_request('get', "#{@base_url}/podcasts/#{id}", {query: kwargs, headers: @headers}) end
fetch_podcast_genres(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 97 def fetch_podcast_genres(**kwargs) return send_http_request('get', "#{@base_url}/genres", {query: kwargs, headers: @headers}) end
fetch_podcast_languages(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 105 def fetch_podcast_languages(**kwargs) return send_http_request('get', "#{@base_url}/languages", {query: kwargs, headers: @headers}) end
fetch_podcast_regions(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 101 def fetch_podcast_regions(**kwargs) return send_http_request('get', "#{@base_url}/regions", {query: kwargs, headers: @headers}) end
fetch_recommendations_for_episode(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 118 def fetch_recommendations_for_episode(**kwargs) id = kwargs.delete(:id) return send_http_request('get', "#{@base_url}/episodes/#{id}/recommendations", {query: kwargs, headers: @headers}) end
fetch_recommendations_for_podcast(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 113 def fetch_recommendations_for_podcast(**kwargs) id = kwargs.delete(:id) return send_http_request('get', "#{@base_url}/podcasts/#{id}/recommendations", {query: kwargs, headers: @headers}) end
just_listen(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 109 def just_listen(**kwargs) return send_http_request('get', "#{@base_url}/just_listen", {query: kwargs, headers: @headers}) end
search(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 56 def search(**kwargs) return send_http_request('get', "#{@base_url}/search", {query: kwargs, headers: @headers}) end
submit_podcast(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 132 def submit_podcast(**kwargs) @headers['Content-Type'] = 'application/x-www-form-urlencoded' return send_http_request('post', "#{@base_url}/podcasts/submit", {body: kwargs, headers: @headers}) end
typeahead(**kwargs)
click to toggle source
# File lib/podcast_api.rb, line 60 def typeahead(**kwargs) return send_http_request('get', "#{@base_url}/typeahead", {query: kwargs, headers: @headers}) end
Protected Instance Methods
get_response(response:)
click to toggle source
# File lib/podcast_api.rb, line 29 def get_response(response:) if response.code == 200 return response elsif response.code == 400 raise InvalidRequestError.new 'something wrong on your end (client side errors), e.g., missing required parameters' elsif response.code == 401 raise AuthenticationError.new 'wrong api key or your account is suspended' elsif response.code == 404 raise NotFoundError.new 'endpoint not exist, or podcast / episode not exist' elsif response.code == 429 raise RateLimitError.new 'you are using FREE plan and you exceed the quota limit' else raise PodcastApiError.new 'something wrong on our end (unexpected server errors)' end end
send_http_request(http_method, *args)
click to toggle source
# File lib/podcast_api.rb, line 45 def send_http_request(http_method, *args) begin response = HTTParty.public_send(http_method, *args) rescue SocketError raise APIConnectionError.new 'Failed to connect to Listen API servers' else return get_response(response: response) end end