diff --git a/README.md b/README.md index eb640e357d..49d666446a 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,19 @@ Alternatively you can spin up a mock instance of the admin ui with: This uses mock data instead of a real Opencast. This means certain features will not work when using this mode. +### Alternative ports +The static file server and the proxy server serve their content +on the port 5000. If this is used already (as it is on macOS) +you can specify an alternative port in the `PORT` environment variable, +for example: + + PORT=5001 npm run proxy-server ... + +Note that you need to specify the same port when running the client, +this time in the `PROXY_PORT` variable: + + PROXY_PORT=5001 npm run client How to cut a release for Opencast --------------------------------- @@ -111,4 +123,4 @@ Configuration ------------- The Admin UI frontend cannot be directly configured. Rather, it adapts to the various configurations in the Opencast backend. TODO: Throw in some links to the -docs, which ones? \ No newline at end of file +docs, which ones? diff --git a/app/src/setupProxy.js b/app/src/setupProxy.js index e93c742cec..693d5a3cb8 100644 --- a/app/src/setupProxy.js +++ b/app/src/setupProxy.js @@ -1,157 +1,23 @@ const { createProxyMiddleware } = require("http-proxy-middleware"); + +const port = process.env.PROXY_PORT || 5000; + module.exports = function (app) { - app.use( - "/admin-ng/event/new/conflicts", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/admin-ng", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/acl-manager", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/i18n", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/i18n", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/blacklist", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/capture-agents", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/email", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/groups", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/info", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/roles", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/services", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/sysinfo", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/workflow", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/img", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/app/styles", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/staticfiles", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/public", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/modules", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/shared", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/j_spring_security_check", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); - app.use( - "/ui", - createProxyMiddleware({ - target: "http://localhost:5000", - changeOrigin: true, - }) - ); + app.use( + [ + "/api", + "/admin-ng", + "/acl-manager", + "/info", + "/services", + "/sysinfo", + "/staticfiles", + "/j_spring_security_check", + "/ui", + ], + createProxyMiddleware({ + target: `http://localhost:${port}`, + changeOrigin: true, + }), + ); }; diff --git a/package-lock.json b/package-lock.json index 65a99701e4..810cf75e44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,95 +7,14 @@ "": { "name": "staticserver", "version": "1.0.0", + "license": "ECL-2.0", "dependencies": { "express": "^4.18.2", - "http-proxy-middleware": "^2.0.6", "nodemon": "^3.0.3", "request-digest": "^1.0.13", "url-parse": "^1.5.10" } }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.17", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.33", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/http-proxy": { - "version": "1.17.10", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@types/node": { - "version": "18.16.0", - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/@types/serve-static": { - "version": "1.15.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, "node_modules/abbrev": { "version": "1.1.1", "license": "ISC" @@ -394,10 +313,6 @@ "node": ">= 0.6" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "license": "MIT" - }, "node_modules/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", @@ -484,24 +399,6 @@ "node": ">= 0.8" } }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/forever-agent": { "version": "0.6.1", "license": "Apache-2.0", @@ -615,40 +512,6 @@ "node": ">= 0.8" } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, "node_modules/http-signature": { "version": "1.2.0", "license": "MIT", @@ -721,16 +584,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "license": "MIT" @@ -800,17 +653,6 @@ "node": ">= 0.6" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/mime": { "version": "1.6.0", "license": "MIT", diff --git a/package.json b/package.json index cf11cd1357..1542726d2b 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ }, "dependencies": { "express": "^4.18.2", - "http-proxy-middleware": "^2.0.6", "nodemon": "^3.0.3", "request-digest": "^1.0.13", "url-parse": "^1.5.10" diff --git a/proxyServer.js b/proxyServer.js index 18a251681c..a3acf925b6 100644 --- a/proxyServer.js +++ b/proxyServer.js @@ -1,6 +1,5 @@ const path = require("path"); const express = require("express"); -const { createProxyMiddleware } = require('http-proxy-middleware'); const requestDigest = require('request-digest'); const urlParser = require('url-parse'); @@ -24,44 +23,6 @@ if (password === undefined) { throw new Error("Runtime Parameter password is undefined!"); } - - -// Set up static files -// TODO: maybe future adjustments necessary when code is further implemented -app.use( - "/styles", - express.static(path.join(__dirname, "app/build/static/css")) -); -app.use( - "/modules", - express.static(path.join(__dirname, "app/src/components")) -); -app.use( - "/shared", - express.static(path.join(__dirname, "app/src/components")) -); -app.use( - "/public", - express.static(path.join(__dirname, "app/public/")) -); -app.use( - "/img", - express.static(path.join(__dirname, "app/src/img")) -); -app.use( - "/info", - express.static(path.join(__dirname, "test/app/GET/info")) -); -app.use( - "/i18n", - express.static(path.join(__dirname, "test/app/GET/i18n")) -); -app.use( - "/sysinfo", - express.static(path.join(__dirname, "test/app/GET/sysinfo")) -); - - app.use('', (req, res, next) => { console.log('Proxy ' + req.method + ' ' + req.url + ' -> ' + host + req.url); @@ -110,25 +71,4 @@ app.use('', (req, res, next) => { }); }); -// todo: not sure if really needed -app.use( - "/admin-ng", - createProxyMiddleware({ - target: host, - headers: { - 'X-Requested-Auth': 'Digest' - }, - changeOrigin: true - })); - -app.use( - "/services", - createProxyMiddleware({ - target: host, - headers: { - 'X-Requested-Auth': 'Digest' - }, - changeOrigin: true - })); - app.listen(port, () => console.log(`Listening on port ${port}`)); diff --git a/staticServer.js b/staticServer.js index 851250f6cf..352b4c9b36 100644 --- a/staticServer.js +++ b/staticServer.js @@ -1,103 +1,25 @@ const path = require("path"); const express = require("express"); -const router = express.Router(); const app = express(); const port = process.env.PORT || 5000; -//Todo: not all serve static links from admin-ui-frontend here -app.use( - "/admin-ng", - express.static(path.join(__dirname, "test/app/GET/admin-ng")) -); -app.use( - "/acl-manager", - express.static(path.join(__dirname, "test/app/GET/acl-manager")) -); -app.use( - "/blacklist", - express.static(path.join(__dirname, "test/app/GET/blacklist")) -); -app.use( - "/capture-agents", - express.static(path.join(__dirname, "test/app/GET/capture-agents")) -); -app.use( - "/email", - express.static(path.join(__dirname, "test/app/GET/email")) -); -app.use( - "/groups", - express.static(path.join(__dirname, "test/app/GET/groups")) -); -app.use( - "/info", - express.static(path.join(__dirname, "test/app/GET/info")) -); -app.use( - "/roles", - express.static(path.join(__dirname, "test/app/GET/roles")) -); -app.use( - "/services", - express.static(path.join(__dirname, "test/app/GET/services")) -); -app.use( - "/sysinfo", - express.static(path.join(__dirname, "test/app/GET/sysinfo")) -); -app.use( - "/workflow", - express.static(path.join(__dirname, "test/app/GET/workflow")) -); -app.use( - "/ui", - express.static(path.join(__dirname, "test/app/GET/ui")) -); -app.use("/app/styles", - express.static(path.join(__dirname, "app/src/styles")) -); -app.use("/i18n", - express.static(path.join(__dirname, "test/app/GET/i18n")) -); -app.use("/public", - express.static(path.join(__dirname, "app/public")) -); -app.use("/staticfiles", - express.static(path.join(__dirname, "test/app/POST")) -); -app.use("/modules", - express.static(path.join(__dirname, "app/src/components")) -); -app.use("/shared", - express.static(path.join(__dirname, "app/src/components")) -); -app.use("/img", - express.static(path.join(__dirname, "app/src/img")) -); - -app.post("/*", (req, res) => { - let filePath = path.join(__dirname,'test/app/' + req.method + req.url); - setTimeout(function () { - res.status(201); - res.sendFile(filePath); - }, 1000); +app.get("/*", express.static(path.join(__dirname, "test/app/GET"))); +app.post("/*", (req, res, next) => { + res.status(201); + next(); }); -app.delete("/*", (req, res) => { - let filePath = path.join(__dirname, 'test/app/' + req.method + req.url); - setTimeout(function() { +const serveStatic = (req, res) => { + const filePath = path.join(__dirname, "test/app", req.method.toUpperCase(), req.url); + setTimeout(() => { res.sendFile(filePath); }, 1000); -}); +}; -app.put("/*", (req, res) => { - let filePath = path.join(__dirname, 'test/app/' + req.method + req.url); - setTimeout(function () { - res.sendFile(filePath); - }, 1000); -}); +for (const method of ["put", "post", "delete"]) { + app[method]("/*", serveStatic); +} app.listen(port, () => console.log(`Listing on port ${port}`)); - diff --git a/test/app/GET/capture-agents/agents.json b/test/app/GET/capture-agents/agents.json deleted file mode 100644 index 21f6ed33cb..0000000000 --- a/test/app/GET/capture-agents/agents.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "count": 4, - "limit": 0, - "offset": 0, - "results": [ - { - "Name": "agent4", - "Status": "AGENTS.STATUS.OK", - "Update": "2014-05-26T15:37:02Z", - }, - { - "Name": "agent3", - "Status": "AGENTS.STATUS.OK", - "Update": "2014-05-26T15:37:02Z", - }, - { - "Name": "agent2", - "Status": "AGENTS.STATUS.OK", - "Update": "2014-05-26T15:37:02Z", - }, - { - "Name": "agent1", - "Status": "AGENTS.STATUS.OK", - "Update": "2014-05-26T15:37:02Z", - } - ], - "total": 4 -} - diff --git a/test/app/GET/conflictCheckMultiple.json b/test/app/GET/conflictCheckMultiple.json deleted file mode 100644 index 8742bc6226..0000000000 --- a/test/app/GET/conflictCheckMultiple.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "device": { - "id": "•mock• agent4", - "status": "ok", - "name": "•mock• agent4", - "updated": "5:37 PM", - "inputs": [ - { - "id": "video", - "value": "CAPTURE_AGENT.DEVICE.CAMERA", - "$$hashKey": "0AA" - }, - { - "id": "desktop", - "value": "CAPTURE_AGENT.DEVICE.PRESENTATION", - "$$hashKey": "0AB" - } - ], - "inputMethods": { - "CAPTURE_AGENT.DEVICE.PRESENTATION": true - } - }, - "weekdays": { - "MO": true, - "WE": true, - "TH": true - }, - "start": { - "date": "2014-07-08", - "hour": 17, - "minute": 0 - }, - "end": { - "date": "2014-07-23", - "hour": 18, - "minute": 0 - }, - "duration": { - "hour": 1, - "minute": 0 - } -} diff --git a/test/app/GET/conflictCheckSingle.json b/test/app/GET/conflictCheckSingle.json deleted file mode 100644 index 22900d9b8d..0000000000 --- a/test/app/GET/conflictCheckSingle.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "SCHEDULE_MULTIPLE": { - "device": { - "inputMethods": {} - }, - "weekdays": {} - }, - "SCHEDULE_SINGLE": { - "device": { - "id": "entwine-captureagent", - "inputMethods": { - "CAPTURE_AGENT.DEVICE.MICROPHONE": true - }, - "inputs": [ - { - "$$hashKey": "0AP", - "id": "Microphone", - "value": "CAPTURE_AGENT.DEVICE.MICROPHONE" - }, - { - "$$hashKey": "0AQ", - "id": "Camera", - "value": "CAPTURE_AGENT.DEVICE.CAMERA" - }, - { - "$$hashKey": "0AR", - "id": "Presentation", - "value": "CAPTURE_AGENT.DEVICE.PRESENTATION" - } - ], - "name": "entwine-captureagent", - "status": "idle", - "updated": "11:41 AM" - }, - "duration": { - "hour": 4, - "minute": 4 - }, - "start": { - "date": "2014-07-16", - "hour": 8, - "minute": 0 - }, - "end": { - "date": "2014-07-16", - "hour": 12, - "minute": 4 - } - }, - "type": "SCHEDULE_SINGLE", - "upload": {} -} diff --git a/test/app/GET/conflictResponse.json b/test/app/GET/conflictResponse.json deleted file mode 100644 index 8c03fd3f2d..0000000000 --- a/test/app/GET/conflictResponse.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "title": "test", - "start": "2014-07-14T06:00:00Z", - "end": "2014-07-14T06:00:00Z" - } -] diff --git a/test/app/GET/groups/groups.json b/test/app/GET/groups/groups.json deleted file mode 100644 index 0435722c97..0000000000 --- a/test/app/GET/groups/groups.json +++ /dev/null @@ -1,335 +0,0 @@ -{ - "groups": { - "group": { - "id": "it_team", - "organization": { - "id": "mh_default_org", - "name": "•mock• Opencast Project", - "servers": { - "server": { - "port": "-1", - "name": "•mock• mhallinone-sbox.ethz.ch" - } - }, - "adminRole": "ROLE_ADMIN", - "anonymousRole": "ROLE_ANONYMOUS", - "properties": { - "property": [ - { - "key": "trim.select_item_at_current_time", - "$": "y" - }, - { - "key": "trim.set_current_time_as_outpoint", - "$": "o" - }, - { - "key": "logo_large", - "$": "\/engage\/ui\/img\/mh_logos\/MatterhornLogo_large.png" - }, - { - "key": "trim.play_ending_of_current_segment", - "$": "n" - }, - { - "key": "trim.previous_marker", - "$": "up" - }, - { - "key": "trim.delete_selected_segment", - "$": "delete" - }, - { - "key": "adminui.user.external_role_display", - "$": "false" - }, - { - "key": "org.opencastproject.engage.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.next_marker", - "$": "down" - }, - { - "key": "trim.next_frame", - "$": "right" - }, - { - "key": "trim.play_pause", - "$": "space" - }, - { - "key": "org.opencastproject.oaipmh.server.hosturl", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.play_current_segment", - "$": "c" - }, - { - "key": "trim.previous_frame", - "$": "left" - }, - { - "key": "trim.split_at_current_time", - "$": "v" - }, - { - "key": "org.opencastproject.admin.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.player", - "$": "engage" - }, - { - "key": "trim.set_current_time_as_inpoint", - "$": "i" - }, - { - "key": "feed.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.extendedannotations.enable", - "$": "false" - }, - { - "key": "trim.play_current_pre_post", - "$": "shift+c" - }, - { - "key": "logo_small", - "$": "\/engage\/ui\/img\/mh_logos\/OpencastLogo.png" - } - ] - } - }, - "name": "•mock• IT Team", - "description": "The IT Team", - "role": "ROLE_GROUP_IT_TEAM", - "members": { - "member": "admin" - }, - "roles": { - "role": [ - { - "name": "•mock• ROLE_ADMIN", - "organization": { - "id": "mh_default_org", - "name": "•mock• Opencast Project", - "servers": { - "server": { - "port": "-1", - "name": "•mock• mhallinone-sbox.ethz.ch" - } - }, - "adminRole": "ROLE_ADMIN", - "anonymousRole": "ROLE_ANONYMOUS", - "properties": { - "property": [ - { - "key": "trim.select_item_at_current_time", - "$": "y" - }, - { - "key": "trim.set_current_time_as_outpoint", - "$": "o" - }, - { - "key": "logo_large", - "$": "\/engage\/ui\/img\/mh_logos\/MatterhornLogo_large.png" - }, - { - "key": "trim.play_ending_of_current_segment", - "$": "n" - }, - { - "key": "trim.previous_marker", - "$": "up" - }, - { - "key": "trim.delete_selected_segment", - "$": "delete" - }, - { - "key": "adminui.user.external_role_display", - "$": "false" - }, - { - "key": "org.opencastproject.engage.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.next_marker", - "$": "down" - }, - { - "key": "trim.next_frame", - "$": "right" - }, - { - "key": "trim.play_pause", - "$": "space" - }, - { - "key": "org.opencastproject.oaipmh.server.hosturl", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.play_current_segment", - "$": "c" - }, - { - "key": "trim.previous_frame", - "$": "left" - }, - { - "key": "trim.split_at_current_time", - "$": "v" - }, - { - "key": "org.opencastproject.admin.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.player", - "$": "engage" - }, - { - "key": "trim.set_current_time_as_inpoint", - "$": "i" - }, - { - "key": "feed.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.extendedannotations.enable", - "$": "false" - }, - { - "key": "trim.play_current_pre_post", - "$": "shift+c" - }, - { - "key": "logo_small", - "$": "\/engage\/ui\/img\/mh_logos\/OpencastLogo.png" - } - ] - } - } - }, - { - "name": "•mock• ROLE_USER", - "organization": { - "id": "mh_default_org", - "name": "•mock• Opencast Project", - "servers": { - "server": { - "port": "-1", - "name": "•mock• mhallinone-sbox.ethz.ch" - } - }, - "adminRole": "ROLE_ADMIN", - "anonymousRole": "ROLE_ANONYMOUS", - "properties": { - "property": [ - { - "key": "trim.select_item_at_current_time", - "$": "y" - }, - { - "key": "trim.set_current_time_as_outpoint", - "$": "o" - }, - { - "key": "logo_large", - "$": "\/engage\/ui\/img\/mh_logos\/MatterhornLogo_large.png" - }, - { - "key": "trim.play_ending_of_current_segment", - "$": "n" - }, - { - "key": "trim.previous_marker", - "$": "up" - }, - { - "key": "trim.delete_selected_segment", - "$": "delete" - }, - { - "key": "adminui.user.external_role_display", - "$": "false" - }, - { - "key": "org.opencastproject.engage.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.next_marker", - "$": "down" - }, - { - "key": "trim.next_frame", - "$": "right" - }, - { - "key": "trim.play_pause", - "$": "space" - }, - { - "key": "org.opencastproject.oaipmh.server.hosturl", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.play_current_segment", - "$": "c" - }, - { - "key": "trim.previous_frame", - "$": "left" - }, - { - "key": "trim.split_at_current_time", - "$": "v" - }, - { - "key": "org.opencastproject.admin.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.player", - "$": "engage" - }, - { - "key": "trim.set_current_time_as_inpoint", - "$": "i" - }, - { - "key": "feed.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.extendedannotations.enable", - "$": "false" - }, - { - "key": "trim.play_current_pre_post", - "$": "shift+c" - }, - { - "key": "logo_small", - "$": "\/engage\/ui\/img\/mh_logos\/OpencastLogo.png" - } - ] - } - } - } - ] - } - } - } -} diff --git a/test/app/GET/groups/it_team.json b/test/app/GET/groups/it_team.json deleted file mode 100644 index 7bb934d5f2..0000000000 --- a/test/app/GET/groups/it_team.json +++ /dev/null @@ -1,333 +0,0 @@ -{ - "group": { - "id": "it_team", - "organization": { - "id": "mh_default_org", - "name": "•mock• Opencast Project", - "servers": { - "server": { - "port": "-1", - "name": "•mock• mhallinone-sbox.ethz.ch" - } - }, - "adminRole": "ROLE_ADMIN", - "anonymousRole": "ROLE_ANONYMOUS", - "properties": { - "property": [ - { - "key": "trim.select_item_at_current_time", - "$": "y" - }, - { - "key": "trim.set_current_time_as_outpoint", - "$": "o" - }, - { - "key": "logo_large", - "$": "\/engage\/ui\/img\/mh_logos\/MatterhornLogo_large.png" - }, - { - "key": "trim.play_ending_of_current_segment", - "$": "n" - }, - { - "key": "trim.previous_marker", - "$": "up" - }, - { - "key": "trim.delete_selected_segment", - "$": "delete" - }, - { - "key": "adminui.user.external_role_display", - "$": "false" - }, - { - "key": "org.opencastproject.engage.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.next_marker", - "$": "down" - }, - { - "key": "trim.next_frame", - "$": "right" - }, - { - "key": "trim.play_pause", - "$": "space" - }, - { - "key": "org.opencastproject.oaipmh.server.hosturl", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.play_current_segment", - "$": "c" - }, - { - "key": "trim.previous_frame", - "$": "left" - }, - { - "key": "trim.split_at_current_time", - "$": "v" - }, - { - "key": "org.opencastproject.admin.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.player", - "$": "engage" - }, - { - "key": "trim.set_current_time_as_inpoint", - "$": "i" - }, - { - "key": "feed.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.extendedannotations.enable", - "$": "false" - }, - { - "key": "trim.play_current_pre_post", - "$": "shift+c" - }, - { - "key": "logo_small", - "$": "\/engage\/ui\/img\/mh_logos\/OpencastLogo.png" - } - ] - } - }, - "name": "•mock• IT Team", - "description": "The IT Team", - "role": "ROLE_GROUP_IT_TEAM", - "members": { - "member": "admin" - }, - "roles": { - "role": [ - { - "name": "•mock• ROLE_ADMIN", - "organization": { - "id": "mh_default_org", - "name": "•mock• Opencast Project", - "servers": { - "server": { - "port": "-1", - "name": "•mock• mhallinone-sbox.ethz.ch" - } - }, - "adminRole": "ROLE_ADMIN", - "anonymousRole": "ROLE_ANONYMOUS", - "properties": { - "property": [ - { - "key": "trim.select_item_at_current_time", - "$": "y" - }, - { - "key": "trim.set_current_time_as_outpoint", - "$": "o" - }, - { - "key": "logo_large", - "$": "\/engage\/ui\/img\/mh_logos\/MatterhornLogo_large.png" - }, - { - "key": "trim.play_ending_of_current_segment", - "$": "n" - }, - { - "key": "trim.previous_marker", - "$": "up" - }, - { - "key": "trim.delete_selected_segment", - "$": "delete" - }, - { - "key": "adminui.user.external_role_display", - "$": "false" - }, - { - "key": "org.opencastproject.engage.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.next_marker", - "$": "down" - }, - { - "key": "trim.next_frame", - "$": "right" - }, - { - "key": "trim.play_pause", - "$": "space" - }, - { - "key": "org.opencastproject.oaipmh.server.hosturl", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.play_current_segment", - "$": "c" - }, - { - "key": "trim.previous_frame", - "$": "left" - }, - { - "key": "trim.split_at_current_time", - "$": "v" - }, - { - "key": "org.opencastproject.admin.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.player", - "$": "engage" - }, - { - "key": "trim.set_current_time_as_inpoint", - "$": "i" - }, - { - "key": "feed.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.extendedannotations.enable", - "$": "false" - }, - { - "key": "trim.play_current_pre_post", - "$": "shift+c" - }, - { - "key": "logo_small", - "$": "\/engage\/ui\/img\/mh_logos\/OpencastLogo.png" - } - ] - } - } - }, - { - "name": "•mock• ROLE_USER", - "organization": { - "id": "mh_default_org", - "name": "•mock• Opencast Project", - "servers": { - "server": { - "port": "-1", - "name": "•mock• mhallinone-sbox.ethz.ch" - } - }, - "adminRole": "ROLE_ADMIN", - "anonymousRole": "ROLE_ANONYMOUS", - "properties": { - "property": [ - { - "key": "trim.select_item_at_current_time", - "$": "y" - }, - { - "key": "trim.set_current_time_as_outpoint", - "$": "o" - }, - { - "key": "logo_large", - "$": "\/engage\/ui\/img\/mh_logos\/MatterhornLogo_large.png" - }, - { - "key": "trim.play_ending_of_current_segment", - "$": "n" - }, - { - "key": "trim.previous_marker", - "$": "up" - }, - { - "key": "trim.delete_selected_segment", - "$": "delete" - }, - { - "key": "adminui.user.external_role_display", - "$": "false" - }, - { - "key": "org.opencastproject.engage.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.next_marker", - "$": "down" - }, - { - "key": "trim.next_frame", - "$": "right" - }, - { - "key": "trim.play_pause", - "$": "space" - }, - { - "key": "org.opencastproject.oaipmh.server.hosturl", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "trim.play_current_segment", - "$": "c" - }, - { - "key": "trim.previous_frame", - "$": "left" - }, - { - "key": "trim.split_at_current_time", - "$": "v" - }, - { - "key": "org.opencastproject.admin.ui.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.player", - "$": "engage" - }, - { - "key": "trim.set_current_time_as_inpoint", - "$": "i" - }, - { - "key": "feed.url", - "$": "http:\/\/mhallinone-sbox.ethz.ch" - }, - { - "key": "engageui.extendedannotations.enable", - "$": "false" - }, - { - "key": "trim.play_current_pre_post", - "$": "shift+c" - }, - { - "key": "logo_small", - "$": "\/engage\/ui\/img\/mh_logos\/OpencastLogo.png" - } - ] - } - } - } - ] - } - } -} diff --git a/test/app/GET/i18n/languages.json b/test/app/GET/i18n/languages.json deleted file mode 100644 index 5a20b4444d..0000000000 --- a/test/app/GET/i18n/languages.json +++ /dev/null @@ -1,382 +0,0 @@ -{ - "availableLanguages":[ - { - "code":"de_DE", - "dateFormats":{ - "dateTime":{ - "short":"dd.MM.yy HH:mm", - "medium":"dd.MM.yyyy HH:mm:ss", - "full":"EEEE, d. MMMM yyyy HH:mm' Uhr 'z" - }, - "date":{ - "short":"dd.MM.yy", - "medium":"dd.MM.yyyy", - "full":"EEEE, d. MMMM yyyy" - }, - "time":{ - "short":"HH:mm", - "medium":"HH:mm:ss", - "full":"HH:mm' Uhr 'z" - } - }, - "displayLanguage":"Deutsch" - }, - { - "code":"el_GR", - "dateFormats":{ - "dateTime":{ - "short":"d\/M\/yyyy h:mm a", - "medium":"d MMM yyyy h:mm:ss a", - "full":"EEEE, d MMMM yyyy h:mm:ss a z" - }, - "date":{ - "short":"d\/M\/yyyy", - "medium":"d MMM yyyy", - "full":"EEEE, d MMMM yyyy" - }, - "time":{ - "short":"h:mm a", - "medium":"h:mm:ss a", - "full":"h:mm:ss a z" - } - }, - "displayLanguage":"Ελληνικά" - }, - { - "code":"en_GB", - "dateFormats":{ - "dateTime":{ - "short":"dd\/MM\/yy HH:mm", - "medium":"dd-MMM-yyyy HH:mm:ss", - "full":"EEEE, d MMMM yyyy HH:mm:ss 'o''clock' z" - }, - "date":{ - "short":"dd\/MM\/yy", - "medium":"dd-MMM-yyyy", - "full":"EEEE, d MMMM yyyy" - }, - "time":{ - "short":"HH:mm", - "medium":"HH:mm:ss", - "full":"HH:mm:ss 'o''clock' z" - } - }, - "displayLanguage":"English" - }, - { - "code":"en_US", - "dateFormats":{ - "dateTime":{ - "short":"M\/d\/yy h:mm a", - "medium":"MMM d, yyyy h:mm:ss a", - "full":"EEEE, MMMM d, yyyy h:mm:ss a z" - }, - "date":{ - "short":"M\/d\/yy", - "medium":"MMM d, yyyy", - "full":"EEEE, MMMM d, yyyy" - }, - "time":{ - "short":"h:mm a", - "medium":"h:mm:ss a", - "full":"h:mm:ss a z" - } - }, - "displayLanguage":"English" - }, - { - "code":"es_ES", - "dateFormats":{ - "dateTime":{ - "short":"d\/MM\/yy H:mm", - "medium":"dd-MMM-yyyy H:mm:ss", - "full":"EEEE d' de 'MMMM' de 'yyyy HH'H'mm'' z" - }, - "date":{ - "short":"d\/MM\/yy", - "medium":"dd-MMM-yyyy", - "full":"EEEE d' de 'MMMM' de 'yyyy" - }, - "time":{ - "short":"H:mm", - "medium":"H:mm:ss", - "full":"HH'H'mm'' z" - } - }, - "displayLanguage":"Español" - }, - { - "code":"fil_PH", - "dateFormats":{ - "dateTime":{ - "short":"M\/d\/yy h:mm a", - "medium":"MMM d, yyyy h:mm:ss a", - "full":"EEEE, MMMM d, yyyy h:mm:ss a z" - }, - "date":{ - "short":"M\/d\/yy", - "medium":"MMM d, yyyy", - "full":"EEEE, MMMM d, yyyy" - }, - "time":{ - "short":"h:mm a", - "medium":"h:mm:ss a", - "full":"h:mm:ss a z" - } - }, - "displayLanguage":"Filipino" - }, - { - "code":"fr_FR", - "dateFormats":{ - "dateTime":{ - "short":"dd\/MM\/yy HH:mm", - "medium":"d MMM yyyy HH:mm:ss", - "full":"EEEE d MMMM yyyy HH' h 'mm z" - }, - "date":{ - "short":"dd\/MM\/yy", - "medium":"d MMM yyyy", - "full":"EEEE d MMMM yyyy" - }, - "time":{ - "short":"HH:mm", - "medium":"HH:mm:ss", - "full":"HH' h 'mm z" - } - }, - "displayLanguage":"Français" - }, - { - "code":"gl_ES", - "dateFormats":{ - "dateTime":{ - "short":"M\/d\/yy h:mm a", - "medium":"MMM d, yyyy h:mm:ss a", - "full":"EEEE, MMMM d, yyyy h:mm:ss a z" - }, - "date":{ - "short":"M\/d\/yy", - "medium":"MMM d, yyyy", - "full":"EEEE, MMMM d, yyyy" - }, - "time":{ - "short":"h:mm a", - "medium":"h:mm:ss a", - "full":"h:mm:ss a z" - } - }, - "displayLanguage":"Gallegan" - }, - { - "code":"he_IL", - "dateFormats":{ - "dateTime":{ - "short":"HH:mm dd\/MM\/yy", - "medium":"HH:mm:ss dd\/MM\/yyyy", - "full":"HH:mm:ss z EEEE d MMMM yyyy" - }, - "date":{ - "short":"dd\/MM\/yy", - "medium":"dd\/MM\/yyyy", - "full":"EEEE d MMMM yyyy" - }, - "time":{ - "short":"HH:mm", - "medium":"HH:mm:ss", - "full":"HH:mm:ss z" - } - }, - "displayLanguage":"עברית" - }, - { - "code":"nl_NL", - "dateFormats":{ - "dateTime":{ - "short":"d-M-yy H:mm", - "medium":"d-MMM-yyyy H:mm:ss", - "full":"EEEE d MMMM yyyy H:mm:ss' uur' z" - }, - "date":{ - "short":"d-M-yy", - "medium":"d-MMM-yyyy", - "full":"EEEE d MMMM yyyy" - }, - "time":{ - "short":"H:mm", - "medium":"H:mm:ss", - "full":"H:mm:ss' uur' z" - } - }, - "displayLanguage":"Nederlands" - }, - { - "code":"pl_PL", - "dateFormats":{ - "dateTime":{ - "short":"dd.MM.yy HH:mm", - "medium":"yyyy-MM-dd HH:mm:ss", - "full":"EEEE, d MMMM yyyy HH:mm:ss z" - }, - "date":{ - "short":"dd.MM.yy", - "medium":"yyyy-MM-dd", - "full":"EEEE, d MMMM yyyy" - }, - "time":{ - "short":"HH:mm", - "medium":"HH:mm:ss", - "full":"HH:mm:ss z" - } - }, - "displayLanguage":"Polski" - }, - { - "code":"sl_SI", - "dateFormats":{ - "dateTime":{ - "short":"d.M.y H:mm", - "medium":"d.M.yyyy H:mm:ss", - "full":"EEEE, dd. MMMM y H:mm:ss z" - }, - "date":{ - "short":"d.M.y", - "medium":"d.M.yyyy", - "full":"EEEE, dd. MMMM y" - }, - "time":{ - "short":"H:mm", - "medium":"H:mm:ss", - "full":"H:mm:ss z" - } - }, - "displayLanguage":"Slovenščina" - }, - { - "code":"sv_SE", - "dateFormats":{ - "dateTime":{ - "short":"yyyy-MM-dd HH:mm", - "medium":"yyyy-MMM-dd HH:mm:ss", - "full":"'den 'd MMMM yyyy 'kl 'H:mm z" - }, - "date":{ - "short":"yyyy-MM-dd", - "medium":"yyyy-MMM-dd", - "full":"'den 'd MMMM yyyy" - }, - "time":{ - "short":"HH:mm", - "medium":"HH:mm:ss", - "full":"'kl 'H:mm z" - } - }, - "displayLanguage":"Svenska" - }, - { - "code":"tl_PH", - "dateFormats":{ - "dateTime":{ - "short":"M\/d\/yy h:mm a", - "medium":"MMM d, yyyy h:mm:ss a", - "full":"EEEE, MMMM d, yyyy h:mm:ss a z" - }, - "date":{ - "short":"M\/d\/yy", - "medium":"MMM d, yyyy", - "full":"EEEE, MMMM d, yyyy" - }, - "time":{ - "short":"h:mm a", - "medium":"h:mm:ss a", - "full":"h:mm:ss a z" - } - }, - "displayLanguage":"Tagalog" - }, - { - "code":"tr_TR", - "dateFormats":{ - "dateTime":{ - "short":"dd.MM.yyyy HH:mm", - "medium":"dd.MMM.yyyy HH:mm:ss", - "full":"dd MMMM yyyy EEEE HH:mm:ss z" - }, - "date":{ - "short":"dd.MM.yyyy", - "medium":"dd.MMM.yyyy", - "full":"dd MMMM yyyy EEEE" - }, - "time":{ - "short":"HH:mm", - "medium":"HH:mm:ss", - "full":"HH:mm:ss z" - } - }, - "displayLanguage":"Türkçe" - }, - { - "code":"zh_CN", - "dateFormats":{ - "dateTime":{ - "short":"yy-M-d ah:mm", - "medium":"yyyy-M-d H:mm:ss", - "full":"yyyy'年'M'月'd'日' EEEE ahh'时'mm'分'ss'秒' z" - }, - "date":{ - "short":"yy-M-d", - "medium":"yyyy-M-d", - "full":"yyyy'年'M'月'd'日' EEEE" - }, - "time":{ - "short":"ah:mm", - "medium":"H:mm:ss", - "full":"ahh'时'mm'分'ss'秒' z" - } - }, - "displayLanguage":"中文" - }, - { - "code":"zh_TW", - "dateFormats":{ - "dateTime":{ - "short":"yyyy\/M\/d a h:mm", - "medium":"yyyy\/M\/d a hh:mm:ss", - "full":"yyyy'年'M'月'd'日' EEEE ahh'時'mm'分'ss'秒' z" - }, - "date":{ - "short":"yyyy\/M\/d", - "medium":"yyyy\/M\/d", - "full":"yyyy'年'M'月'd'日' EEEE" - }, - "time":{ - "short":"a h:mm", - "medium":"a hh:mm:ss", - "full":"ahh'時'mm'分'ss'秒' z" - } - }, - "displayLanguage":"中文" - } - ], - "fallbackLanguage":{ - "code":"en_US", - "dateFormats":{ - "dateTime":{ - "short":"M\/d\/yy h:mm a", - "medium":"MMM d, yyyy h:mm:ss a", - "full":"EEEE, MMMM d, yyyy h:mm:ss a z" - }, - "date":{ - "short":"M\/d\/yy", - "medium":"MMM d, yyyy", - "full":"EEEE, MMMM d, yyyy" - }, - "time":{ - "short":"h:mm a", - "medium":"h:mm:ss a", - "full":"h:mm:ss a z" - } - }, - "displayLanguage":"English" - } -} diff --git a/test/app/GET/i18n/languages_de.json b/test/app/GET/i18n/languages_de.json deleted file mode 100644 index 0c0f2691b3..0000000000 --- a/test/app/GET/i18n/languages_de.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "fallbackLanguage":{ - "dateFormats":{ - "time":{ - "short":"h:mm a", - "full":"h:mm:ss a z", - "medium":"h:mm:ss a" - }, - "dateTime":{ - "short":"M\/d\/yy h:mm a", - "full":"EEEE, MMMM d, yyyy h:mm:ss a z", - "medium":"MMM d, yyyy h:mm:ss a" - }, - "date":{ - "short":"M\/d\/yy", - "full":"EEEE, MMMM d, yyyy", - "medium":"MMM d, yyyy" - } - }, - "displayLanguage":"English", - "code":"en" - }, - "availableLanguages":[ - { - "dateFormats":{ - "time":{ - "short":"HH:mm", - "full":"HH:mm' Uhr 'z", - "medium":"HH:mm:ss" - }, - "dateTime":{ - "short":"dd.MM.yy HH:mm", - "full":"EEEE, d. MMMM yyyy HH:mm' Uhr 'z", - "medium":"dd.MM.yyyy HH:mm:ss" - }, - "date":{ - "short":"dd.MM.yy", - "full":"EEEE, d. MMMM yyyy", - "medium":"dd.MM.yyyy" - } - }, - "displayLanguage":"German", - "code":"de_DE" - }, - { - "dateFormats":{ - "time":{ - "short":"h:mm a", - "full":"h:mm:ss a z", - "medium":"h:mm:ss a" - }, - "dateTime":{ - "short":"M\/d\/yy h:mm a", - "full":"EEEE, MMMM d, yyyy h:mm:ss a z", - "medium":"MMM d, yyyy h:mm:ss a" - }, - "date":{ - "short":"M\/d\/yy", - "full":"EEEE, MMMM d, yyyy", - "medium":"MMM d, yyyy" - } - }, - "displayLanguage":"English", - "code":"en_US" - } - ] -} diff --git a/test/app/GET/newEventMultipleDSTFixture.json b/test/app/GET/newEventMultipleDSTFixture.json deleted file mode 100644 index aff939800e..0000000000 --- a/test/app/GET/newEventMultipleDSTFixture.json +++ /dev/null @@ -1,781 +0,0 @@ -{ - "metadata": { - "metadata": { - "title": { - "id": "title", - "label": "EVENTS.EVENTS.DETAILS.METADATA.TITLE", - "value": "eins", - "required": "true", - "type": "text", - "readOnly": false, - "$$hashKey": "06V", - "presentableValue": "eins" - }, - "presenters": { - "id": "presenters", - "label": "EVENTS.EVENTS.DETAILS.METADATA.PRESENTER", - "value": [ - "a.morris", - "franz.kafka" - ], - "required": "true", - "type": "text", - "collection": "users", - "readOnly": false, - "$$hashKey": "06W", - "presentableValue": [ - "a.morris", - "franz.kafka" - ] - }, - "series": { - "id": "series", - "label": "EVENTS.EVENTS.DETAILS.METADATA.SERIES", - "value": "edu123", - "type": "text", - "collection": { - "phy325": "Physics325", - "edu123": "Education123" - }, - "readOnly": false, - "$$hashKey": "06X", - "presentableValue": "Education123" - }, - "contributors": { - "id": "contributors", - "label": "EVENTS.EVENTS.DETAILS.METADATA.CONTRIBUTORS", - "value": [ - "chuck.norris", - "matt.smith" - ], - "type": "text", - "collection": "users", - "readOnly": false, - "$$hashKey": "06Y", - "presentableValue": [ - "chuck.norris", - "matt.smith" - ] - }, - "subject": { - "id": "subject", - "label": "EVENTS.EVENTS.DETAILS.METADATA.SUBJECT", - "value": [ - "zwei" - ], - "required": "true", - "type": "text", - "readOnly": false, - "$$hashKey": "06Z", - "presentableValue": [ - "zwei" - ] - }, - "language": { - "id": "language", - "label": "EVENTS.EVENTS.DETAILS.METADATA.LANGUAGE", - "value": "en", - "type": "text", - "collection": { - "en": "English", - "de": "German", - "fr": "French" - }, - "readOnly": false, - "$$hashKey": "070", - "presentableValue": "English" - }, - "copyright": { - "id": "copyright", - "label": "EVENTS.EVENTS.DETAILS.METADATA.COPYRIGHT", - "value": "?", - "type": "text", - "collection": { - "?": "No idea", - "??": "Specify please!", - "???": "copyright???" - }, - "readOnly": false, - "$$hashKey": "072", - "presentableValue": "No idea" - } - } - }, - "source": { - "upload": { - - }, - "SCHEDULE_SINGLE": { - "device": { - "inputMethods": { - - } - } - }, - "SCHEDULE_MULTIPLE": { - "device": { - "id": "\u2022mock\u2022 agent3", - "status": "ok", - "name": "\u2022mock\u2022 agent3", - "updated": "5:37 PM", - "inputs": [ - { - "id": "video", - "value": "TRANSLATION.PATH.VIDEO", - "$$hashKey": "09O" - } - ], - "inputMethods": { - "TRANSLATION.PATH.VIDEO": true - } - }, - "weekdays": { - "EVENTS.EVENTS.NEW.WEEKDAYS.MO": true, - "EVENTS.EVENTS.NEW.WEEKDAYS.TU": true, - "EVENTS.EVENTS.NEW.WEEKDAYS.WE": true - }, - "repetitionOption": "WEEKLY", - "start": { - "date" : "2016-03-25T00:00:00Z", - "hour" : "8", - "minute" : "0" - }, - "end": { - "date" : "2016-03-28T00:00:00Z", - "hour" : "8", - "minute" : "10" - }, - "duration": { - "hour" : "0", - "minute" : "10" - } - }, - "type": "SCHEDULE_MULTIPLE" - }, - "processing": { - "workflow": { - "id": "full", - "title": "Encode, Analyze, and Distribute", - "tags": { - "tag": [ - "archive", - "schedule", - "upload" - ] - }, - "description": "\n A simple workflow that transcodes the media into distribution formats, then sends the resulting distribution files,\n along with their associated metadata, to the distribution channels.\n ", - "published": false, - "configuration_panel": "\n \n