2 import { HttpStatusCode } from '@shared/models'
3 import { makePostBodyRequest } from '../requests'
4 import { AbstractCommand } from '../shared'
6 export class ObjectStorageCommand extends AbstractCommand {
7 static readonly DEFAULT_PLAYLIST_MOCK_BUCKET = 'streaming-playlists'
8 static readonly DEFAULT_WEBTORRENT_MOCK_BUCKET = 'videos'
10 static readonly DEFAULT_SCALEWAY_BUCKET = 'peertube-ci-test'
12 // ---------------------------------------------------------------------------
14 static getDefaultMockConfig () {
18 endpoint: 'http://' + this.getMockEndpointHost(),
19 region: this.getMockRegion(),
21 credentials: this.getMockCredentialsConfig(),
23 streaming_playlists: {
24 bucket_name: this.DEFAULT_PLAYLIST_MOCK_BUCKET
28 bucket_name: this.DEFAULT_WEBTORRENT_MOCK_BUCKET
34 static getMockCredentialsConfig () {
36 access_key_id: 'AKIAIOSFODNN7EXAMPLE',
37 secret_access_key: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
41 static getMockEndpointHost () {
42 return 'localhost:9444'
45 static getMockRegion () {
49 static getMockWebTorrentBaseUrl () {
50 return `http://${this.DEFAULT_WEBTORRENT_MOCK_BUCKET}.${this.getMockEndpointHost()}/`
53 static getMockPlaylistBaseUrl () {
54 return `http://${this.DEFAULT_PLAYLIST_MOCK_BUCKET}.${this.getMockEndpointHost()}/`
57 static async prepareDefaultMockBuckets () {
58 await this.createMockBucket(this.DEFAULT_PLAYLIST_MOCK_BUCKET)
59 await this.createMockBucket(this.DEFAULT_WEBTORRENT_MOCK_BUCKET)
62 static async createMockBucket (name: string) {
63 await makePostBodyRequest({
64 url: this.getMockEndpointHost(),
65 path: '/ui/' + name + '?delete',
66 expectedStatus: HttpStatusCode.TEMPORARY_REDIRECT_307
69 await makePostBodyRequest({
70 url: this.getMockEndpointHost(),
71 path: '/ui/' + name + '?create',
72 expectedStatus: HttpStatusCode.TEMPORARY_REDIRECT_307
75 await makePostBodyRequest({
76 url: this.getMockEndpointHost(),
77 path: '/ui/' + name + '?make-public',
78 expectedStatus: HttpStatusCode.TEMPORARY_REDIRECT_307
82 // ---------------------------------------------------------------------------
84 static getDefaultScalewayConfig (serverNumber: number) {
88 endpoint: this.getScalewayEndpointHost(),
89 region: this.getScalewayRegion(),
91 credentials: this.getScalewayCredentialsConfig(),
93 streaming_playlists: {
94 bucket_name: this.DEFAULT_SCALEWAY_BUCKET,
95 prefix: `test:server-${serverNumber}-streaming-playlists:`
99 bucket_name: this.DEFAULT_SCALEWAY_BUCKET,
100 prefix: `test:server-${serverNumber}-videos:`
106 static getScalewayCredentialsConfig () {
108 access_key_id: process.env.OBJECT_STORAGE_SCALEWAY_KEY_ID,
109 secret_access_key: process.env.OBJECT_STORAGE_SCALEWAY_ACCESS_KEY
113 static getScalewayEndpointHost () {
114 return 's3.fr-par.scw.cloud'
117 static getScalewayRegion () {
121 static getScalewayBaseUrl () {
122 return `https://${this.DEFAULT_SCALEWAY_BUCKET}.${this.getScalewayEndpointHost()}/`