Sha256: b986839a793151d2517e781198338d2b7b74635992d56c67887fd5645f94057b

Contents?: true

Size: 793 Bytes

Versions: 7

Compression:

Stored size: 793 Bytes

Contents

require 'uri'

require 'rack'

require 'murlsh'

module Murlsh

  # Serve m3u file of audio urls.
  class M3uServer < Server

    AudioContentTypes = %w{
      application/ogg
      audio/mpeg
      audio/ogg
      }

    # Respond to a GET request for m3u file.
    def get(req)
      page = 1
      per_page = config.fetch('num_posts_feed', 25)

      result_set = Murlsh::UrlResultSet.new(req['q'], page, per_page,
        :content_type => AudioContentTypes)

      feed_url = URI.join(config.fetch('root_url'), 'm3u.m3u')
      body = Murlsh::M3uBody.new(config, req, feed_url, result_set.results)

      resp = Rack::Response.new(body, 200, 'Content-Type' => 'audio/x-mpegurl')
      if u = body.updated
        resp['Last-Modified'] = u.httpdate
      end
      resp
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
murlsh-1.9.3 lib/murlsh/m3u_server.rb
murlsh-1.9.2 lib/murlsh/m3u_server.rb
murlsh-1.9.1 lib/murlsh/m3u_server.rb
murlsh-1.9.0 lib/murlsh/m3u_server.rb
murlsh-1.8.0 lib/murlsh/m3u_server.rb
murlsh-1.7.1 lib/murlsh/m3u_server.rb
murlsh-1.7.0 lib/murlsh/m3u_server.rb