lib/film_on/base.rb in film_on-0.0.10 vs lib/film_on/base.rb in film_on-0.0.11
- old
+ new
@@ -10,46 +10,64 @@
URI = "www.filmon.com/tv/api/"
attr_reader :app_key, :app_secret, :session_key
+ class ApiError < StandardError; end
+
+ # FilmOn Api (http://www.filmon.com/page/api)
+ # initialize the wrapper with your app_key and app_secret
+ # for development purposes you can use "foo" and "bar"
+ # eg.
+ # film_on = FilmOn::Base.new("foo", "bar")
+ # film_on.channels => returns an array of channels
+ # film_on.groups => returns an array of channel groups
+ # film_on.channel(14) => returns information for channel with id 14
+ #
def initialize(app_key, app_secret)
@app_key = app_key
@app_secret = app_secret
@channel = {}
init_request
end
+ private
+
+ # Create the initial handshake to FilmOn
+ # and set the @session_key
+ #
def init_request
response = get("init")
init_hash = JSON.parse(response)
@session_key = init_hash["session_key"]
self
end
- private
-
+ # Make a POST request to the api with the given service, query and protocol
+ #
def post(service, query={}, protocol="http://")
query["format"] = "json"
query["session_key"] = @session_key unless service == "init"
full_service_url = "#{protocol}#{URI}#{service}"
response = HTTParty.post(full_service_url, {body: query, headers: {'Content-Type' => 'application/json'}})
if response && response.code == 200
return response.body
else
- response.response
+ raise ApiError
end
end
+ # Make a GET request to the api with the given service, query and protocol
+ #
def get(service, query={}, protocol="http://")
query["format"] = "json"
query["session_key"] = @session_key unless service == "init"
full_service_url = "#{protocol}#{URI}#{service}?#{query.map{|k,v| "#{k}=#{v}"}.join("&")}"
response = HTTParty.get(full_service_url)
if response && response.code == 200
return response.body
else
- response.response
+ raise ApiError
end
end
end