Sha256: 0afc3e9db1793f3340a8dd553c29ecc400eb0ad2570ee1b3ed499e4edb992680

Contents?: true

Size: 663 Bytes

Versions: 2

Compression:

Stored size: 663 Bytes

Contents

module Notu

  class Api

    DEFAULT_API_KEY = '91f5d6a201de58e0c0a0d858573dddf0'.freeze
    FORMAT = 'json'.freeze
    HOST = 'ws.audioscrobbler.com'.freeze
    VERSION = '2.0'.freeze

    attr_reader :api_key

    def initialize(api_key: DEFAULT_API_KEY)
      @api_key = api_key.try(:squish).presence || raise(Error.new('API key must be specified'))
    end

    def url(params = {})
      params = (params || {}).symbolize_keys
      params.merge!(api_key:, format: FORMAT)
      query_string = params.map { |name, value| "#{CGI.escape(name.to_s)}=#{CGI.escape(value.to_s)}" }.join('&')
      "https://#{HOST}/#{VERSION}?#{query_string}"
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
notu-5.0.1 lib/notu/api.rb
notu-5.0.0 lib/notu/api.rb