From 6eb61392ce8b912f95fe968d6fbd5eeeb47b7ab3 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 3 May 2023 15:21:41 -0400 Subject: [PATCH 01/11] feat(MediaAccess): Adding module --- package-lock.json | 89 ++- package.json | 7 +- src/openrpc/media_access.json | 580 ++++++++++++++++++ src/sdks/core/package.json | 2 +- src/sdks/core/sdk.config.json | 11 + src/sdks/core/test/suite/media_access.test.ts | 51 ++ src/sdks/manage/package.json | 2 +- 7 files changed, 712 insertions(+), 30 deletions(-) create mode 100644 src/openrpc/media_access.json create mode 100644 src/sdks/core/test/suite/media_access.test.ts diff --git a/package-lock.json b/package-lock.json index 31fbe5bf9..44041ad34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", - "@firebolt-js/openrpc": "2.0.0", + "@firebolt-js/openrpc": "rdkcentral/firebolt-openrpc#fix/temporal-set", "@firebolt-js/schemas": "0.9.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", @@ -29,6 +29,7 @@ "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.3", "mkdirp": "^2.1.6", + "nopt": "^7.1.0", "production-changelog": "./src/js/production-changelog/", "semantic-release": "^19.0.5", "typescript": "^4.6.4" @@ -988,10 +989,10 @@ "link": true }, "node_modules/@firebolt-js/openrpc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@firebolt-js/openrpc/-/openrpc-2.0.0.tgz", - "integrity": "sha512-JnBfSfUeunDa+ml+TsLpGLJkXabKHMHeE7bMp/Lvq15vnW4Cf175WHabD2X8zc8YxMIl2HYjOkhmXBV6F6Ykyg==", + "version": "2.0.0-next.2", + "resolved": "git+ssh://git@github.com/rdkcentral/firebolt-openrpc.git#00fbae3fee20046c4d3fd8cebeb76f6025d27b9a", "dev": true, + "license": "Apache-2.0", "dependencies": { "ajv": "^8.3.0", "ajv-formats": "^2.1.0", @@ -1009,6 +1010,12 @@ "firebolt-openrpc": "src/cli.mjs" } }, + "node_modules/@firebolt-js/openrpc/node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "node_modules/@firebolt-js/openrpc/node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -1057,6 +1064,21 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/@firebolt-js/openrpc/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@firebolt-js/schemas": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@firebolt-js/schemas/-/schemas-0.9.0.tgz", @@ -2155,10 +2177,13 @@ "dev": true }, "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/acorn": { "version": "8.8.2", @@ -7078,18 +7103,18 @@ "dev": true }, "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.1.0.tgz", + "integrity": "sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q==", "dev": true, "dependencies": { - "abbrev": "1" + "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/normalize-package-data": { @@ -12583,7 +12608,7 @@ }, "src/sdks/core": { "name": "@firebolt-js/sdk", - "version": "0.0.0-dev.0", + "version": "0.11.0", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", @@ -12604,7 +12629,7 @@ }, "src/sdks/manage": { "name": "@firebolt-js/manage-sdk", - "version": "0.0.0-dev.0", + "version": "0.11.0", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", @@ -13359,10 +13384,9 @@ } }, "@firebolt-js/openrpc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@firebolt-js/openrpc/-/openrpc-2.0.0.tgz", - "integrity": "sha512-JnBfSfUeunDa+ml+TsLpGLJkXabKHMHeE7bMp/Lvq15vnW4Cf175WHabD2X8zc8YxMIl2HYjOkhmXBV6F6Ykyg==", + "version": "git+ssh://git@github.com/rdkcentral/firebolt-openrpc.git#00fbae3fee20046c4d3fd8cebeb76f6025d27b9a", "dev": true, + "from": "@firebolt-js/openrpc@rdkcentral/firebolt-openrpc#fix/temporal-set", "requires": { "ajv": "^8.3.0", "ajv-formats": "^2.1.0", @@ -13377,6 +13401,12 @@ "util": "^0.12.4" }, "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -13414,6 +13444,15 @@ "requires": { "minimist": "^1.2.6" } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } } } }, @@ -14327,9 +14366,9 @@ "dev": true }, "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true }, "acorn": { @@ -17975,12 +18014,12 @@ "dev": true }, "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.1.0.tgz", + "integrity": "sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q==", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "^2.0.0" } }, "normalize-package-data": { diff --git a/package.json b/package.json index d9ebb0ab6..c48ecca26 100644 --- a/package.json +++ b/package.json @@ -43,20 +43,21 @@ "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", - "@firebolt-js/openrpc": "2.0.0", + "@firebolt-js/openrpc": "rdkcentral/firebolt-openrpc#fix/temporal-set", "@firebolt-js/schemas": "0.9.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", "@semantic-release/npm": "^9.0.1", "@semantic-release/release-notes-generator": "^10.0.1", "ajv": "^6.12.6", - "production-changelog": "./src/js/production-changelog/", "husky": "^8.0.0", "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.3", "mkdirp": "^2.1.6", + "production-changelog": "./src/js/production-changelog/", "semantic-release": "^19.0.5", - "typescript": "^4.6.4" + "typescript": "^4.6.4", + "nopt": "^7.1.0" }, "keywords": [ "firebolt", diff --git a/src/openrpc/media_access.json b/src/openrpc/media_access.json new file mode 100644 index 000000000..811babd95 --- /dev/null +++ b/src/openrpc/media_access.json @@ -0,0 +1,580 @@ +{ + "openrpc": "1.2.4", + "info": { + "title": "MediaAccess", + "description": "A module for access user-cultivated media files, e.g. photos on a USB drive.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "volumes", + "tags": [ + { + "name": "temporal-set" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:media-access:volumes" + ] + } + ], + "summary": "Access available Volumes with MediaFiles.", + "params": [ + { + "name": "query", + "required": true, + "schema": { + "$ref": "#/components/schemas/Volume" + } + } + ], + "result": { + "name": "volumes", + "schema": { + "type": "array", + "items": { + "title": "Volume", + "$ref": "#/components/schemas/Volume" + } + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [ + { + "name": "query", + "value": { + "type": "all" + } + } + ], + "result": { + "name": "volumes", + "value": [ + { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + { + "uri": "/local/photos", + "name": "photos", + "type": "local" + } + ] + } + } + ] + }, + { + "name": "audio", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:media-access:audio" + ] + } + ], + "summary": "Access available audio MediaFiles.", + "params": [ + { + "name": "volumes", + "summary": "A set of queries used to match which volumes will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/Volume" + } + }, + { + "name": "files", + "summary": "A set of queries used to match which files will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/MediaFile" + } + } + ], + "result": { + "name": "files", + "summary": "A set of MediaFiles that matched the query.", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaFile" + } + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [ + { + "name": "volumes", + "value": { + "type": "all" + } + } + ], + "result": { + "name": "files", + "value": [ + { + "uri": "/usb/my-usb-drive/song1.mp3", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "audio/mpeg" + }, + { + "uri": "/local/music/song2.mp3", + "volume": { + "uri": "/local/music", + "name": "music", + "type": "local" + }, + "type": "audio/mpeg" + } + ] + } + } + ] + }, + { + "name": "video", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:media-access:video" + ] + } + ], + "summary": "Access available video MediaFiles.", + "params": [ + { + "name": "volumes", + "summary": "A set of queries used to match which volumes will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/Volume" + } + }, + { + "name": "files", + "summary": "A set of queries used to match which files will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/MediaFile" + } + } + ], + "result": { + "name": "files", + "summary": "A set of MediaFiles that matched the query.", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaFile" + } + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [ + { + "name": "volumes", + "value": { + "type": "all" + } + } + ], + "result": { + "name": "files", + "value": [ + { + "uri": "/usb/my-usb-drive/video1.mpg", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "video/mp4" + }, + { + "uri": "/local/videos/video2.mpg", + "volume": { + "uri": "/local/videos", + "name": "videos", + "type": "local" + }, + "type": "video/mp4" + } + ] + } + } + ] + }, + { + "name": "images", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:media-access:images" + ] + } + ], + "summary": "Access available image MediaFiles.", + "params": [ + { + "name": "volumes", + "summary": "A set of queries used to match which volumes will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/Volume" + } + }, + { + "name": "files", + "summary": "A set of queries used to match which files will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/MediaFile" + } + } + ], + "result": { + "name": "files", + "summary": "A set of MediaFiles that matched the query.", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaFile" + } + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [ + { + "name": "volumes", + "value": { + "type": "all" + } + } + ], + "result": { + "name": "files", + "value": [ + { + "uri": "/usb/my-usb-drive/photo1.jpg", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "image/jpg" + }, + { + "uri": "/local/photos/photo1.jpg", + "volume": { + "uri": "/local/photos", + "name": "photos", + "type": "local" + }, + "type": "image/jpg" + } + ] + } + } + ] + }, + { + "name": "media", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:media-access:*" + ] + } + ], + "summary": "Access all available MediaFiles of either audio, video, or image types.", + "params": [ + { + "name": "volumes", + "summary": "A set of queries used to match which volumes will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/Volume" + } + }, + { + "name": "files", + "summary": "A set of queries used to match which files will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/MediaFile" + } + } + ], + "result": { + "name": "files", + "summary": "A set of MediaFiles that matched the query.", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaFile" + } + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [ + { + "name": "volumes", + "value": { + "type": "all" + } + } + ], + "result": { + "name": "files", + "value": [ + { + "uri": "/usb/my-usb-drive/song1.mp3", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "audio/mpeg" + }, + { + "uri": "/local/music/song2.mp3", + "volume": { + "uri": "/local/music", + "name": "music", + "type": "local" + }, + "type": "audio/mpeg" + }, + { + "uri": "/usb/my-usb-drive/photo1.jpg", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "image/jpg" + }, + { + "uri": "/local/photos/photo1.jpg", + "volume": { + "uri": "/local/photos", + "name": "photos", + "type": "local" + }, + "type": "image/jpg" + }, + { + "uri": "/usb/my-usb-drive/video1.mpg", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "video/mp4" + }, + { + "uri": "/local/videos/video2.mpg", + "volume": { + "uri": "/local/videos", + "name": "videos", + "type": "local" + }, + "type": "video/mp4" + } + ] + } + } + ] + }, + { + "name": "files", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:media-access:files" + ] + } + ], + "summary": "Access all available MediaFiles.", + "params": [ + { + "name": "volumes", + "summary": "A set of queries used to match which volumes will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/Volume" + } + }, + { + "name": "files", + "summary": "A set of queries used to match which files will be matched.", + "required": false, + "schema": { + "$ref": "#/components/schemas/MediaFile" + } + } + ], + "result": { + "name": "files", + "summary": "A set of MediaFiles that matched the query.", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaFile" + } + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [ + { + "name": "volumes", + "value": { + "type": "all" + } + } + ], + "result": { + "name": "files", + "value": [ + { + "uri": "/usb/my-usb-drive/notes.txt", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "text/plain" + + }, + { + "uri": "/usb/my-usb-drive/song1.mp3", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "audio/mpeg" + }, + { + "uri": "/local/music/song2.mp3", + "volume": { + "uri": "/local/music", + "name": "music", + "type": "local" + }, + "type": "audio/mpeg" + }, + { + "uri": "/usb/my-usb-drive/photo1.jpg", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "image/jpg" + }, + { + "uri": "/local/photos/photo1.jpg", + "volume": { + "uri": "/local/photos", + "name": "photos", + "type": "local" + }, + "type": "image/jpg" + }, + { + "uri": "/usb/my-usb-drive/video1.mpg", + "volume": { + "uri": "/usb/my-usb-drive", + "name": "My USB Drive", + "type": "usb" + }, + "type": "video/mp4" + }, + { + "uri": "/local/videos/video2.mpg", + "volume": { + "uri": "/local/videos", + "name": "videos", + "type": "local" + }, + "type": "video/mp4" + } + ] + } + } + ] + } + ], + "components": { + "schemas": { + "Volume": { + "title": "Volume", + "type": "object", + "properties": { + "name": { "type": "string" }, + "uri": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/VolumeType" + } + } + }, + "VolumeType": { + "title": "VolumeType", + "type": "string", + "enum": [ + "usb", + "local", + "all" + ] + }, + "MediaFile": { + "title": "MediaFile", + "type": "object", + "properties": { + "volume": { + "$ref": "#/components/schemas/Volume" + }, + "uri": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + } + } +} \ No newline at end of file diff --git a/src/sdks/core/package.json b/src/sdks/core/package.json index 914c94e02..0525d7c65 100644 --- a/src/sdks/core/package.json +++ b/src/sdks/core/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/sdk", - "version": "0.0.0-dev.0", + "version": "0.11.0", "description": "The Firebolt JS SDK", "main": "./dist/lib/firebolt.mjs", "types": "./dist/lib/firebolt.d.ts", diff --git a/src/sdks/core/sdk.config.json b/src/sdks/core/sdk.config.json index 5af0e4a18..0c66ce1f8 100644 --- a/src/sdks/core/sdk.config.json +++ b/src/sdks/core/sdk.config.json @@ -102,6 +102,17 @@ "xrn:firebolt:capability:localization:additional-info" ] }, + { + "module": "MediaAccess", + "use": [ + "xrn:firebolt:capability:media-access:volumes", + "xrn:firebolt:capability:media-access:audio", + "xrn:firebolt:capability:media-access:video", + "xrn:firebolt:capability:media-access:images", + "xrn:firebolt:capability:media-access:*", + "xrn:firebolt:capability:media-access:files" + ] + }, { "module": "Metrics", "use": [ diff --git a/src/sdks/core/test/suite/media_access.test.ts b/src/sdks/core/test/suite/media_access.test.ts new file mode 100644 index 000000000..5934f604e --- /dev/null +++ b/src/sdks/core/test/suite/media_access.test.ts @@ -0,0 +1,51 @@ +import Setup from "../../../../../test/Setup" + +import { test, expect } from "@jest/globals" +import { MediaAccess } from "../../build/javascript/src/firebolt"; + +test('Live-list', () => { + return new Promise( (resolve, reject) => { + const process = MediaAccess.volumes({}, (volume: MediaAccess.Volume) => { + // add + expect(typeof volume.type).toBe('string') + }, + (volume: MediaAccess.Volume) => { + // remove + } + ) + + expect(typeof process.stop).toBe('function') + setTimeout(_ => { + process.stop() + resolve({}) + }, 10) + }) +}) + +test('First-match', () => { + return MediaAccess.volumes({}, 10).then( (volume:MediaAccess.Volume) => { + expect(volume.type).toBe('usb') + }) +}) + +test('Known values', () => { + return MediaAccess.volumes({}).then( (volumes:MediaAccess.Volume[]) => { + expect(volumes.length).toBe(2) + }) +}) + +test('Only one sesssion at a time', () => { + return new Promise( (resolve, reject) => { + let errorThrown = false + try { + MediaAccess.volumes({}, (v: MediaAccess.Volume)=>{}, (v: MediaAccess.Volume)=>{}) + MediaAccess.volumes({}, (v: MediaAccess.Volume)=>{}, (v: MediaAccess.Volume)=>{}) + } + catch (error) { + console.dir(error) + errorThrown = true + } + expect(errorThrown).toBeTruthy() + resolve({}) + }) +}) diff --git a/src/sdks/manage/package.json b/src/sdks/manage/package.json index 41a31e6a2..fb0cbd5c1 100644 --- a/src/sdks/manage/package.json +++ b/src/sdks/manage/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/manage-sdk", - "version": "0.0.0-dev.0", + "version": "0.11.0", "description": "The Firebolt Manage JS SDK", "main": "./dist/lib/firebolt-manage.mjs", "types": "./dist/lib/firebolt-manage.d.ts", From 65563beec02ccfb55d6052367e908e6bcaa99800 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 9 May 2023 12:48:49 -0400 Subject: [PATCH 02/11] chore(package): sync package-lock --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 44041ad34..e2dca1d0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -990,7 +990,7 @@ }, "node_modules/@firebolt-js/openrpc": { "version": "2.0.0-next.2", - "resolved": "git+ssh://git@github.com/rdkcentral/firebolt-openrpc.git#00fbae3fee20046c4d3fd8cebeb76f6025d27b9a", + "resolved": "git+ssh://git@github.com/rdkcentral/firebolt-openrpc.git#bf62b05facc499cb6bf128184c4881739c59e251", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -13384,7 +13384,7 @@ } }, "@firebolt-js/openrpc": { - "version": "git+ssh://git@github.com/rdkcentral/firebolt-openrpc.git#00fbae3fee20046c4d3fd8cebeb76f6025d27b9a", + "version": "git+ssh://git@github.com/rdkcentral/firebolt-openrpc.git#bf62b05facc499cb6bf128184c4881739c59e251", "dev": true, "from": "@firebolt-js/openrpc@rdkcentral/firebolt-openrpc#fix/temporal-set", "requires": { From df533c882fad5cafed02a962b251d76df97d7918 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 10 May 2023 10:06:14 -0400 Subject: [PATCH 03/11] fix(media-access): Remove "all" VolumeType --- src/openrpc/media_access.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/openrpc/media_access.json b/src/openrpc/media_access.json index 811babd95..7ced63a4e 100644 --- a/src/openrpc/media_access.json +++ b/src/openrpc/media_access.json @@ -556,8 +556,7 @@ "type": "string", "enum": [ "usb", - "local", - "all" + "local" ] }, "MediaFile": { From b95421be94897ad026be1be462164306a5b3b402 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Thu, 22 Jun 2023 13:16:20 -0400 Subject: [PATCH 04/11] First Draft Commit --- .../media/access/media/image1.png | Bin 0 -> 26194 bytes .../specifications/media/media-access.md | 340 ++++++++++++++++ .../openrpc-extensions/response-method.md | 198 ++++++++++ .../openrpc-extensions/temporal-set.md | 374 ++++++++++++++++++ 4 files changed, 912 insertions(+) create mode 100644 requirements/images/specifications/media/access/media/image1.png create mode 100644 requirements/specifications/media/media-access.md create mode 100644 requirements/specifications/openrpc-extensions/response-method.md create mode 100644 requirements/specifications/openrpc-extensions/temporal-set.md diff --git a/requirements/images/specifications/media/access/media/image1.png b/requirements/images/specifications/media/access/media/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..026bed776b6ef5121424b6506e0dada934843291 GIT binary patch literal 26194 zcmeFYcT|(z_b-T*7ZEU2k){Dfx^$(gB=n+G>C&YmozPSSLO1k|(nFOFp$UkD-b?7c zB!rsK%MHHY-`sm=)~q$N?)-887}laZ=Q(Ge-Op$56GGmo%8}i9aEFM9h)h8qq)tRc z3?w4DKK#!O!ifF8@G9ZgLo<1G6(S8)N!M2x=4 zhlG^x*?C2S!($#kU*;B;+L1jiZ5{Iq%i|N1{R2aD^NTC1>$Y}w`S60Zb#zbvPMu)*Z;s<(2iq(#pWl zXk`sUSrr`_MGcUWrnRGIMizWzY%(S>T}jN~}^`kualHHc;d-FG=Ia>HN6 zSHeW6p)bljK@jt|-Mxe8&8_2TfwNcvY@~3@ZzS@wREV{TzNzh5qS)CFrL)x6XK}*k zb&zvZ%~^&0c?Y5D3K2&o3}AFg!dwE-uc^&AYaCptl$O^XH#WpP-?k z@l#W0v$L1Kexc&xveMH_hlh7NIu>ng>_;LvE{D(ogf(zOX&ha51}$tmWU;o6~gj*?6x=Hl8 z)W_}GCz-8d^|74mL`$~D{Rj!7XY;nY38X~76L55U_lQJ&WSU^cmx^PLZxF386BpLvK#YfUc|lUtSMc$VJZjk2L#iewc=R#>g#E_`Y<2 zJj9585(oXApN5~8p|I^>dGSOiN{Z3LbpE7mS56uzDjALU{>20YUSq!pixk^?bKfsY zs@in`DshnS_kL{qx(5_`Gxa41v2jhBsW*d|;sGowX^Oe~#CN{$U;aclh49%2sYVd^Bl z%OCMk5n~-{sn5$?FG=F6*|!ofQE-f0WU8jE-+D{Y9G5IXTmpNlVgQv^4cPr@E09#a zL*pgX`UigeaK6oCsjz5osq0Xi3ByJ-$#aIp(=a4!uC=zF9?L&tJ3F0b9jcNx1u!un zi&!}>@$2%EZnOT~M}L{&6{Dn(BB|9_UAzG9eWdy-_vMWAfrDD|&fQ6e96a80%#lup zU_25~cG#8(Fly=%tmFKQbj+zs;v%*=`J<#MjE7*;*A75uFRzay5#22-aWJKS`t^o!CBq;C03!Ef8fv1>@@G@}6m2EuL#p z92Gfe5cajUmvJ1Q51PK>aG4FLGyZrjD4)`)&By>J%WD$RRaT1$(^}|Lm z($NYa2bFN-%%BJNcAV#d)i*`taEkarNB;u=$$Z}m5SRn`DJ2H1k(@#xa(J1AfC-Ih zGamy#R;z+>vo&+1!ekp{7Ss{a-Sjm>mY29-<%gm7YU zlwtZOFJo((@*OotX&gl*XgQd~%&%$SN))*;k&?-EwS_DmVm_%wrlTdQ4hJknU1%D& z!!h@0!&g1oD;;W5rm9CDIU%QCp%S$8nj6MrOF$OiH~oj4GLL&lu0_rHO9a&Q(Rnmf zu#$@uQ0V%POcf%2xak|i?0JJ}YgC#U`f<&J47xLwS+s^^qJgMCw$)f)8M(&UgcpJr*aqEWCZMHM%epq0_qUeTwVz4 zltp)Qlva#OVXjTxBXAA8f!kZZ5Ut&aP|=-<)~7(n?jR9Boqf$$ zy9#9PvmdpDXiAKqmRrs&8A#KPlT7(4R^_^gQl1K@IC-aA9avJ}#f=W$;tiDh86Tgy zBop5Y6p(+FFqLvpo5Pvv(Q&smHIwx)L(FSr)$M$!pA0`It8k`XGc?C^rNel;pg z;^Zhq!_wZ;U>QcNCgJDbMFQsxv`Ubb%PyI6OpJoa@nU#BPVypn{oO8#lhdC&A3D2g z+=CJ2avuWVp#v5iLUiX)91kDrRZO=Dh<9r%QGCT+>wuTb$~8DmKB>{V%c=}e;sCzm z(LW_%C~q#TZ#A9j{yz3Snuse=?4etpJzp{a0O#6-*rHysK(dObq&jS0flitO;$1a^ zQocZMKC?KELRJ*~GZSk%GR84hOymEvLvdn&(@?yx2#aoY5e{#T_*qg;&DAuXS*Wi! zJ&@+1tW>h4@B9R#X3?A)f~+_hSXhUS=-ZBhvXj_4K-na9!o%)OwD8pwdw|^?ms4H< z$$Py$7MRl1RG7YVo=R&Rvhm^(7X!=|!3UK@RIS>l>`cMP#cj(9vi$k;OOI Zs`A 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 HFW&es_fYzE literal 0 HcmV?d00001 diff --git a/requirements/specifications/media/media-access.md b/requirements/specifications/media/media-access.md new file mode 100644 index 000000000..ef6d6c70d --- /dev/null +++ b/requirements/specifications/media/media-access.md @@ -0,0 +1,340 @@ +# Media Access + +Document Status: Working Draft + +See [Firebolt Requirements Governance](../../governance.md) for more info. + +| Contributor | Organization | +| -------------- | -------------- | +| Anthony Borzotta | Comcast | +| Jeremy LaCivita | Comcast | + +## 1. Overview + +Many apps will need to make use of audio, video, images, and other +assets that are cultivated by the user of the device rather than by an +app or content provider. For example, an app might want to allow a user +to upload a photo to be used as a profile picture or provide a slide +show of photos from a connected USB device. + +Giving such apps full access to the filesystem to facilitate access to +the user's personally cultivated media is providing far too much +information for such a simple use case. On the other hand, providing a +platform file picker UI might not enable the richness of experience that +app developers need. + +The apps that would use this feature are primarily interested in user +cultivated media files, and where they came from, e.g., USB or a cloud +photo storage provider, etc., is of secondary or no importance. This API +is intended to expose user cultivated media in a convenient, file-system +agnostic, storage-agnostic way. + +## 2. Table of Contents +- [1. Overview](#1-overview) +- [2. Table of Contents](#2-table-of-contents) +- [3. Media Access](#3-media-access) + - [3.1. Listing Media Files](#31-listing-media-files) + - [3.2. Accessing Volumes](#32-accessing-volumes) + - [3.3. Volume Availability](#33-volume-availability) + - [3.4. Accessing Files](#34-accessing-files) + - [3.5. Core APIs](#35-core-apis) + - [3.5.1. Volumes](#351-volumes) + - [3.5.2. Audio, Video, Images, Files](#352-audio-video-images-files) + - [3.6. Schemas](#36-schemas) + - [3.6.1. MediaFile](#361-mediafile) + - [3.6.2. Volume](#362-volume) + - [3.6.3. VolumeType](#363-volumetype) + +## 3. Media Access + +The Firebolt `MediaAccess` module consists of APIs to list and read +various types of `MediaFile`. It also contains APIs for detecting when +new `MediaFile` Volumes are available. + +### 3.1. Listing Media Files + +The following APIs are used to return a list of `MediaFile` objects: + +- `MediaAccess.audio()` + +- `MediaAccess.images()` + +- `MediaAccess.video()` + +- `MediaAccess.media()` + +- `MediaAccess.files()` + +These APIs **MUST** support an optional `volume` parameter of type +`Volume`. + +If `volume` is provided, then these APIs **MUST** return all *matching* +(see below) `MediaFile` objects on user-granted volumes that match the +`volume` parameter. The if the `volume` parameter has `undefined` or +`null` properties, then those properties are not used to filter out +volumes from the list. For example a value of `{ type: "usb" }` +would return all matching `MediaFile` objects on any USB volumes. + +If `volume` is not provided, then these APIs **MUST** return all +*matching* `MediaFiles` on all user-granted volumes. + +These APIs **MUST** support an optional `files` parameter of type +`MediaFile`. + +If files is provided, then these APIs **MUST** return all matching (see +below) ) `MediaFile` objects on user-granted volumes that match the +`files` parameter. The if the `files` parameter has `undefined` or +`null` properties, then those properties are not used to filter out +files from the list. For example a value of +`{ type: "application/mp3" }` would return all matching +`MediaFile` objects that have the mp3 mime type. + +Wildcards, e.g. `{ uri: "*.mp3" }` are **not** supported. + +**NOTE**: if this is easy we can reconsider... + +If both `volume` and `files` are provided, then these APIs **MUST** +return all `MediaFiles` that match the volume parameter **AND** the +files parameter. + +Each `MediaFile` includes the full URI, so that Apps may present them in +a manner that matches the directory structure on the `Volume`. + +In order to call the `MediaAccess.audio()` API an app **MUST** have +permission to use the `xrn:firebolt:capability:media-access:audio` +capability. + +The `MediaAccess.audio()` API only matches media that have a mime-type +of `audio/*`. + +In order to call the `MediaAccess.images()` API an app **MUST** have +permission to use the `xrn:firebolt:capability:media-access:images` +capability. + +The `MediaAccess.images()` API only matches media that have a +mime-type of `image/*`. + +In order to call the `MediaAccess.video()` API an app **MUST** have +permission to use the `xrn:firebolt:capability:media-access:video` +capability. + +The `MediaAccess.video()` API only matches media that have a +mime-type of `video/*`. + +In order to call the `MediaAccess.media()` API an app **MUST** have +permission to use at least one of the the +`xrn:firebolt:capability:media-access:` capabilities for `audio`, +`images`, or `video`. + +The `MediaAccess.media()` API only matches `MediaFile` objects that +the app has permission to, i.e. files that would have been returned from +`audio()`, `images()`, and `video()`. + +In order to call the `MediaAccess.files()` API an app **MUST** have +permission to use the `xrn:firebolt:capability:media-access:files` +capability. + +The `MediaAccess.files()` API matches all files on user-granted +volumes on multiple media storage devices connected to the TV/STB such +as USB Drive1, USB Drive2 etc . It's left to the app on how to use the +content and present to users to play, e.g. all files in a file explorer +UI, or various Tiles grouped under different sections based on media +type: Videos, Audio, Images, Misc., etc. + +### 3.2. Accessing Volumes + +Having permission to use the various media access capabilities is not +enough. An app **MUST** also have access to each volume if the device is +configured to require a User Grant to access new volumes. + +To configure this, Distributors **MAY** configure a `GrantPolicy` on the +`xrn:firebolt:capability:volume:read` capability. This capability is +public and non-negotiable, so that distributors do not need to keep +track of which public APIs use it. + +The default Firebolt `GrantPolicy` **MUST** be: + +```json +{ + scope: "app", + lifespan: "forever", + overridable: true, + options: [ + { + steps: [ + { + capability: "xrn:firebolt:capability:usergrant:acknowledge", + } + ] + } + ] +} +``` + +This grant policy allows distributors to configure the `GrantPolicy` in +whatever way they want, including automatically granting. + +Finally, the `GrantPolicy` object itself will have a new Boolean +configuration value, `perResource` for determining if a particular +policy is per resource or just for the capability as a whole. + +If `perResource` is true, then a `resource` name `string` **MUST** be +passed when checking the grant status, and the resources that have been +granted **MUST** be persisted in the grant status. + +For the `MediaAccess` APIs, the `resource` string will be the `uri` of +the media file to be played on a specific **Volume**. + +This results in the first time an app wants to access MediaFiles on a +volume, the platform will check if the app not only has access to the +API used, but also the device being queried. + +### 3.3. Volume Availability + +Apps that consume user cultivated media will likely want to know when +volumes become available or unavailable. + +This is accomplished with a temporal-set API called `volumes()`. + +The volumes API **MUST** support a context parameter of type for the +Volume Type, e.g. `usb`, `local`, or `all`. + +See [Temporal Sets](../openrpc-extensions/temporal-set.md) for more info. + +### 3.4. Accessing Files + +In order to do something with the file, apps will need access to the +file contents. + +Firebolt platforms **MUST** provide a local `https` server for apps to +request MediaFiles. + +The server **MUST** be reachable via the IP address 127.0.0.1 + +The server **MUST** only be accessible via `https` and have a valid, +self-signed certificate trusted by the browser. + +**NOTE: does using an IP address mean we can't use SSL? Do we need a +fake domain name? Do we even need SSL if the host is 127.0.0.1?** + +Authorization **MUST** be obtained by the Firebolt SDK using an +`rpc-only` authorize method. + +Authorization **MUST** be short lived, e.g. less than 5 seconds. + +To facilitate Authorization, Firebolt **MUST** offer an API to fetch the +file contents. The name of this API should be determined by the target +language of the SDK. + +In the JavaScript SDK, the `MediaFile` schema **MUST** include an +`x-method` property called `fetch` that calls the ECMAScript `fetch` API +with a short-lived authorization token and returns the ECMAScript +`Response` object. See [Response Methods](../openrpc-extensions/response-method.md) +for more info on x-method properties. + +In the JavaScript SDK, the `fetch` method **MUST** be called from within +an ECMAScript `Worker`, to avoid slowing down the app. + +SDKs for other languages **SHOULD** come up with similar optimizations +using appropriate API names. + +![Diagram Description automatically +generated](../../images/specifications/media/access/media/image1.png) + +NOTE: This is (currently in XumoTV) handled by the ECMAScript `fetch` +method by passing a `file://` URI containing the `MediaFile` path. We +need to fix this!! + +### 3.5. Core APIs + +The following APIs are added to the Core SDK. + +#### 3.5.1. Volumes + +The `volumes` method can be called in one of three ways. + +The get the currently cached list of Volumes w/out scanning call the +method with just a `query` parameter: + +function volumes(query: Volume): Promise\ + +This returns the Volumes that the device is aware or, that match the +query, without checking if there are any new volumes. + +To find the first volume that matches a query, pass in a `query` and a +`timeout`, in milliseconds, representing how long the app is willing to +wait. + +function volumes(query: Volume, timeout: number): Promise\ + +This returns a `Volume` object if a match is found before the `timeout`. + +To initiate a live temporal set that updates continuously, call the +method with a `query`, an `add` callback and a `remove` callback: + +function volumes(query: Volume, add: (item: Volume) =\> void, remove: +(item: Volume) =\> void): VolumeProcess + +This will initiate an open-ended scan for volumes matching the query and +call the callbacks when a device becomes available or unavailable. + +This method returns a `VolumeProcess` object, synchronously, that +contains a single `stop()` method for cancelling the temporal-set +session. + +#### 3.5.2. Audio, Video, Images, Files + +These APIs return all the files that match the associated capability, +and the Volume query parameter: + +function audio(volumes?: Volume, files?: MediaFile): +Promise\ + +function video(volumes?: Volume, files?: MediaFile): +Promise\ + +function images(volumes?: Volume, files?: MediaFile): +Promise\ + +function media(volumes?: Volume, files?: MediaFile): +Promise\ + +function files(volumes?: Volume, files?: MediaFile): +Promise\ + +The `volumes` and `files` parameters can be sparsely populated, e.g. +passing in `{ type: "usb" }` to the `audio` method would return +all audio files on any USB drive. + +### 3.6. Schemas + +The following Schemas are used by this API. + +#### 3.6.1. MediaFile + +This is the primary object return by the various APIs. + +| Property | Type | Description | +|----------|--------|----------------------------------------------| +| volume | Volume | The Volume the file is stored on | +| uri | string | The full path, including volume, to the file | +| type | string | The mime-type of the file | + +#### 3.6.2. Volume + +This provides information about a Volume, e.g. a Device, that stores +MediaFiles. + +| Property | Type | Description | +|----------|------------|---------------------------------------------------| +| type | VolumeType | The type of volume, e.g. USB | +| uri | string | The full path to the root of the volume's storage | +| name | string | The display name of the volume | + +#### 3.6.3. VolumeType + +An enumeration of strings representing possible Volume types: + +- `'usb'` + +- `'local'` diff --git a/requirements/specifications/openrpc-extensions/response-method.md b/requirements/specifications/openrpc-extensions/response-method.md new file mode 100644 index 000000000..d5f9c12a2 --- /dev/null +++ b/requirements/specifications/openrpc-extensions/response-method.md @@ -0,0 +1,198 @@ +# Response Method Binding + +Document Status: Working Draft + +See [Firebolt Requirements Governance](../../governance.md) for more info. + +| Contributor | Organization | +| -------------- | -------------- | +| Sathish Kirupakaran | Comcast | +| Jeremy LaCivita | Comcast | +| Kevin Pearson | Comcast | + +## 1. Overview + +A Response Method is an RPC method that is attached to an RPC result by +the SDK for convenience. This allows for results that represent their +own focused APIs. For example: + +```javascript +const pet = House.getPet() + +pet.walk() +``` + +In the example above, pet.walk() is an RPC method that takes a pet +object as a parameter. Calling pet.walk() via the Response Method syntax +allows contextual APIs to be called with simpler method signatures. +These methods may or may not be hidden via the rpc-only tag to avoid +Apps calling them without valid parameters, if desired. + +This document describes an OpenRPC pattern and JavaScript code +generation for a Firebolt method template that returns results that +contain these type of methods. + +## 2. Table of Contents +- [1. Overview](#1-overview) +- [2. Table of Contents](#2-table-of-contents) +- [3. Response Methods Use Cases](#3-response-methods-use-cases) + - [3.1. Array Example](#31-array-example) +- [4. Response Methods API](#4-response-methods-api) + - [4.1. JSON-RPC API](#41-json-rpc-api) + - [4.2. JavaScript API](#42-javascript-api) + +## 3. Response Methods Use Cases + +Response methods may be added to any top-level object result or to all +top-level objects in an array result. The example above covers top-level +objects and an array example is in the following section. + +Response Methods **MUST** be at the top level of the response object or +at the top level of all of the objects in the response array. Response +Methods are not supported in nested objects. Response Methods are not +supported as the result of an RPC method itself, i.e., an RPC method +cannot just return a Response Method without an object wrapper. + +Response Methods **MUST** point to an RPC method with a compatible +signature (see below). + +### 3.1. Array Example + +```javascript +const pets = House.getPets() + +pets.forEach( pet => pet.walk() ) +``` + +In this example, each pet in the getPets() array has the walk method. + +## 4. Response Methods API + +The section describes the RPC and JavaScript APIs. + +### 4.1. JSON-RPC API + +For a method response to contain Response Methods, it **MUST** use the +x-method extension attribute on a property. + +```json +{ + "name": "getPet", + "params": [ + ], + "result": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "walk": { + "type": "null", + "x-method": "House.walkPet", + "x-this-param": "pet" + } + } + } + } +} +``` + +When the x-method attribute is used within an OpenRPC method result +schema, the result schema **MUST** be an object or an array. For objects +the attribute **MUST** be on one of the top-level properties. For arrays +the attribute **MUST** be on one of the top level properties of the +items schema. + +Properties flagged with the x-method attribute MUST be of type: "null" +and have no other attributes except for title, description, and +\$comment. This is to avoid duplication / contradiction of the +referenced RPC method. + +The x-method value **MUST** be an OpenRPC method within the current +module, and be fully qualified, in case this requirement is ever +relaxed, e.g. House.walkPet, not just walkPet. + +When the x-method attribute is used, the following optional extension +attributes may be used as well: + +| Extension attribute | Type | Description | +|------------------|-------------|-----------------------------------------| +| x-this-param | string | Parameter name to assign the value of the object to when calling the x-method RPC method | +| x-additional-params | array | Ordered mapping of parameter names for additional parameters. *Can we just grab from the method?* | + +Method results that have properties containing the x-method attribute +will have JavaScript bindings created to insert the methods when using +the SDK. No RPC methods are generated automatically. the RPC method +targeted by x-method **MUST** exist in the module source. + +### 4.2. JavaScript API + +Using the simple example from above: + +```javascript +const pet = House.getPet() + +pet.walk() +``` + +The first line would result in the following RPC call: + +```json +{ + "id": 1, + "jsonrpc": "2.0", + "method": "house.getPet", + "params": [] +} +``` + +And the response might look like: + +```json +{ + "id": 1, + "jsonrpc": "2.0", + "result": { + "name": "Fido", + "type": "dog" + ] +} +``` + +At this point, the SDK would decorate the response to include the walk() +method, something like: + +```javascript +json.result['walk'] = (pet) => { + return Transport.send('house', 'walkPet', { pet }) +} +``` + +Note that the Response Method, walk(), also returns a Promise, since it +calls another Firebolt RPC method. + +Response Methods MUST support additional parameters as well. For +example, if the walkPet() method had a required parameter called +distance, in addition to pet, then the generated method would look +something like: + +```javascript +json.result['walk'] = (pet, distance) => { + return Transport.send('house', 'walkPet', { pet, distance }) +} +``` + +The order of the parameters in the House.walkPet method **MUST** be +respected when generating Response Methods. If walkPet had pet as the +second parameter, then pet.walk() would be generated like this: + + +```javascript +json.result['walk'] = (distance, pet) => { + return Transport.send('house', 'walkPet', { pet, distance }) +} +``` + +When a Response Method is called, it simply calls the RPC method w/ the +main object as the parameter denoted by x-this-param. diff --git a/requirements/specifications/openrpc-extensions/temporal-set.md b/requirements/specifications/openrpc-extensions/temporal-set.md new file mode 100644 index 000000000..12f7bb6d4 --- /dev/null +++ b/requirements/specifications/openrpc-extensions/temporal-set.md @@ -0,0 +1,374 @@ +# Temporal Set RPC Method + +Document status: Proposed Spec + +See [Firebolt Requirements Governance](../../governance.md) for more info. + +| Contributor | Organization | +| -------------- | -------------- | +| Mike Fine | Comcast | +| Jeremy LaCivita | Comcast | +| Kevin Pearson | Comcast | + +## 1. Overview + +A Temporal Set is an Array-like data structure that only contains unique +items, i.e., a \"set,\" and has its contents change over an indefinite +length of time, i.e., \"temporal.\" + +This document describes an OpenRPC pattern and JavaScript code +generation for a Firebolt method template that returns this type of +object. + +## 2. Table of Contents +- [1. Overview](#1-overview) +- [2. Table of Contents](#2-table-of-contents) +- [3. Temporal Set Requirements](#3-temporal-set-requirements) + - [3.1. Live-list of matches](#31-live-list-of-matches) + - [3.2. First match](#32-first-match) + - [3.3. Background scan](#33-background-scan) +- [4. Temporal Set API](#4-temporal-set-api) + - [4.1. JSON-RPC API](#41-json-rpc-api) + - [4.1.1. onItemAvailable](#411-onitemavailable) + - [4.1.2. onItemUnavailable](#412-onitemunavailable) + - [4.1.3. stopMethodName](#413-stopmethodname) + - [4.2. JavaScript API](#42-javascript-api) + +## 3. Temporal Set Requirements + +There are many common use cases that involve finding a specific service +or device, where the items be found could show up at any point in an +unknown future. This could be things like WiFi networks, Bluetooth +accessories, or DNS-SD-based developer tools. + +Apps tend to fall into a handful of use cases which Firebolt APIs should +strive to enable. + +In the following use cases, the terms \"matching\" and \"item\" are used +to describe the \"things\" being found, e.g. WiFi access points, +Bluetooth devices with the headset profile, etc. How this matching +occurs is outside the scope of this document. + +### 3.1. Live-list of matches + +Displaying a list of all matching items and keeping it up to date for an +indefinite time is probably the most common use case for this type of +API. A frequent example of this is a WiFi picker UX. + +To make this UX as simple to implement as possible, the Temporal Set API +**MUST** ensure: + +> Duplicate matched items **MUST NOT** be passed to the App +> +> AND +> +> The app **MUST** be informed when matched items become unavailable or +> are no longer part of the temporal set +> +> AND +> +> The app **MUST** be informed when matched items become available or +> are now part of the temporal set +> +> AND +> +> The app **MUST** be able to communicate that it no longer cares about +> this temporal set + +### 3.2. First match + +Finding a specific item, with no UX needed is another common use case. A +common example is pairing a known device with specific details that will +likely result in one match, e.g., a previously paired remote, or a +remote with a specific make/model. + +To make this user journey as simple to implement as possible, the +Temporal Set API **MUST** ensure: + +> There is a way to call the API that uses the same semantics, e.g., +> method name, and a simpler method signature to denote the \"first +> match\" use case. + +### 3.3. Background scan + +Scanning for matches in the background is another use-case that could +come up. An example of this is to scan for a previously paired phone and +wake up the TV when the phone\'s Bluetooth signal is in proximity. + +This use case can likely be fulfilled by an API that serves the previous +use cases but is listed here for completeness. + +## 4. Temporal Set API + +The section describes the RPC and JavaScript APIs. + +### 4.1. JSON-RPC API + +For a method to leverage the Temporal Set template, it MUST use thetemporal-set tag. + + +```json +{ + "name": "", + "tags": [ + { + "name": "temporal-set" + } + ], + "params": [ + { + "name": "query", + "schema": { + "type": "string" + } + } + ], + "result": { + "schema": { + "type": "array", + "items": { + "title": "Item", + "type": number + } + } + } +} +``` + +When this tag is used on an OpenRPC method schema, the result schema +**MUST** be an `array`, and the `items` schema defines the schema for an +individual matched item. + +The `query` param here is an example. The method may contain any +primitive (string, number, integer, boolean) parameters, or no +parameters. See [Context +Parameters](https://comcastcorp.sharepoint.com/:w:/r/sites/hqppa/Shared%20Documents/Global%20App%20Platform/Firebolt/Requirements/General/APIs/Context%20Parameters.docx?d=w84c3615b348241a4818d65985303e430&csf=1&web=1&e=DIFLdd) +for more info. + +The `title` attribute on `result.schema items` **MUST** be present +and denotes the type of items being matched, e.g., \"BluetoothDevice.\" +The title **MAY** be inside of a schema linked via a `$ref`. if it is +not directly on `result.items`. + +When this method is called, all matching items that the platform +currently knows about **MUST** be returned without waiting for +additional matches. + +Methods with this tag will have three OpenRPC methods generated by the +Firebolt tooling. + +#### 4.1.1. onItemAvailable + +This is an OpenRPC event with the name including the title of the +original `result.items`. This event fires whenever an *additional,* +matching item is found that was not returned in the original method +array result. It is up to the Firebolt implementation to filter results, +not the SDK. + +The `correlationId` parameter maps this listener back to the original +temporal-set API call that started the temporal set scan. The `listen` +parameter is the standard event listener parameter. + +```json +{ + "name": "onAvailable", + "tags": [ + { + "name": "event", + "x-temporal-set": "" + } + ], + "params": { + { + "name": "correlationId", + "schema": { + "type": ["number", "string"] + } + }, + { + "name": "listen", + "schema": { + "type": "boolean" + } + } + }, + "result": { + "anyOf": [ + { + "schema": + }, + { + "$ref": "http://meta.comcast.com/firebolt/types/#/defintions/ListenReponse" + ] + } +} +``` + +#### 4.1.2. onItemUnavailable + +This is an OpenRPC event with the name matching the title of the +original `result.items`. This event fires whenever an item is no longer +\"found.\" Items dispatched from this event should be items that the app +has received either via the initial method call or an `onItemAvailable` +event. + +```json +{ + "name": "onUnavailable", + ... +} +``` + +Aside from the `name`, all other aspects of this schema match theonItemAvailable schema. + +#### 4.1.3. stopMethodName + +This is an OpenRPC method that cancels the current temporal set session. + +```json +{ + "name": "stop", + "params": [ + { + " correlationId ": { + "type": ["string", "number"] + } + } + ], + "result": { + "type": "void" + } +} +``` + +Calling this method ends the session, and no further events with the +current `correlationId` should be dispatched. The `correlationId` is the +id value from the original method call. + +Methods may have different additional requirements of what this means. +Discussion of those is out of scope for this document. + +### 4.2. JavaScript API + +The JavaScript API will leverage the RPC API in two different ways, +depending on whether the app wants the first match, or a live temporal +set. + +For the first match, the app would do something like: + +```javascript +Module.find("Firebolt Tool", 10000).then(result => { + console.log("Here's the result") + console.dir(result) +}) +``` + +The last parameter is an optional timeout value. All context parameters +**MUST** be passed before the timeout. + +This code would result in the following RPC calls: + +```json +[ + { + "id": 1, + "jsonrpc": "2.0", + "method": "module.find", + "params": { + "query": "Firebolt Tool" + } + }, + { + "id": 2, + "jsonrpc": "2.0", + "method": "module.onItemAvailable", + "params": { + "listen": true, + "correlationId": 1 + } + } +] +``` + +Note that these two calls are batched into a single request to avoid +latency race conditions. + +If a match is found, then the responses might look like: + +```json +[ + { + "id": 1, + "jsonrpc": "2.0", + "result": [ + "Here's a match!" + ] + }, + { + "id": 2, + "jsonrpc": "2.0", + "result": { + "listening": true + } + } +] +``` + +At this point, the SDK would resolve the promise with the *first* +result, and turn off the listener: + +```json + { + "id": 2, + "jsonrpc": "2.0", + "method": "module.onItemAvailable", + "params": { + "listen": false, + "correlationId": 1 + } + } +``` + +If no item was available immediately, then the SDK would wait for anonItemAvailble event, and then turn off the listener. + +For first-match use cases, once the listener is turned off, the SDK MUST +call the `stop` API immediately. + +Alternately, if the app calls the stop method before any result is +returned, then the listener would be turned off and thestop RPC API would be called: + +```json + { + "id": 3, + "jsonrpc": "2.0", + "method": "module.stopFind", + "params": { + "correlationId": 1 + } + } +``` + +The JavaScript code for doing a live temporal set would look like this: + +```javascript +Module.find("Firebolt Tool", + result => { + console.log(\'this item shows up\') + console.dir(result) + }, + result => { + console.log(\'this item goes away\') + console.dir(result) + } +).then( process => { + setTimeout( () => { process.stop() }, 10000) +}) +``` + +The RPC calls for this flow are similar, with the following additions: + +- the `onItemUnavailble` event is turned on + +- the first callback is called once for *each* item found + +- the second callback is called once for each item removed From ff59b4bcc16ac99c4220e08e4a43eb5aff3ab136 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Thu, 22 Jun 2023 13:26:37 -0400 Subject: [PATCH 05/11] fix examples --- src/openrpc/media_access.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/openrpc/media_access.json b/src/openrpc/media_access.json index 7ced63a4e..54945fec3 100644 --- a/src/openrpc/media_access.json +++ b/src/openrpc/media_access.json @@ -46,7 +46,6 @@ { "name": "query", "value": { - "type": "all" } } ], @@ -115,7 +114,6 @@ { "name": "volumes", "value": { - "type": "all" } } ], @@ -192,7 +190,6 @@ { "name": "volumes", "value": { - "type": "all" } } ], @@ -269,7 +266,6 @@ { "name": "volumes", "value": { - "type": "all" } } ], @@ -346,7 +342,6 @@ { "name": "volumes", "value": { - "type": "all" } } ], @@ -459,7 +454,6 @@ { "name": "volumes", "value": { - "type": "all" } } ], From 2b70a98cc773b692d4b3ec62d698ed2c47ff70c3 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 10 Jul 2023 09:50:52 -0400 Subject: [PATCH 06/11] Update image1.png --- .../media/access/media/image1.png | Bin 26194 -> 117210 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/requirements/images/specifications/media/access/media/image1.png b/requirements/images/specifications/media/access/media/image1.png index 026bed776b6ef5121424b6506e0dada934843291..9f1e850a10b7dae08f5f0ae5ae154455db4fb1ca 100644 GIT binary patch literal 117210 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 Zs`A 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 HFW&es_fYzE From a8360ba77807e532f868637247f5e06dbe14d6fe Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 14 Jul 2023 11:10:55 -0400 Subject: [PATCH 07/11] fix: Formatting cleanup --- .../specifications/media/media-access.md | 50 +++++++++++-------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/requirements/specifications/media/media-access.md b/requirements/specifications/media/media-access.md index ef6d6c70d..6e76196db 100644 --- a/requirements/specifications/media/media-access.md +++ b/requirements/specifications/media/media-access.md @@ -56,18 +56,16 @@ new `MediaFile` Volumes are available. The following APIs are used to return a list of `MediaFile` objects: - `MediaAccess.audio()` - - `MediaAccess.images()` - - `MediaAccess.video()` - - `MediaAccess.media()` - - `MediaAccess.files()` These APIs **MUST** support an optional `volume` parameter of type `Volume`. +TODO: Add capability strings + If `volume` is provided, then these APIs **MUST** return all *matching* (see below) `MediaFile` objects on user-granted volumes that match the `volume` parameter. The if the `volume` parameter has `undefined` or @@ -156,14 +154,14 @@ The default Firebolt `GrantPolicy` **MUST** be: ```json { - scope: "app", - lifespan: "forever", - overridable: true, - options: [ + "scope": "app", + "lifespan": "forever", + "overridable": true, + "options": [ { - steps: [ + "steps": [ { - capability: "xrn:firebolt:capability:usergrant:acknowledge", + "capability": "xrn:firebolt:capability:usergrant:acknowledge", } ] } @@ -251,12 +249,19 @@ The following APIs are added to the Core SDK. #### 3.5.1. Volumes -The `volumes` method can be called in one of three ways. +The `volumes` method can be called in one of four ways. + +```typescript +function volumes(): Promise +``` + The get the currently cached list of Volumes w/out scanning call the method with just a `query` parameter: -function volumes(query: Volume): Promise\ +```typescript +function volumes(query: Volume): Promise +``` This returns the Volumes that the device is aware or, that match the query, without checking if there are any new volumes. @@ -265,15 +270,19 @@ To find the first volume that matches a query, pass in a `query` and a `timeout`, in milliseconds, representing how long the app is willing to wait. +```typescript function volumes(query: Volume, timeout: number): Promise\ +``` This returns a `Volume` object if a match is found before the `timeout`. To initiate a live temporal set that updates continuously, call the method with a `query`, an `add` callback and a `remove` callback: -function volumes(query: Volume, add: (item: Volume) =\> void, remove: -(item: Volume) =\> void): VolumeProcess +```typescript +function volumes(query: Volume, add: (item: Volume) => void, remove: +(item: Volume) => void): VolumeProcess +``` This will initiate an open-ended scan for volumes matching the query and call the callbacks when a device becomes available or unavailable. @@ -287,20 +296,22 @@ session. These APIs return all the files that match the associated capability, and the Volume query parameter: +```typescript function audio(volumes?: Volume, files?: MediaFile): -Promise\ +Promise function video(volumes?: Volume, files?: MediaFile): -Promise\ +Promise function images(volumes?: Volume, files?: MediaFile): -Promise\ +Promise function media(volumes?: Volume, files?: MediaFile): -Promise\ +Promise function files(volumes?: Volume, files?: MediaFile): -Promise\ +Promise +``` The `volumes` and `files` parameters can be sparsely populated, e.g. passing in `{ type: "usb" }` to the `audio` method would return @@ -336,5 +347,4 @@ MediaFiles. An enumeration of strings representing possible Volume types: - `'usb'` - - `'local'` From 3ce4cc3636f1b6bf1707b0ccfe9829430fd4ecef Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 21 Jul 2023 10:20:04 -0400 Subject: [PATCH 08/11] Latest tweaks --- .../specifications/media/media-access.md | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/requirements/specifications/media/media-access.md b/requirements/specifications/media/media-access.md index 6e76196db..1ab1127c5 100644 --- a/requirements/specifications/media/media-access.md +++ b/requirements/specifications/media/media-access.md @@ -49,7 +49,7 @@ agnostic, storage-agnostic way. The Firebolt `MediaAccess` module consists of APIs to list and read various types of `MediaFile`. It also contains APIs for detecting when -new `MediaFile` Volumes are available. +new media file `Volumes` are available. ### 3.1. Listing Media Files @@ -64,8 +64,6 @@ The following APIs are used to return a list of `MediaFile` objects: These APIs **MUST** support an optional `volume` parameter of type `Volume`. -TODO: Add capability strings - If `volume` is provided, then these APIs **MUST** return all *matching* (see below) `MediaFile` objects on user-granted volumes that match the `volume` parameter. The if the `volume` parameter has `undefined` or @@ -73,9 +71,6 @@ If `volume` is provided, then these APIs **MUST** return all *matching* volumes from the list. For example a value of `{ type: "usb" }` would return all matching `MediaFile` objects on any USB volumes. -If `volume` is not provided, then these APIs **MUST** return all -*matching* `MediaFiles` on all user-granted volumes. - These APIs **MUST** support an optional `files` parameter of type `MediaFile`. @@ -95,8 +90,12 @@ If both `volume` and `files` are provided, then these APIs **MUST** return all `MediaFiles` that match the volume parameter **AND** the files parameter. -Each `MediaFile` includes the full URI, so that Apps may present them in -a manner that matches the directory structure on the `Volume`. +If neither `volume` nor `files` is provided, then these APIs **MUST** +return all *matching* `MediaFiles` on all user-granted volumes. + +Each `MediaFile` includes the full URI, relative to the Volume, so +that Apps may present them in a manner that matches the directory +structure on the `Volume`. In order to call the `MediaAccess.audio()` API an app **MUST** have permission to use the `xrn:firebolt:capability:media-access:audio` @@ -124,6 +123,8 @@ permission to use at least one of the the `xrn:firebolt:capability:media-access:` capabilities for `audio`, `images`, or `video`. +**TODO**: Need Ripple team input on this... it breaks our standard pattern. + The `MediaAccess.media()` API only matches `MediaFile` objects that the app has permission to, i.e. files that would have been returned from `audio()`, `images()`, and `video()`. @@ -169,6 +170,10 @@ The default Firebolt `GrantPolicy` **MUST** be: } ``` +**TODO**: I think we updated grant policies to allow sharing them across +multiple capabilities. If so, we can drop this new `volume:read` cap, and +put the individual capabilities from the section above into one policy. + This grant policy allows distributors to configure the `GrantPolicy` in whatever way they want, including automatically granting. @@ -181,12 +186,14 @@ passed when checking the grant status, and the resources that have been granted **MUST** be persisted in the grant status. For the `MediaAccess` APIs, the `resource` string will be the `uri` of -the media file to be played on a specific **Volume**. +the specific **Volume** being accessed. This results in the first time an app wants to access MediaFiles on a volume, the platform will check if the app not only has access to the API used, but also the device being queried. +**TODO** need to review this with Ripple team. + ### 3.3. Volume Availability Apps that consume user cultivated media will likely want to know when @@ -195,12 +202,15 @@ volumes become available or unavailable. This is accomplished with a temporal-set API called `volumes()`. The volumes API **MUST** support a context parameter of type for the -Volume Type, e.g. `usb`, `local`, or `all`. +Volume Type, e.g. `usb`. See [Temporal Sets](../openrpc-extensions/temporal-set.md) for more info. ### 3.4. Accessing Files +**TODO**: this is still in review +**TODO**: Add some details on the HTTP Server thunder plugin + In order to do something with the file, apps will need access to the file contents. @@ -239,9 +249,6 @@ using appropriate API names. ![Diagram Description automatically generated](../../images/specifications/media/access/media/image1.png) -NOTE: This is (currently in XumoTV) handled by the ECMAScript `fetch` -method by passing a `file://` URI containing the `MediaFile` path. We -need to fix this!! ### 3.5. Core APIs @@ -347,4 +354,3 @@ MediaFiles. An enumeration of strings representing possible Volume types: - `'usb'` -- `'local'` From b8b3d5faa8343b59f4ad79584b3998013b56f12a Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Thu, 4 Apr 2024 13:28:51 -0400 Subject: [PATCH 09/11] fix: Simplifying API for V1 --- .../specifications/media/media-access.md | 272 ++++++------------ 1 file changed, 80 insertions(+), 192 deletions(-) diff --git a/requirements/specifications/media/media-access.md b/requirements/specifications/media/media-access.md index 1ab1127c5..59b999b23 100644 --- a/requirements/specifications/media/media-access.md +++ b/requirements/specifications/media/media-access.md @@ -11,11 +11,8 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. ## 1. Overview -Many apps will need to make use of audio, video, images, and other -assets that are cultivated by the user of the device rather than by an -app or content provider. For example, an app might want to allow a user -to upload a photo to be used as a profile picture or provide a slide -show of photos from a connected USB device. +Some apps will need to make use of files stored on the device, e.g. on +internal storage or a USB Mass Storage device. Giving such apps full access to the filesystem to facilitate access to the user's personally cultivated media is providing far too much @@ -34,16 +31,15 @@ agnostic, storage-agnostic way. - [2. Table of Contents](#2-table-of-contents) - [3. Media Access](#3-media-access) - [3.1. Listing Media Files](#31-listing-media-files) - - [3.2. Accessing Volumes](#32-accessing-volumes) - - [3.3. Volume Availability](#33-volume-availability) - - [3.4. Accessing Files](#34-accessing-files) - - [3.5. Core APIs](#35-core-apis) - - [3.5.1. Volumes](#351-volumes) - - [3.5.2. Audio, Video, Images, Files](#352-audio-video-images-files) - - [3.6. Schemas](#36-schemas) - - [3.6.1. MediaFile](#361-mediafile) - - [3.6.2. Volume](#362-volume) - - [3.6.3. VolumeType](#363-volumetype) + - [3.2. Volume Availability](#32-volume-availability) + - [3.3. Accessing Files](#33-accessing-files) + - [3.4. Core APIs](#34-core-apis) + - [3.4.1. Volumes](#341-volumes) + - [3.4.2. Files](#342-files) + - [3.5. Schemas](#35-schemas) + - [3.5.1. MediaFile](#351-mediafile) + - [3.5.2. Volume](#352-volume) + - [3.5.3. VolumeType](#353-volumetype) ## 3. Media Access @@ -53,148 +49,49 @@ new media file `Volumes` are available. ### 3.1. Listing Media Files -The following APIs are used to return a list of `MediaFile` objects: +The `MediaAccess` module **MUST** have a `files` API used to return a +list of `MediaFile` objects from a specific directory. -- `MediaAccess.audio()` -- `MediaAccess.images()` -- `MediaAccess.video()` -- `MediaAccess.media()` -- `MediaAccess.files()` +The `files` APIs **MUST** support a required `path` parameter of type +`string`. -These APIs **MUST** support an optional `volume` parameter of type -`Volume`. +The `path` parameter may denote a Volume mount-point or a directory at +any level below one of the available volumes. -If `volume` is provided, then these APIs **MUST** return all *matching* -(see below) `MediaFile` objects on user-granted volumes that match the -`volume` parameter. The if the `volume` parameter has `undefined` or -`null` properties, then those properties are not used to filter out -volumes from the list. For example a value of `{ type: "usb" }` -would return all matching `MediaFile` objects on any USB volumes. +The `files` API **MUST** return all files and directories inside the +provided `path`. -These APIs **MUST** support an optional `files` parameter of type -`MediaFile`. +The `files` API **MUST NOT** be recursive. -If files is provided, then these APIs **MUST** return all matching (see -below) ) `MediaFile` objects on user-granted volumes that match the -`files` parameter. The if the `files` parameter has `undefined` or -`null` properties, then those properties are not used to filter out -files from the list. For example a value of -`{ type: "application/mp3" }` would return all matching -`MediaFile` objects that have the mp3 mime type. +If the `path` is not a valid directory, the `files` API **MUST** return +an `Invalid path` error. -Wildcards, e.g. `{ uri: "*.mp3" }` are **not** supported. - -**NOTE**: if this is easy we can reconsider... - -If both `volume` and `files` are provided, then these APIs **MUST** -return all `MediaFiles` that match the volume parameter **AND** the -files parameter. - -If neither `volume` nor `files` is provided, then these APIs **MUST** -return all *matching* `MediaFiles` on all user-granted volumes. +If the `path` is a directory that cannot be accessed due to OS +permissions, then the `files` API **MUST** also return the same `Invalid path` +error. Each `MediaFile` includes the full URI, relative to the Volume, so that Apps may present them in a manner that matches the directory -structure on the `Volume`. - -In order to call the `MediaAccess.audio()` API an app **MUST** have -permission to use the `xrn:firebolt:capability:media-access:audio` -capability. - -The `MediaAccess.audio()` API only matches media that have a mime-type -of `audio/*`. - -In order to call the `MediaAccess.images()` API an app **MUST** have -permission to use the `xrn:firebolt:capability:media-access:images` -capability. - -The `MediaAccess.images()` API only matches media that have a -mime-type of `image/*`. - -In order to call the `MediaAccess.video()` API an app **MUST** have -permission to use the `xrn:firebolt:capability:media-access:video` -capability. - -The `MediaAccess.video()` API only matches media that have a -mime-type of `video/*`. - -In order to call the `MediaAccess.media()` API an app **MUST** have -permission to use at least one of the the -`xrn:firebolt:capability:media-access:` capabilities for `audio`, -`images`, or `video`. - -**TODO**: Need Ripple team input on this... it breaks our standard pattern. - -The `MediaAccess.media()` API only matches `MediaFile` objects that -the app has permission to, i.e. files that would have been returned from -`audio()`, `images()`, and `video()`. - -In order to call the `MediaAccess.files()` API an app **MUST** have -permission to use the `xrn:firebolt:capability:media-access:files` -capability. - -The `MediaAccess.files()` API matches all files on user-granted -volumes on multiple media storage devices connected to the TV/STB such -as USB Drive1, USB Drive2 etc . It's left to the app on how to use the -content and present to users to play, e.g. all files in a file explorer -UI, or various Tiles grouped under different sections based on media -type: Videos, Audio, Images, Misc., etc. - -### 3.2. Accessing Volumes - -Having permission to use the various media access capabilities is not -enough. An app **MUST** also have access to each volume if the device is -configured to require a User Grant to access new volumes. - -To configure this, Distributors **MAY** configure a `GrantPolicy` on the -`xrn:firebolt:capability:volume:read` capability. This capability is -public and non-negotiable, so that distributors do not need to keep -track of which public APIs use it. - -The default Firebolt `GrantPolicy` **MUST** be: +structure on the `Volume`, e.g.: ```json { - "scope": "app", - "lifespan": "forever", - "overridable": true, - "options": [ - { - "steps": [ - { - "capability": "xrn:firebolt:capability:usergrant:acknowledge", - } - ] - } - ] + "path": "/Volumes/USB-Drive/mp3s/mysong.mp3", + "url": "https://127.0.0.1:1001/MediaAccess/USBMassStorage/Volumes/USB-Drive/mp3s/mysong.mp3", + "isDir": false, + "type": "application/mp3" } ``` -**TODO**: I think we updated grant policies to allow sharing them across -multiple capabilities. If so, we can drop this new `volume:read` cap, and -put the individual capabilities from the section above into one policy. +Apps **MUST** use the `path` property for display purposes and the `url` +property for fetching purposes. This allows the underlying HTTP +implementation to change w/out apps breaking. -This grant policy allows distributors to configure the `GrantPolicy` in -whatever way they want, including automatically granting. - -Finally, the `GrantPolicy` object itself will have a new Boolean -configuration value, `perResource` for determining if a particular -policy is per resource or just for the capability as a whole. - -If `perResource` is true, then a `resource` name `string` **MUST** be -passed when checking the grant status, and the resources that have been -granted **MUST** be persisted in the grant status. - -For the `MediaAccess` APIs, the `resource` string will be the `uri` of -the specific **Volume** being accessed. - -This results in the first time an app wants to access MediaFiles on a -volume, the platform will check if the app not only has access to the -API used, but also the device being queried. - -**TODO** need to review this with Ripple team. +In order to call the `MediaAccess.files()` API an app **MUST** have +permission to use the `xrn:firebolt:capability:media-access:files` +capability. -### 3.3. Volume Availability +### 3.2. Volume Availability Apps that consume user cultivated media will likely want to know when volumes become available or unavailable. @@ -206,7 +103,7 @@ Volume Type, e.g. `usb`. See [Temporal Sets](../openrpc-extensions/temporal-set.md) for more info. -### 3.4. Accessing Files +### 3.3. Accessing Files **TODO**: this is still in review **TODO**: Add some details on the HTTP Server thunder plugin @@ -225,36 +122,41 @@ self-signed certificate trusted by the browser. **NOTE: does using an IP address mean we can't use SSL? Do we need a fake domain name? Do we even need SSL if the host is 127.0.0.1?** -Authorization **MUST** be obtained by the Firebolt SDK using an -`rpc-only` authorize method. +Each App that uses the MediaAccess APIs **MUST** be assigned a unique +port number for accessing the http URLs for those files. This allows any +security measures to be opaque to the calling app. + +App containers **MUST** be limited to only access one of the available +Media Access ports. -Authorization **MUST** be short lived, e.g. less than 5 seconds. +The port numbers `1000` to `1999` on the local device **MUST** be reserved +for HTTP Media Access URLs. -To facilitate Authorization, Firebolt **MUST** offer an API to fetch the -file contents. The name of this API should be determined by the target -language of the SDK. +**TODO**: ^^ do these ports make sense? -In the JavaScript SDK, the `MediaFile` schema **MUST** include an -`x-method` property called `fetch` that calls the ECMAScript `fetch` API -with a short-lived authorization token and returns the ECMAScript -`Response` object. See [Response Methods](../openrpc-extensions/response-method.md) -for more info on x-method properties. -In the JavaScript SDK, the `fetch` method **MUST** be called from within -an ECMAScript `Worker`, to avoid slowing down the app. +HTTP URLs for file access **MUST** follow the template: + +``` +https://127.0.0.1:/MediaAccess// +``` -SDKs for other languages **SHOULD** come up with similar optimizations -using appropriate API names. +The `` for `usb` is `USBMassStorage`. + +For example: + +``` +https://127.0.0.1:1001/MediaAccess/USBMassStorage/Volumes/USB-Drive/mp3s/mysong.mp3 +``` ![Diagram Description automatically generated](../../images/specifications/media/access/media/image1.png) - -### 3.5. Core APIs +### 3.4. Core APIs The following APIs are added to the Core SDK. -#### 3.5.1. Volumes +#### 3.4.1. Volumes The `volumes` method can be called in one of four ways. @@ -298,58 +200,44 @@ This method returns a `VolumeProcess` object, synchronously, that contains a single `stop()` method for cancelling the temporal-set session. -#### 3.5.2. Audio, Video, Images, Files +#### 3.4.2. Files These APIs return all the files that match the associated capability, and the Volume query parameter: ```typescript -function audio(volumes?: Volume, files?: MediaFile): -Promise - -function video(volumes?: Volume, files?: MediaFile): -Promise - -function images(volumes?: Volume, files?: MediaFile): -Promise - -function media(volumes?: Volume, files?: MediaFile): -Promise - -function files(volumes?: Volume, files?: MediaFile): -Promise +function files(path: string):Promise ``` -The `volumes` and `files` parameters can be sparsely populated, e.g. -passing in `{ type: "usb" }` to the `audio` method would return -all audio files on any USB drive. - -### 3.6. Schemas +### 3.5. Schemas The following Schemas are used by this API. -#### 3.6.1. MediaFile +#### 3.5.1. MediaFile This is the primary object return by the various APIs. -| Property | Type | Description | -|----------|--------|----------------------------------------------| -| volume | Volume | The Volume the file is stored on | -| uri | string | The full path, including volume, to the file | -| type | string | The mime-type of the file | +| Property | Type | Description | +|----------|---------|----------------------------------------------| +| path | string | The Unix path to the file, starting with the volume, e.g. `/Volumes/USB-Drive/mp3s/mysong.mp3` | +| uri | string | The http URL to request the file contents, e.g. `https://127.0.0.1:1001/MediaAccess/USBMassStorage/Volumes/USB-Drive/mp3s/mysong.mp3` | +| isDir | boolean | Whether the MediaFile is a directory | +| type | string | The mime-type of the file | + +If a file is a directory then `isDir` **MUST** be true. -#### 3.6.2. Volume +#### 3.5.2. Volume This provides information about a Volume, e.g. a Device, that stores MediaFiles. -| Property | Type | Description | -|----------|------------|---------------------------------------------------| -| type | VolumeType | The type of volume, e.g. USB | -| uri | string | The full path to the root of the volume's storage | -| name | string | The display name of the volume | +| Property | Type | Description | +|----------|------------|------------------------------------------------------------------------------| +| type | VolumeType | The type of volume, e.g. USB | +| path | string | The Unix path to the root of the volume's storage, e.g. `/Volumes/USB-Drive` | +| name | string | The display name of the volume, e.g. `My Cool USB Drive" | -#### 3.6.3. VolumeType +#### 3.5.3. VolumeType An enumeration of strings representing possible Volume types: From 37b679459143c2e726ae661b6a21d129195ce8e6 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Thu, 4 Apr 2024 13:31:17 -0400 Subject: [PATCH 10/11] fix: Update HLA diagram --- .../media/access/media/image1.png | Bin 117210 -> 0 bytes .../media/access/media/media-access-hla.png | Bin 0 -> 191318 bytes .../specifications/media/media-access.md | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 requirements/images/specifications/media/access/media/image1.png create mode 100644 requirements/images/specifications/media/access/media/media-access-hla.png diff --git a/requirements/images/specifications/media/access/media/image1.png b/requirements/images/specifications/media/access/media/image1.png deleted file mode 100644 index 9f1e850a10b7dae08f5f0ae5ae154455db4fb1ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117210 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 z 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 X^Kr*^?d9K~O=xSL)hJN2zV?3roKv2+ literal 0 HcmV?d00001 diff --git a/requirements/specifications/media/media-access.md b/requirements/specifications/media/media-access.md index 59b999b23..b1e5a16e5 100644 --- a/requirements/specifications/media/media-access.md +++ b/requirements/specifications/media/media-access.md @@ -150,7 +150,7 @@ https://127.0.0.1:1001/MediaAccess/USBMassStorage/Volumes/USB-Drive/mp3s/mysong. ``` ![Diagram Description automatically -generated](../../images/specifications/media/access/media/image1.png) +generated](../../images/specifications/media/access/media/media-access-hla.png) ### 3.4. Core APIs From 8c6335b0c0787dc5e8e8976a4c4b1c1f30aab34e Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 5 Apr 2024 13:28:48 -0400 Subject: [PATCH 11/11] chore: Updates from review --- .../specifications/media/media-access.md | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/requirements/specifications/media/media-access.md b/requirements/specifications/media/media-access.md index b1e5a16e5..a35a5077e 100644 --- a/requirements/specifications/media/media-access.md +++ b/requirements/specifications/media/media-access.md @@ -74,15 +74,29 @@ Each `MediaFile` includes the full URI, relative to the Volume, so that Apps may present them in a manner that matches the directory structure on the `Volume`, e.g.: +TODO: is this a true root path, or simulated path. + ```json { - "path": "/Volumes/USB-Drive/mp3s/mysong.mp3", - "url": "https://127.0.0.1:1001/MediaAccess/USBMassStorage/Volumes/USB-Drive/mp3s/mysong.mp3", + "name": "mysong.mp3", + "url": "https://127.0.0.1:1001/MediaAccess/USBMassStorage/mnt/USB-Drive/mp3s/mysong.mp3", "isDir": false, "type": "application/mp3" } ``` +Example director: + +```json +{ + "name": "mp3s", + "url": "https://127.0.0.1:1001/MediaAccess/USBMassStorage/mnt/USB-Drive/mp3s/mysong.mp3", + "isDir": true +} + +``` + + Apps **MUST** use the `path` property for display purposes and the `url` property for fetching purposes. This allows the underlying HTTP implementation to change w/out apps breaking. @@ -132,7 +146,7 @@ Media Access ports. The port numbers `1000` to `1999` on the local device **MUST** be reserved for HTTP Media Access URLs. -**TODO**: ^^ do these ports make sense? +**TODO**: ^^ get rid of port logic for now HTTP URLs for file access **MUST** follow the template: @@ -146,7 +160,7 @@ The `` for `usb` is `USBMassStorage`. For example: ``` -https://127.0.0.1:1001/MediaAccess/USBMassStorage/Volumes/USB-Drive/mp3s/mysong.mp3 +https://127.0.0.1:1001/MediaAccess/USBMassStorage/mnt/USB-Drive/mp3s/mysong.mp3 ``` ![Diagram Description automatically @@ -164,7 +178,6 @@ The `volumes` method can be called in one of four ways. function volumes(): Promise ``` - The get the currently cached list of Volumes w/out scanning call the method with just a `query` parameter: @@ -219,10 +232,9 @@ This is the primary object return by the various APIs. | Property | Type | Description | |----------|---------|----------------------------------------------| -| path | string | The Unix path to the file, starting with the volume, e.g. `/Volumes/USB-Drive/mp3s/mysong.mp3` | -| uri | string | The http URL to request the file contents, e.g. `https://127.0.0.1:1001/MediaAccess/USBMassStorage/Volumes/USB-Drive/mp3s/mysong.mp3` | +| name | string | The Unix filename of the file w/out any path or directories | +| uri | string | The http URL to request the file contents, e.g. `https://127.0.0.1:1001/MediaAccess/USBMassStorage/mnt/USB-Drive/mp3s/mysong.mp3` | | isDir | boolean | Whether the MediaFile is a directory | -| type | string | The mime-type of the file | If a file is a directory then `isDir` **MUST** be true. @@ -234,8 +246,8 @@ MediaFiles. | Property | Type | Description | |----------|------------|------------------------------------------------------------------------------| | type | VolumeType | The type of volume, e.g. USB | -| path | string | The Unix path to the root of the volume's storage, e.g. `/Volumes/USB-Drive` | -| name | string | The display name of the volume, e.g. `My Cool USB Drive" | +| path | string | The Unix path to the root of the volume's storage, e.g. `/mnt/USB-Drive` | +| label | string | The display name of the volume, e.g. `My Cool USB Drive` | #### 3.5.3. VolumeType