Sha256: bfcd8f6a70ace3ec61daef4c97b3c86b21cb2044695aa8f267e22e054b9b6093

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

require 'rack'
require 'socket'

module AirPlayer
  class Server
    attr_reader :uri

    def initialize(video_path)
      @server = Rack::Server.new(:server => :webrick, :Host => local_ip, :Port => 7070)
      @server.instance_variable_set(:@app, Rack::File.new(video_path))
      @uri  = "http://#{@server.options[:Host]}:#{@server.options[:Port]}"
    end

    def start
      # Output WEBrick access log to file
      $stderr = File.open(Logger.path, File::WRONLY | File::APPEND | File::CREAT)
      @server.start
      $stderr = STDERR
    end

    # networking - Getting the Hostname or IP in Ruby on Rails - Stack Overflow
    #   http://stackoverflow.com/questions/42566/getting-the-hostname-or-ip-in-ruby-on-rails
    def local_ip
      # turn off reverse DNS resolution temporarily
      orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true

      UDPSocket.open do |s|
        s.connect('8.8.8.8', 1)
        s.addr.last
      end
    ensure
      Socket.do_not_reverse_lookup = orig
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
airplayer-0.0.2 lib/airplayer/server.rb