Class: Tmdb

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-tmdb/tmdb.rb

Constant Summary collapse

@@api_key =
""
@@api_response =
{}

Class Method Summary collapse

Class Method Details

.api_call(method, data, language = "en") ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/ruby-tmdb/tmdb.rb', line 24

def self.api_call(method, data, language = "en")
  url = Tmdb.base_api_url + method + '/' + language + '/yaml/' + Tmdb.api_key + '/' + CGI::escape(data.to_s)
  response = Tmdb.get_url(url)
  if(response.code.to_i != 200)
    return nil
  end
  body = YAML::load(response.body)
  if( body.first.include?("Nothing found"))
    return nil
  else
    return body
  end
end

.api_keyObject



12
13
14
# File 'lib/ruby-tmdb/tmdb.rb', line 12

def self.api_key
  @@api_key
end

.api_key=(key) ⇒ Object



16
17
18
# File 'lib/ruby-tmdb/tmdb.rb', line 16

def self.api_key=(key)
  @@api_key = key
end

.base_api_urlObject



20
21
22
# File 'lib/ruby-tmdb/tmdb.rb', line 20

def self.base_api_url
  "http://api.themoviedb.org/2.1/"
end

.data_to_object(data) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/ruby-tmdb/tmdb.rb', line 55

def self.data_to_object(data)
  object = DeepOpenStruct.load(data)
  object.raw_data = data
  ["posters", "backdrops", "profile"].each do |image_array_name|
    if(object.respond_to?(image_array_name))
      image_array = object.send(image_array_name)
      image_array.each_index do |x|
        image_array[x] = image_array[x].image
        image_array[x].instance_eval <<-EOD
          def self.data
            return Tmdb.get_url(self.url).body
          end
        EOD
      end
    end
    if(object.profile)
      object.profiles = object.profile
    end
  end
  unless(object.cast.nil?)
    object.cast.each_index do |x|
      object.cast[x].instance_eval <<-EOD
        def self.bio
          return TmdbCast.find(:id => self.id, :limit => 1)
        end
      EOD
    end
  end
  return object
end

.get_url(uri_str, limit = 10) ⇒ Object

Get a URL and return a response object, follow upto ‘limit’ re-directs on the way



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/ruby-tmdb/tmdb.rb', line 39

def self.get_url(uri_str, limit = 10)
  return false if limit == 0
  begin 
    response = Net::HTTP.get_response(URI.parse(uri_str))
  rescue SocketError, Errno::ENETDOWN
    response = Net::HTTPBadRequest.new( '404', 404, "Not Found" )
    return response
  end 
  case response
    when Net::HTTPSuccess     then response
    when Net::HTTPRedirection then get_url(response['location'], limit - 1)
  else
    Net::HTTPBadRequest.new( '404', 404, "Not Found" )
  end
end