class Garapon::API

Public Class Methods

new(opts = {}) click to toggle source
# File lib/garapon/api.rb, line 7
def initialize(opts = {})
  [:user, :md5passwd, :dev_id].each do |key|
    if opts.has_key?(key) == false
      raise "Error: '#{key}' is not found."
    end

    case key
    when :user
      @user_id = opts[key]
    when :md5passwd
      @passwd = opts[key]
    when :dev_id
      @developer_id = opts[key]
    end
  end

  url = 'http://garagw.garapon.info/getgtvaddress'
  client = HTTPClient.new
  res = client.post_content(url, opts)
  res.each_line do |line|
    key, val = line.chomp.split(';')
    
    case key
    when 1
      raise "Error: #{val}"
    when 'ipaddr'
      @ip = val
    when 'gipaddr'
      @global_ip = val
    when 'pipaddr'
      @private_ip = val
    when 'port'
      @port = val
      @global_port = val
    when 'port2'
      @ts_port = val
    when 'gtvver'
      @version = val
    when '0'
      next
    else
      raise "WARNING: unknown response: #{key} = #{val}"
    end
  end

  if @ip == @private_ip
    @port = 80
  end
end

Public Instance Methods

channel_list() click to toggle source
# File lib/garapon/api.rb, line 57
def channel_list
  login
  
  url = "http://#{@ip}:#{@port}/gapi/v3/channel?dev_id=#{@developer_id}&gtvsession=#{@session}"
  client = HTTPClient.new
  res_str = client.get_content(url)
  res = Oj.load(res_str, :mode => :compat)

  return res
end

Private Instance Methods

login() click to toggle source
# File lib/garapon/api.rb, line 85
def login
  url = "http://#{@ip}:#{@port}/gapi/v3/auth?dev_id=#{@developer_id}"
  post_data = {
    :type    => 'login',
    :loginid => @user_id,
    :md5pswd => @passwd
  }

  client  = HTTPClient.new
  res_str = client.post_content(url, post_data)
  res     = Oj.load(res_str, :mode => :compat)
  
  @session = res['gtvsession']
end