Class: Mira::ViddlerClient

Inherits:
Object
  • Object
show all
Defined in:
lib/mira/upload.rb

Instance Method Summary collapse

Constructor Details

#initialize(credentials) ⇒ ViddlerClient

Returns a new instance of ViddlerClient.



58
59
60
61
62
# File 'lib/mira/upload.rb', line 58

def initialize(credentials)
  @username = credentials[:username]
  @password = credentials[:password]
  @api_key = credentials[:api_key]
end

Instance Method Details

#authObject



48
49
50
51
52
53
54
55
56
# File 'lib/mira/upload.rb', line 48

def auth
  return @session_id if @session_id

  session_request = RestClient.get('http://api.viddler.com/api/v2/viddler.users.auth.json',
                                   :params => {:user => @username,
                                               :password => @password,
                                               :api_key => @api_key})
  @session_id = JSON.parse(session_request)["auth"]["sessionid"]
end

#get(api_method, params = {}) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/mira/upload.rb', line 40

def get(api_method, params = {})
  url = 'http://api.viddler.com/api/v2/' + api_method + '.json'
  JSON.parse RestClient.get(url,
                            :params => params.merge!(:sessionid => auth,
                                                     :method => api_method,
                                                     :api_key => @api_key))
end

#upload(file, params = {}) ⇒ Object

Upload a video to the Viddler API.

file - The File you are uploading arguments - The Hash of arguments for the video

:title       - The String title of the video
:tags        - The String of tags for the video
:description - The String description of the video
:make_public - The Boolean to make the video public on
               upload. Please note that if set to false, it
               will not make your video private.

Examples

viddler.upload File.open('myvideo.avi'), :title       => "My Video",
                                         :tags        => "viddler, ruby",
                                         :description => "This is cool"

Returns a Hash containing the API response.



30
31
32
33
34
35
36
37
38
# File 'lib/mira/upload.rb', line 30

def upload(file, params = {})
  json = self.get('viddler.videos.prepareUpload')
  endpoint = json["upload"]["endpoint"]
  token = json["upload"]["token"]
  uploaded = RestClient.post(endpoint,
                             upload_params(file,
                                           params.merge!(:token => token)))
  JSON.parse uploaded
end

#upload_params(file, params = {}) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/mira/upload.rb', line 64

def upload_params(file, params = {})
  raise "file argument must be a File" unless file.is_a? File
  ordered_arguments = ActiveSupport::OrderedHash.new

  params.each {|k,v| ordered_arguments[k] = v}

  ordered_arguments[:api_key]   = @api_key
  ordered_arguments[:sessionid] = auth
  ordered_arguments[:file]      = file

  ordered_arguments
end