diff options
Diffstat (limited to 'www/js/rdxport.js')
-rw-r--r-- | www/js/rdxport.js | 345 |
1 files changed, 172 insertions, 173 deletions
diff --git a/www/js/rdxport.js b/www/js/rdxport.js index db8bf0a..73e4a7d 100644 --- a/www/js/rdxport.js +++ b/www/js/rdxport.js @@ -1,38 +1,64 @@ -/* - * rhwebimport - * - * Copyright (C) 2014-2016 Christian Pointner <equinox@helsinki.at> +/** + * rdxportjs a javascript library for the rivendell rdxport api. * Copyright (C) 2015-2016 Peter Grassberger <petertheone@gmail.com> * - * This file is part of rhwebimport. - * - * rhwebimport is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * rhwebimport is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with rhwebimport. If not, see <http://www.gnu.org/licenses/>. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ 'use strict'; -var Rivendell = Rivendell || {}; - -Rivendell.Rdxport = function(username, token, endpoint) { +var Rdxport = Rdxport || {}; + +Rdxport.CMD_EXPORT = 1; +Rdxport.CMD_IMPORT = 2; +Rdxport.CMD_DELETEAUDIO = 3; +Rdxport.CMD_LISTGROUPS = 4; +Rdxport.CMD_LISTGROUP = 5; +Rdxport.CMD_LISTCARTS = 6; +Rdxport.CMD_LISTCART = 7; +Rdxport.CMD_LISTCUT = 8; +Rdxport.CMD_LISTCUTS = 9; +Rdxport.CMD_ADDCUT = 10; +Rdxport.CMD_REMOVECUT = 11; +Rdxport.CMD_ADDCART = 12; +Rdxport.CMD_REMOVECART = 13; +Rdxport.CMD_EDITCART = 14; +Rdxport.CMD_EDITCUT = 15; +Rdxport.CMD_EXPORT_PEAKS = 16; +Rdxport.CMD_TRIMAUDIO = 17; +Rdxport.CMD_COPYAUDIO = 18; +Rdxport.CMD_AUDIOINFO = 19; +Rdxport.CMD_LISTLOGS = 20; +Rdxport.CMD_LISTSERVICES = 21; +Rdxport.CMD_LISTLOG = 22; +Rdxport.CMD_AUDIOSTORE = 23; + +Rdxport.Rdxport = function(username, token, endpoint) { this.username = username; this.token = token; this.endpoint = endpoint; }; -Rivendell.Rdxport.prototype.listLog = function(name, success) { +Rdxport.RdxportObject = function(username, token, endpoint) { + Rdxport.Rdxport.call(this, username, token, endpoint); +}; +Rdxport.RdxportObject.prototype = Object.create(Rdxport.Rdxport.prototype); +Rdxport.RdxportObject.prototype.constructor = Rdxport.RdxportObject; + +Rdxport.Rdxport.prototype.listLog = function(name, success) { var command = { - COMMAND: 22, + COMMAND: Rdxport.CMD_LISTLOG, LOGIN_NAME: this.username, PASSWORD: this.token, NAME: name @@ -40,41 +66,38 @@ Rivendell.Rdxport.prototype.listLog = function(name, success) { return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.listLogs = function(success) { - var command = { - COMMAND: 20, - LOGIN_NAME: this.username, - PASSWORD: this.token - //todo: fix optionals - /*SERVICE_NAME: serviceName, - TRACKABLE: trackable*/ - }; - return $.post(this.endpoint, command, success, 'xml'); +Rdxport.Rdxport.prototype.listLogs = function(options, success) { + options = options || {}; + options.COMMAND = Rdxport.CMD_LISTLOGS; + options.LOGIN_NAME = this.username; + options.PASSWORD = this.token; + return $.post(this.endpoint, options, success, 'xml'); }; -Rivendell.Rdxport.prototype.listServices = function(success) { - var command = { - COMMAND: 21, - LOGIN_NAME: this.username, - PASSWORD: this.token - //todo: fix optionals - /*TRACKABLE: trackable*/ - }; - return $.post(this.endpoint, command, success, 'xml'); +Rdxport.Rdxport.prototype.listServices = function(options, success) { + options = options || {}; + options.COMMAND = Rdxport.CMD_LISTSERVICES; + options.LOGIN_NAME = this.username; + options.PASSWORD = this.token; + return $.post(this.endpoint, options, success, 'xml'); }; -Rivendell.Rdxport.prototype.listGroups = function(success) { +Rdxport.Rdxport.prototype.listGroups = function(success) { var command = { - COMMAND: 4, + COMMAND: Rdxport.CMD_LISTGROUPS, LOGIN_NAME: this.username, PASSWORD: this.token }; return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.listGroup = function(groupName, success) { +Rdxport.RdxportObject.prototype.listGroups = function(success) { + Rdxport.Rdxport.call(this, success); +}; + +Rdxport.Rdxport.prototype.listGroup = function(groupName, success) { var command = { - COMMAND: 5, + COMMAND: Rdxport.CMD_LISTGROUP, LOGIN_NAME: this.username, PASSWORD: this.token, GROUP_NAME: groupName @@ -82,53 +105,45 @@ Rivendell.Rdxport.prototype.listGroup = function(groupName, success) { return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.listCarts = function(groupName, includeCuts, success) { - var command = { - COMMAND: 6, - LOGIN_NAME: this.username, - PASSWORD: this.token, - GROUP_NAME: groupName, - INCLUDE_CUTS: includeCuts - }; - return $.post(this.endpoint, command, success, 'xml'); +Rdxport.Rdxport.prototype.listCarts = function(options, success) { + options = options || {}; + options.COMMAND = Rdxport.CMD_LISTCARTS; + options.LOGIN_NAME = this.username; + options.PASSWORD = this.token; + return $.post(this.endpoint, options, success, 'xml'); }; -Rivendell.Rdxport.prototype.listCart = function(cartNumber, includeCuts, success) { - var command = { - COMMAND: 7, - LOGIN_NAME: this.username, - PASSWORD: this.token, - CART_NUMBER: cartNumber, - INCLUDE_CUTS: includeCuts - }; - return $.post(this.endpoint, command, success); +Rdxport.Rdxport.prototype.listCart = function(cartNumber, options, success) { + options = options || {}; + options.COMMAND = Rdxport.CMD_LISTCART; + options.LOGIN_NAME = this.username; + options.PASSWORD = this.token; + options.CART_NUMBER = cartNumber; + return $.post(this.endpoint, options, success); }; -Rivendell.Rdxport.prototype.addCart = function(groupName, type, cartNumber, success) { - var command = { - COMMAND: 12, - LOGIN_NAME: this.username, - PASSWORD: this.token, - GROUP_NAME: groupName, - TYPE: type - }; - if (cartNumber !== null) { - command.CART_NUMBER = cartNumber; - } - return $.post(this.endpoint, command, success, 'xml'); +Rdxport.Rdxport.prototype.addCart = function(groupName, type, options, success) { + options = options || {}; + options.COMMAND = Rdxport.CMD_ADDCART; + options.LOGIN_NAME = this.username; + options.PASSWORD = this.token; + options.GROUP_NAME = groupName; + options.TYPE = type; + return $.post(this.endpoint, options, success, 'xml'); }; -Rivendell.Rdxport.prototype.editCart = function(cartNumber, options, success) { - options.COMMAND = 14; +Rdxport.Rdxport.prototype.editCart = function(cartNumber, options, success) { + options = options || {}; + options.COMMAND = Rdxport.CMD_EDITCART; options.LOGIN_NAME = this.username; options.PASSWORD = this.token; options.CART_NUMBER = cartNumber; return $.post(this.endpoint, options, success, 'xml'); }; -Rivendell.Rdxport.prototype.removeCart = function(cartNumber, success) { +Rdxport.Rdxport.prototype.removeCart = function(cartNumber, success) { var command = { - COMMAND: 13, + COMMAND: Rdxport.CMD_REMOVECART, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber @@ -136,9 +151,9 @@ Rivendell.Rdxport.prototype.removeCart = function(cartNumber, success) { return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.listCuts = function(cartNumber, success) { +Rdxport.Rdxport.prototype.listCuts = function(cartNumber, success) { var command = { - COMMAND: 9, + COMMAND: Rdxport.CMD_LISTCUTS, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber @@ -146,9 +161,9 @@ Rivendell.Rdxport.prototype.listCuts = function(cartNumber, success) { return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.listCut = function(cartNumber, cutNumber, success) { +Rdxport.Rdxport.prototype.listCut = function(cartNumber, cutNumber, success) { var command = { - COMMAND: 8, + COMMAND: Rdxport.CMD_LISTCUT, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber, @@ -157,9 +172,9 @@ Rivendell.Rdxport.prototype.listCut = function(cartNumber, cutNumber, success) { return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.addCut = function(cartNumber, success) { +Rdxport.Rdxport.prototype.addCut = function(cartNumber, success) { var command = { - COMMAND: 10, + COMMAND: Rdxport.CMD_ADDCUT, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber @@ -167,8 +182,9 @@ Rivendell.Rdxport.prototype.addCut = function(cartNumber, success) { return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.editCut = function(cartNumber, cutNumber, options, success) { - options.COMMAND = 15; +Rdxport.Rdxport.prototype.editCut = function(cartNumber, cutNumber, options, success) { + options = options || {}; + options.COMMAND = Rdxport.CMD_EDITCUT; options.LOGIN_NAME = this.username; options.PASSWORD = this.token; options.CART_NUMBER = cartNumber; @@ -176,7 +192,7 @@ Rivendell.Rdxport.prototype.editCut = function(cartNumber, cutNumber, options, s return $.post(this.endpoint, options, success, 'xml'); }; -Rivendell.Rdxport.prototype.addAndEditCut = function(cartNumber, options, success) { +Rdxport.Rdxport.prototype.addAndEditCut = function(cartNumber, options, success) { var self = this; var returnJqXHR = null; return this.addCut(cartNumber, success) @@ -186,9 +202,9 @@ Rivendell.Rdxport.prototype.addAndEditCut = function(cartNumber, options, succes }); }; -Rivendell.Rdxport.prototype.removeCut = function(cartNumber, cutNumber, success) { +Rdxport.Rdxport.prototype.removeCut = function(cartNumber, cutNumber, success) { var command = { - COMMAND: 11, + COMMAND: Rdxport.CMD_REMOVECUT, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber, @@ -197,18 +213,8 @@ Rivendell.Rdxport.prototype.removeCut = function(cartNumber, cutNumber, success) return $.post(this.endpoint, command, success, 'xml'); }; -/** - * - * todo: copy description and other data. - * - * @param sourceCartNumber - * @param sourceCutNumber - * @param destinationCartNumber - * @param success - * @returns {*} - */ -Rivendell.Rdxport.prototype.copyCut = function(sourceCartNumber, sourceCutNumber, - destinationCartNumber, success) { +Rdxport.Rdxport.prototype.copyCut = function(sourceCartNumber, sourceCutNumber, + destinationCartNumber, success) { var self = this; var returnJqXHR = null; this.listCut(sourceCartNumber, sourceCutNumber, function(data, textStatus, jqXHR) { @@ -227,15 +233,8 @@ Rivendell.Rdxport.prototype.copyCut = function(sourceCartNumber, sourceCutNumber return returnJqXHR; }; -/** - * - * @param sourceCartNumber - * @param sourceCutNumber - * @param destinationCartNumber - * @param success - */ -Rivendell.Rdxport.prototype.moveCut = function(sourceCartNumber, sourceCutNumber, - destinationCartNumber, success) { +Rdxport.Rdxport.prototype.moveCut = function(sourceCartNumber, sourceCutNumber, + destinationCartNumber, success) { var self = this; var returnJqXHR = null; this.copyCut(sourceCartNumber, sourceCutNumber, destinationCartNumber, function(data, textStatus, jqXHR) { @@ -244,10 +243,10 @@ Rivendell.Rdxport.prototype.moveCut = function(sourceCartNumber, sourceCutNumber return returnJqXHR; }; -Rivendell.Rdxport.prototype.copyAudio = function(sourceCartNumber, sourceCutNumber, - destinationCartNumber, destinationCutNumber, success) { +Rdxport.Rdxport.prototype.copyAudio = function(sourceCartNumber, sourceCutNumber, + destinationCartNumber, destinationCutNumber, success) { var command = { - COMMAND: 18, + COMMAND: Rdxport.CMD_COPYAUDIO, LOGIN_NAME: this.username, PASSWORD: this.token, SOURCE_CART_NUMBER: sourceCartNumber, @@ -258,9 +257,9 @@ Rivendell.Rdxport.prototype.copyAudio = function(sourceCartNumber, sourceCutNumb return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.audioInfo = function(cartNumber, cutNumber, success) { +Rdxport.Rdxport.prototype.audioInfo = function(cartNumber, cutNumber, success) { var command = { - COMMAND: 19, + COMMAND: Rdxport.CMD_AUDIOINFO, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber, @@ -269,19 +268,19 @@ Rivendell.Rdxport.prototype.audioInfo = function(cartNumber, cutNumber, success) return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.audioStore = function(success) { +Rdxport.Rdxport.prototype.audioStore = function(success) { var command = { - COMMAND: 23, + COMMAND: Rdxport.CMD_AUDIOSTORE, LOGIN_NAME: this.username, PASSWORD: this.token }; return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.import = function(cartNumber, cutNumber, channels, normalizationLevel, autotrimLevel, - useMetadata, filename, success) { +Rdxport.Rdxport.prototype.import = function(cartNumber, cutNumber, channels, normalizationLevel, autotrimLevel, + useMetadata, filename, success) { var command = { - COMMAND: 2, + COMMAND: Rdxport.CMD_IMPORT, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber, @@ -295,11 +294,11 @@ Rivendell.Rdxport.prototype.import = function(cartNumber, cutNumber, channels, n return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.export = function(cartNumber, cutNumber, format, channels, sampleRate, bitRate, - quality, startPoint, endPoint, normalizationLevel, enableMetadata, - success) { +Rdxport.Rdxport.prototype.export = function(cartNumber, cutNumber, format, channels, sampleRate, bitRate, + quality, startPoint, endPoint, normalizationLevel, enableMetadata, + success) { var command = { - COMMAND: 1, + COMMAND: Rdxport.CMD_EXPORT, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber, @@ -317,9 +316,9 @@ Rivendell.Rdxport.prototype.export = function(cartNumber, cutNumber, format, cha return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.exportPeaks = function(cartNumber, cutNumber, success) { +Rdxport.Rdxport.prototype.exportPeaks = function(cartNumber, cutNumber, success) { var command = { - COMMAND: 16, + COMMAND: Rdxport.CMD_EXPORT_PEAKS, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber, @@ -328,9 +327,9 @@ Rivendell.Rdxport.prototype.exportPeaks = function(cartNumber, cutNumber, succes return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.trimAudio = function(cartNumber, cutNumber, trimLevel, success) { +Rdxport.Rdxport.prototype.trimAudio = function(cartNumber, cutNumber, trimLevel, success) { var command = { - COMMAND: 17, + COMMAND: Rdxport.CMD_TRIMAUDIO, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber, @@ -340,9 +339,9 @@ Rivendell.Rdxport.prototype.trimAudio = function(cartNumber, cutNumber, trimLeve return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.Rdxport.prototype.deleteAudio = function(cartNumber, cutNumber, success) { +Rdxport.Rdxport.prototype.deleteAudio = function(cartNumber, cutNumber, success) { var command = { - COMMAND: 3, + COMMAND: Rdxport.CMD_DELETEAUDIO, LOGIN_NAME: this.username, PASSWORD: this.token, CART_NUMBER: cartNumber, @@ -351,13 +350,13 @@ Rivendell.Rdxport.prototype.deleteAudio = function(cartNumber, cutNumber, succes return $.post(this.endpoint, command, success, 'xml'); }; -Rivendell.GroupList = function() { +Rdxport.GroupList = function() { this.groups = []; }; -Rivendell.Group = function(groupName, description, lowcart, highcart, normlevel, trimlevel) { +Rdxport.Group = function(groupName, description, lowcart, highcart, normlevel, trimlevel) { this.xml = null; - // looks strange but child somehow can't do use $(this) otherwise. + // looks strange but child somehow can't use $(this) otherwise. this.$this = $(this); if (arguments.length === 1) { @@ -381,16 +380,16 @@ Rivendell.Group = function(groupName, description, lowcart, highcart, normlevel, this.cartsByNumber = {}; }; -Rivendell.Group.prototype.getCartByNumber = function(number) { +Rdxport.Group.prototype.getCartByNumber = function(number) { return this.cartsByNumber[number] ? this.cartsByNumber[number] : null; }; -Rivendell.Group.prototype.addCart = function(cart) { +Rdxport.Group.prototype.addCart = function(cart) { this.carts.push(cart); this.cartsByNumber[cart.number] = cart; }; -Rivendell.Group.prototype.removeCart = function(cart) { +Rdxport.Group.prototype.removeCart = function(cart) { var self = this; $.each(this.carts, function(index, currentCart){ if(currentCart === cart) { @@ -400,7 +399,7 @@ Rivendell.Group.prototype.removeCart = function(cart) { delete this.cartsByNumber[cart.number]; }; -Rivendell.Group.prototype.fetchCarts = function() { +Rdxport.Group.prototype.fetchCarts = function() { var self = this; rdxport.listCarts(this.groupName, 1, function(cartsXml, status, req) { self.carts = []; @@ -408,11 +407,11 @@ Rivendell.Group.prototype.fetchCarts = function() { var dbs = $('cartList', cartsXml).children(); dbs.each(function(index, cartXml) { - var cart = new Rivendell.Cart(cartXml, self); + var cart = new Rdxport.Cart(cartXml, self); var cuts = $('cutList', cartXml).children(); cuts.each(function(index, cut) { - cart.cuts.push(new Rivendell.Cut(cut, cart)); + cart.cuts.push(new Rdxport.Cut(cut, cart)); }); self.addCart(cart); @@ -421,37 +420,37 @@ Rivendell.Group.prototype.fetchCarts = function() { }); }; -Rivendell.Log = function(line, id, type, cartType, cartNumber, cutNumber, groupName, groupColor, title, group) { +Rdxport.Log = function(line, id, type, cartType, cartNumber, cutNumber, groupName, groupColor, title, group) { /*this.xml = null; - if (arguments.length === 2) { - this.xml = arguments[0]; - this.line = $('line', this.xml).text(); - this.id = $('id', this.xml).text(); - this.type = $('type', this.xml).text(); - this.cartType = $('cartType', this.xml).text(); - this.cartNumber = $('cartNumber', this.xml).text(); - this.cutNumber = $('cutNumber', this.xml).text(); - this.groupName = $('groupName', this.xml).text(); - this.groupColor = $('groupColor', this.xml).text(); - this.title = $('title', this.xml).text(); - this.group = arguments[1]; - } else {*/ - this.line = line; - this.id = id; - this.type = type; - this.cartType = cartType; - this.cartNumber = cartNumber; - this.cutNumber = cutNumber; - this.groupName = groupName; - this.groupColor = groupColor; - this.title = title; - this.group = group; + if (arguments.length === 2) { + this.xml = arguments[0]; + this.line = $('line', this.xml).text(); + this.id = $('id', this.xml).text(); + this.type = $('type', this.xml).text(); + this.cartType = $('cartType', this.xml).text(); + this.cartNumber = $('cartNumber', this.xml).text(); + this.cutNumber = $('cutNumber', this.xml).text(); + this.groupName = $('groupName', this.xml).text(); + this.groupColor = $('groupColor', this.xml).text(); + this.title = $('title', this.xml).text(); + this.group = arguments[1]; + } else {*/ + this.line = line; + this.id = id; + this.type = type; + this.cartType = cartType; + this.cartNumber = cartNumber; + this.cutNumber = cutNumber; + this.groupName = groupName; + this.groupColor = groupColor; + this.title = title; + this.group = group; //} }; -Rivendell.Log.newFromXml = function(xml, group) { - var log = new Rivendell.Log( +Rdxport.Log.newFromXml = function(xml, group) { + var log = new Rdxport.Log( $('line', xml).text(), $('id', xml).text(), $('type', xml).text(), @@ -467,9 +466,9 @@ Rivendell.Log.newFromXml = function(xml, group) { return log; }; -Rivendell.Cart = function(number, title, groupName, group) { +Rdxport.Cart = function(number, title, groupName, group) { this.xml = null; - + if (arguments.length === 2) { this.xml = arguments[0]; this.number = $('number', this.xml).text(); @@ -488,11 +487,11 @@ Rivendell.Cart = function(number, title, groupName, group) { this.cuts = []; }; -Rivendell.Cart.prototype.addCut = function(cut) { +Rdxport.Cart.prototype.addCut = function(cut) { this.cuts.push(cut); }; -Rivendell.Cart.prototype.removeCut = function(cut) { +Rdxport.Cart.prototype.removeCut = function(cut) { var self = this; $.each(this.cuts, function(index, currentCut){ if(currentCut === cut) { @@ -501,8 +500,8 @@ Rivendell.Cart.prototype.removeCut = function(cut) { }); }; -Rivendell.Cut = function(name, description, cart, length, originDatetime, - playCounter, lastPlayDatetime) { +Rdxport.Cut = function(name, description, cart, length, originDatetime, + playCounter, lastPlayDatetime) { this.xml = null; if (arguments.length === 2) { |