mariodarco/itunes-api

View on GitHub
lib/itunes_api/request.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require 'faraday'
require 'json'
module ItunesApi
  # Allow requests to the iTunes API.
  module Request
    def results
      @results ||= parsed_response.fetch('results') { [] }
    end

    private

    def connection
      Faraday.new(url: BASE_URL)
    end

    def parsed_response
      JSON.parse(response.body)
    rescue JSON::ParserError
      { 'results' => [] }
    end

    def response
      connection.get(action, query)
    end

    def unwrapped_results(type)
      return [] unless results.any?

      results.find_all do |wrappers|
        wrappers['wrapperType'] == type.to_s
      end
    end
  end
end