Sha256: 8913e81f2efc1a10430933791a56ce1f3beae88088b25446900c68a407273659

Contents?: true

Size: 912 Bytes

Versions: 2

Compression:

Stored size: 912 Bytes

Contents

require 'mopidy/response'

module Mopidy
  module Library
    def self.search_tracks(keyword)
      res = search(keyword)
      tracks = parse_search_response(res, 'tracks')
      format_response(tracks, res.status)
    end

    def self.lookup(uri)
      json = Mopidy.format_json(1, 'core.library.lookup', 'uri': uri)
      res = Mopidy.post(json)
      res.body.empty? ? res : format_response(res.body.first, res.status)
    end

    def self.search(keyword)
      json = Mopidy.format_json(1, 'core.library.search', [{ 'any': keyword }])
      Mopidy.post(json)
    end

    private

    def self.parse_search_response(response, type)
      data = response.body.first[type]
    end

    def self.format_response(data, status_code)
      new_response = OpenStruct.new(
        parsed_response: { 'result' => data },
        code: status_code
      )
      Mopidy::Response.new(new_response)
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
ruby-mopidy-0.2.1 lib/mopidy/library.rb
mopidy-0.2.0 lib/mopidy/library.rb