import { HttpStatusCode } from '@shared/models' ; import { makePostBodyRequest } from '../requests' ; import { AbstractCommand } from '../shared' ; export class ObjectStorageCommand extends AbstractCommand { static readonly DEFAULT_PLAYLIST_BUCKET = 'streaming-playlists' ; static readonly DEFAULT_WEBTORRENT_BUCKET = 'videos' ; static getDefaultConfig ( ) { return { object_storage : { enabled : true , endpoint : 'http://' + this . getEndpointHost ( ) , region : this . getRegion ( ) , credentials : this . getCredentialsConfig ( ) , streaming_playlists : { bucket_name : this . DEFAULT_PLAYLIST_BUCKET } , videos : { bucket_name : this . DEFAULT_WEBTORRENT_BUCKET } } } ; } static getCredentialsConfig ( ) { return { access_key_id : 'AKIAIOSFODNN7EXAMPLE' , secret_access_key : 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' } ; } static getEndpointHost ( ) { return 'localhost:9444' ; } static getRegion ( ) { return 'us-east-1' ; } static getWebTorrentBaseUrl ( ) { return `http://${ this . DEFAULT_WEBTORRENT_BUCKET }.${ this . getEndpointHost ( ) }/` ; } static getPlaylistBaseUrl ( ) { return `http://${ this . DEFAULT_PLAYLIST_BUCKET }.${ this . getEndpointHost ( ) }/` ; } static async prepareDefaultBuckets ( ) { await this . createBucket ( this . DEFAULT_PLAYLIST_BUCKET ) ; await this . createBucket ( this . DEFAULT_WEBTORRENT_BUCKET ) ; } static async createBucket ( name ) { await makePostBodyRequest ( { url : this . getEndpointHost ( ) , path : '/ui/' + name + '?delete' , expectedStatus : HttpStatusCode . TEMPORARY_REDIRECT_307 } ) ; await makePostBodyRequest ( { url : this . getEndpointHost ( ) , path : '/ui/' + name + '?create' , expectedStatus : HttpStatusCode . TEMPORARY_REDIRECT_307 } ) ; await makePostBodyRequest ( { url : this . getEndpointHost ( ) , path : '/ui/' + name + '?make-public' , expectedStatus : HttpStatusCode . TEMPORARY_REDIRECT_307 } ) ; } }