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

Raises:

  • (ArgumentError)


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

def self.api_call(method, data, language = "en")
  raise ArgumentError, "Tmdb.api_key must be set before using the API" if(Tmdb.api_key.nil? || Tmdb.api_key.empty?)
  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



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
85
# File 'lib/ruby-tmdb/tmdb.rb', line 56

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



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

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