Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanfaerman committed Mar 2, 2012
0 parents commit 26013b6
Show file tree
Hide file tree
Showing 4 changed files with 337 additions and 0 deletions.
10 changes: 10 additions & 0 deletions package.json
@@ -0,0 +1,10 @@
{
"name": "timeless-torah"
, "description": ""
, "version": "0.0.1"
, "private": true
, "main": "./zencoder.coffee"
, "dependencies": {
"underscore": "1.3.1"
}
}
136 changes: 136 additions & 0 deletions zen_test.coffee
@@ -0,0 +1,136 @@
{Zencoder} = require './zencoder'

Zencoder::api_key = ''
###
Zencoder::Job.create
input: 's3://timelesstorah.com/010308.mp3'
outputs: [
format: 'mp4'
audio_normalize: yes
rrs: yes
public: yes
url: 's3://timelesstorah.com/zencoder/010308.mp4'
,
format: 'mp3'
audio_normalize: yes
rrs: yes
public: yes
url: 's3://timelesstorah.com/zencoder/010308.mp3'
,
format: 'ogg'
audio_normalize: yes
rrs: yes
public: yes
url: 's3://timelesstorah.com/zencoder/010308.ogg'
]
, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res
###

###
Zencoder::Job.list (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.body
###

###
Zencoder::Job.details 13852800, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.body
###

###
Zencoder::Job.resubmit 13852800, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###

###
Zencoder::Job.cancel 13852800, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###



###
Zencoder::Job.progress 13852800, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###

###
Zencoder::Input.details 13852776, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###

###
Zencoder::Input.progress 13852776, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###
###
Zencoder::Output.details 21245746, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###
###
Zencoder::Output.progress 21245746, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###

###
params =
per_page: 10
page: 2
Zencoder::Notification.list params, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###

###
account =
email: 'ryan+testAccount1@faerman.net'
terms_of_service: "1"
Zencoder::Account.create account, (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###

###
Zencoder::Account.details (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###
###
Zencoder::Account.integration (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###
###
Zencoder::Account.live (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body
###

Zencoder::Reports.minutes (res) ->
console.log "GOT A RESPONSE IN MAH CALLBACK"
console.log res.code
console.log res.body


129 changes: 129 additions & 0 deletions zencoder.coffee
@@ -0,0 +1,129 @@
https = require 'https'
url = require 'url'
_ = require 'underscore'
fs = require 'fs'
querystring = require 'querystring'


class exports.Zencoder
base_url: 'https://app.zencoder.com/api/v2'
api_key: ''
cert: fs.readFileSync 'zencoder_ca_chain.crt'

version: '0.0.1'
default_options:
timeout: 10000
headers:
'Accept': 'application/json'
'Content-Type': 'application/json'
'User-Agent': "node-zencoder v-#{@::version}"
@Response =
code: 0
body: ''
raw_body: ''

Job:
list: (cb) =>
@get '/jobs', cb
create: (job, cb) =>
@post '/jobs', job, cb
details: (jobId, cb) =>
@get "/jobs/#{jobId}.json", cb
resubmit: (jobId, cb)=>
@put "/jobs/#{jobId}/resubmit.json", cb
cancel: (jobId, cb) =>
@put "/jobs/#{jobId}/cancel.json", cb
progress: (jobId, cb) =>
@get "/jobs/#{jobId}/progress.json", cb

Input:
details: (inputId, cb) =>
@get "/inputs/#{inputId}.json", cb
progress: (inputId, cb) =>
@get "/inputs/#{inputId}/progress.json", cb

Output:
details: (outputId, cb) =>
@get "/outputs/#{outputId}.json", cb
progress: (outputId, cb) =>
@get "/outputs/#{outputId}/progress.json", cb

Notification:
list: (options, cb) =>
@get '/notifications', options, cb

Account:
create: (params, options, cb)=>
@post '/account', params, options
details: (cb)=>
@get '/account', cb
integration: (cb) =>
@put '/account/integration', cb
live: (cb) =>
@put '/account/live', cb

Reports:
minutes: (options, cb) =>
@get '/reports/minutes', options, cb

process = (method, request_url, body = {}, options = {}, cb = () ->) =>
cb = body if typeof body is 'function'
cb = options if typeof options is 'function'

method = method.toUpperCase()

request_url = url.parse @::base_url + request_url
request_url.protocol = request_url.protocol.replace ':', ''

body = _.extend api_key: @::api_key, body
payload = JSON.stringify(body) unless method is 'GET'


options = _.extend @::default_options, options
headers = options.headers
headers = _.extend('Content-Length': payload.length, headers) unless method is 'GET'


http_options =
host: request_url.hostname
port: request_url.port
path: request_url.path
method: method
headers: headers
cert: @::cert

if method is 'GET' then http_options.path += "?#{querystring.stringify body}"
response = _.clone @Response

req = https.request http_options, (res) ->
response.code = res.statusCode
res.on 'data', (d) ->
response.raw_body += d
res.on 'end', ->

if response.raw_body? and response.raw_body.trim().length > 0
response.body = JSON.parse response.raw_body

cb(response)

req.setTimeout options.timeout
req.on 'error', (e) ->
console.log e

unless method is 'GET'
req.write "#{payload}\n"
req.end()


@post = (request_url, body = {}, options = {}, cb = () ->) =>
process 'POST', request_url, body, options
@get = (request_url, body = {}, options = {}, cb = () ->) =>
process 'GET', request_url, body, options, cb
@put = (request_url, body = {}, options = {}, cb = () ->) =>
process 'PUT', request_url, body, options






62 changes: 62 additions & 0 deletions zencoder_ca_chain.crt
@@ -0,0 +1,62 @@
-----BEGIN CERTIFICATE-----
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy
dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t
MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG
A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp
b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl
cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv
bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE
VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR
uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM
pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC
VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u
ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u
ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1
MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE
ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j
b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg
U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA
A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/
I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3
wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC
AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb
oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5
BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p
dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk
MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp
b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0
MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi
E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa
MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI
hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN
95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd
2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD
VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV
UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH
iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS
r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4
04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r
GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9
3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P
lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
-----END CERTIFICATE-----

0 comments on commit 26013b6

Please sign in to comment.