Sha256: 4e63db7fd35134233437e61a1ea189741ad2e426fe30e1806c7d792f6541ec3f

Contents?: true

Size: 942 Bytes

Versions: 3

Compression:

Stored size: 942 Bytes

Contents

# frozen_string_literal: true

require 'faraday'
require 'faraday_middleware'

require 'apple_music/config'

module AppleMusic
  class ApiError < StandardError; end
  class ParameterMissing < StandardError; end

  API_URI = 'https://api.music.apple.com/v1/'

  class << self
    def config
      @config ||= Config.new
    end

    def configure(&block)
      block.call(config)
    end

    private

    def client
      @client ||= Faraday.new(API_URI) do |conn|
        conn.response :json, content_type: /\bjson\z/
        conn.headers['Authorization'] = "Bearer #{config.authentication_token}"
        conn.adapter config.adapter
      end
    end

    def method_missing(name, *args, &block)
      if client.respond_to?(name)
        client.send(name, *args, &block)
      else
        super
      end
    end

    def respond_to_missing?(name, include_private = false)
      client.respond_to?(name, include_private)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
apple_music-0.3.1 lib/apple_music/connection.rb
apple_music-0.3.0 lib/apple_music/connection.rb
apple_music-0.2.0 lib/apple_music/connection.rb