vzaar 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog ADDED
@@ -0,0 +1,5 @@
1
+ 0.2.0
2
+
3
+ CHANGED errors handling
4
+ ADDED vzaar/view_helpers
5
+ ADDED rails_generators
data/LICENSE ADDED
File without changes
data/README ADDED
@@ -0,0 +1,12 @@
1
+ == Vzaar API gem - access and manage your resources on vzaar.com.
2
+
3
+ Use the demo.rb example to get started.
4
+
5
+ = Installation
6
+
7
+ You need following gems as dependencies:
8
+
9
+ * httpclient
10
+ * oauth.
11
+
12
+ Author:: Mariusz Lusiak <mailto:mariusz@applicake.com>
data/demo.rb ADDED
@@ -0,0 +1,37 @@
1
+ require 'rubygems'
2
+ require 'vzaar'
3
+
4
+ login = ''
5
+ application_token = ''
6
+ server_name = 'vzaar.com'
7
+
8
+ if (1..3).include? ARGV.size
9
+ login = ARGV[0]
10
+ application_token = ARGV[1] if ARGV.size > 1
11
+ server_name = ARGV[2] if ARGV.size > 2
12
+ else
13
+ puts "Usage 1: ruby demo.rb some_vzaar_login"
14
+ puts "Usage 2: ruby demo.rb your_vzaar_login your_vzaar_application_token"
15
+ puts "Usage 3: ruby demo.rb your_vzaar_login your_vzaar_application_token server_name"
16
+ exit
17
+ end
18
+
19
+ vzaar = Vzaar::Base.new :login => login, :application_token => application_token,
20
+ :server => server_name
21
+
22
+ if application_token.length > 0
23
+ puts 'Testing whoami call.'
24
+ puts "Whoami: #{vzaar.whoami}"
25
+ end
26
+
27
+ puts "Public videos by #{login}:"
28
+ vzaar.video_list(login).each do |video|
29
+ puts video.title
30
+ end
31
+
32
+ if application_token.length > 0
33
+ puts "All videos (public and private) by #{login}:"
34
+ vzaar.video_list(login, true).each do |video|
35
+ puts video.title
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ class VzaarController < ApplicationController
2
+
3
+ def index
4
+ respond_to do |format|
5
+ format.html
6
+ end
7
+ end
8
+
9
+ def process_video
10
+ guid = params[:guid]
11
+ title = params[:filename]
12
+ Vzaar.connection.process_video :guid => guid, :title => title,
13
+ :description => 'some description',
14
+ :profile => '1'
15
+ render :nothing => true
16
+ end
17
+
18
+ def signature
19
+ signature = Vzaar.connection.signature :flash_request => true
20
+ json_signature = {}
21
+ json_signature[:AWSAccessKeyId] = signature.aws_access_key
22
+ json_signature[:key] = signature.key
23
+ json_signature[:acl] = signature.acl
24
+ json_signature[:policy] = signature.policy
25
+ json_signature[:signature] = signature.signature
26
+ json_signature[:success_action_status] = '201'
27
+ json_signature['content-type'] = 'binary/octet-stream'
28
+ json_signature[:guid] = signature.guid
29
+ respond_to do |format|
30
+ format.json do
31
+ render :json => json_signature.to_json
32
+ end
33
+ end
34
+ end
35
+
36
+
37
+ end
@@ -0,0 +1,177 @@
1
+ require 'vzaar/base'
2
+
3
+ module Vzaar
4
+
5
+ module ViewHelpers
6
+
7
+ def include_vzaar_javascripts
8
+ javascript_include_tag 'vzaar/json_parse', 'vzaar/swfupload', 'vzaar/handlers',
9
+ 'vzaar/swfupload.queue', 'vzaar/fileprogress'
10
+ end
11
+
12
+ def link_vzaar_stylesheets
13
+ stylesheet_link_tag 'vzaar/swfupload.css'
14
+ end
15
+
16
+ #
17
+ # <%=
18
+ # vzaar_flash_uploader :vzaar_params => {},
19
+ # :success_url => 'http://localhost/videos/'
20
+ # %>
21
+ #
22
+ # TODO: Handle succuess url correctly
23
+ #
24
+ def vzaar_flash_uploader(options = {})
25
+ default_options = {
26
+ :flash_request => true,
27
+ :connection => Vzaar.connection
28
+ }
29
+ options = default_options.merge options
30
+ connection = options[:connection]
31
+ signature = connection.signature options
32
+ result = ''
33
+ result += flash_uploader_script signature, options
34
+ result += flash_uploader_html
35
+ result
36
+ end
37
+
38
+ # TODO: documentation
39
+ # if using metadata you should change x-amz-meta-title and x-amz-meta-profile
40
+ # to relevant values using javascript
41
+ # TODO: change to use Vzaar.connection
42
+ def vzaar_basic_uploader(options = {})
43
+ default_options = {
44
+ :success_action_redirect => nil,
45
+ :include_metadata => false,
46
+ :vzaar_params => {}
47
+ }
48
+ options = default_options.merge options
49
+ vz = Vzaar::Base.new options[:vzaar_params]
50
+ signature = vz.signature options
51
+ upload_form = %Q{
52
+ <form action="http://#{signature.bucket}.s3.amazonaws.com/" method="post"
53
+ enctype="multipart/form-data" id="uploadToS3">
54
+ <div class="uploadFieldsWrapper" style="width:490px; float:left">
55
+ <input type="hidden" name="key" value="#{signature.key}">
56
+ <input type="hidden" name="AWSAccessKeyId" value="#{signature.aws_access_key}">
57
+ <input type="hidden" name="acl" value="#{signature.acl}">
58
+ <input type="hidden" name="success_action_status" value="201">
59
+ <input type="hidden" name="policy" value="#{signature.policy}">
60
+ <input type="hidden" name="signature" value="#{signature.signature}">
61
+ }
62
+ if signature.profile and signature.title
63
+ upload_form += %Q{
64
+ <input id='vzaar-title' type="hidden" name="x-amz-meta-title"
65
+ value="#{signature.title}">
66
+ <input id='vzaar-profile' type="hidden" name="x-amz-meta-profile"
67
+ value="#{signature.profile}">
68
+ }
69
+ end
70
+ if signature.success_action_redirect
71
+ upload_form += %Q{
72
+ <input type="hidden" name="success_action_redirect"
73
+ value="#{signature.success_action_redirect}">
74
+ }
75
+ end
76
+ upload_form += %Q{
77
+ <label class='videoFileStep'>video file to be uploaded</label>
78
+ <input name="file" type="file" id="fileField" onchange="EnableBasicButton();">
79
+ <br />
80
+ <input name="upload" type="submit" />
81
+ </div>
82
+ </form>
83
+ }
84
+ upload_form
85
+ end
86
+
87
+ private
88
+
89
+ def flash_uploader_post_params(signature)
90
+ result = {}
91
+ result[:AWSAccessKeyId] = signature.aws_access_key
92
+ result[:key] = signature.key
93
+ result[:acl] = signature.acl
94
+ result[:policy] = signature.policy
95
+ result[:signature] = signature.signature
96
+ result[:success_action_status] = '201'
97
+ result['content-type'] = 'binary/octet-stream'
98
+ result
99
+ end
100
+
101
+ def flash_uploader_script(signature, options = {})
102
+ result = ''
103
+ result += %Q{
104
+ <script type="text/javascript">
105
+ }
106
+ if options[:success_url]
107
+ url = options[:success_url]
108
+ url += url.include?('?') ? '&' : '?'
109
+ url += "guid=" + signature.guid
110
+ result += "var successURL = '#{url}';"
111
+ end
112
+ result += %Q{
113
+ var swfu;
114
+ window.onload = function () {
115
+ swfu = new SWFUpload({
116
+ upload_url: "http://#{signature.bucket}.s3.amazonaws.com/",
117
+ http_success : [201],
118
+ assume_success_timeout : 0,
119
+ // File Upload Settings
120
+ file_post_name: 'file',
121
+ file_types : "*.*",
122
+ file_types_description : "All Files",
123
+ file_upload_limit : "10",
124
+ file_queue_limit : 0,
125
+ // Event Handler Settings - these functions as defined in handlers.js
126
+ file_queued_handler : fileQueued,
127
+ file_queue_error_handler : fileQueueError,
128
+ file_dialog_complete_handler : fileDialogComplete,
129
+ upload_start_handler : uploadStart,
130
+ upload_progress_handler : uploadProgress,
131
+ upload_error_handler : uploadError,
132
+ upload_success_handler : uploadSuccess,
133
+ upload_complete_handler : uploadComplete,
134
+ // Button Settings
135
+ button_width: "65",
136
+ button_height: "29",
137
+ button_placeholder_id: "spanButtonPlaceHolder",
138
+ button_text: '<span class="theFont">Browse</span>',
139
+ button_text_style: ".theFont { font-size: 16; }",
140
+ button_text_left_padding: 6,
141
+ button_text_top_padding: 3,
142
+ button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
143
+ button_cursor: SWFUpload.CURSOR.HAND,
144
+ moving_average_history_size: 10,
145
+ // Flash Settings
146
+ flash_url : "/flash/vzaar/swfupload.swf",
147
+ flash9_url : "/flash/vzaar/swfupload_fp9.swf",
148
+ custom_settings : {
149
+ progressTarget : "fsUploadProgress",
150
+ uploaded_files : []
151
+ },
152
+ // Debug Settings
153
+ debug: false
154
+ });
155
+ };
156
+ </script>
157
+ }
158
+ result
159
+ end
160
+
161
+ def flash_uploader_html
162
+ result = %Q{
163
+ <div id="content">
164
+ <form id="vzaar_upload" action="" method="post" enctype="multipart/form-data">
165
+ <div class="fieldset flash" id="fsUploadProgress">
166
+ <span class="legend">Upload Queue</span>
167
+ </div>
168
+ <span id="spanButtonPlaceHolder"></span>
169
+ </form>
170
+ </div>
171
+ }
172
+ result
173
+ end
174
+
175
+ end
176
+
177
+ end
@@ -0,0 +1,31 @@
1
+ module Vzaar
2
+
3
+ class AccountType
4
+
5
+ attr_accessor :xml, :version, :id, :title, :monthly, :currency, :bandwidth,
6
+ :borderless, :search_enhancer
7
+
8
+ def initialize(xml)
9
+ @xml = xml
10
+ doc = REXML::Document.new xml
11
+ @version = doc.elements['account/version'] ?
12
+ doc.elements['account/version'].text : ''
13
+ @id = doc.elements['account/account_id'] ?
14
+ doc.elements['account/account_id'].text : ''
15
+ @title = doc.elements['account/title'] ?
16
+ doc.elements['account/title'].text : ''
17
+ @monthly = doc.elements['account/cost/monthly'] ?
18
+ doc.elements['account/cost/monthly'].text : ''
19
+ @currency = doc.elements['account/cost/currency'] ?
20
+ doc.elements['account/cost/currency'].text : ''
21
+ @bandwidth = doc.elements['account/bandwidth'] ?
22
+ doc.elements['account/bandwidth'].text : ''
23
+ @borderless = doc.elements['account/rights/borderless'] ?
24
+ doc.elements['account/rights/borderless'].text : ''
25
+ @search_enhancer = doc.elements['account/rights/searchEnhancer'] ?
26
+ doc.elements['account/rights/searchEnhancer'].text : ''
27
+ end
28
+
29
+ end
30
+
31
+ end