|
@@ -1,13 +1,12 @@
|
|
|
import AccountsCommandBase from '../../command-base/accounts'
|
|
|
import DefaultCommandBase, { flags } from '../../command-base/default'
|
|
|
-import { FilesApi, Configuration, TokenRequest } from '../../services/networking/storage-node/generated'
|
|
|
-import { u8aToHex } from '@polkadot/util'
|
|
|
import FormData from 'form-data'
|
|
|
import imgGen from 'js-image-generator'
|
|
|
import { SubmittableExtrinsic } from '@polkadot/api/types'
|
|
|
import { BagIdParserService } from '../../services/parsers/BagIdParserService'
|
|
|
import axios from 'axios'
|
|
|
import { ContentHash } from '../../services/crypto/ContentHash'
|
|
|
+import urljoin from 'url-join'
|
|
|
|
|
|
async function generateRandomImage(): Promise<Buffer> {
|
|
|
return new Promise((resolve, reject) => {
|
|
@@ -41,18 +40,17 @@ export default class DevBatchUpload extends AccountsCommandBase {
|
|
|
char: 'C',
|
|
|
required: true,
|
|
|
}),
|
|
|
+ endpoint: flags.string({
|
|
|
+ char: 'e',
|
|
|
+ required: true,
|
|
|
+ }),
|
|
|
}
|
|
|
|
|
|
async run(): Promise<void> {
|
|
|
const { api } = this
|
|
|
- const { bagId, bucketId, batchSize, batchesCount } = this.parse(DevBatchUpload).flags
|
|
|
+ const { bagId, bucketId, batchSize, batchesCount, endpoint } = this.parse(DevBatchUpload).flags
|
|
|
const sudoKey = (await api.query.sudo.key()).toHuman()
|
|
|
const dataFee = await api.query.storage.dataObjectPerMegabyteFee()
|
|
|
- const storageApi = new FilesApi(
|
|
|
- new Configuration({
|
|
|
- basePath: 'http://127.0.0.1:3333/api/v1',
|
|
|
- })
|
|
|
- )
|
|
|
|
|
|
for (let i = 0; i < batchesCount; ++i) {
|
|
|
const nextObjectId = (await api.query.storage.nextDataObjectId()).toNumber()
|
|
@@ -85,25 +83,6 @@ export default class DevBatchUpload extends AccountsCommandBase {
|
|
|
await Promise.all(
|
|
|
batch.map(async ([, dataObject], k) => {
|
|
|
const dataObjectId = nextObjectId + k
|
|
|
- const data: TokenRequest['data'] = {
|
|
|
- accountId: sudoKey,
|
|
|
- bagId,
|
|
|
- dataObjectId,
|
|
|
- memberId: 0,
|
|
|
- storageBucketId: bucketId,
|
|
|
- }
|
|
|
- const message = JSON.stringify(data)
|
|
|
- const signature = u8aToHex(this.getPair(sudoKey).sign(message))
|
|
|
- const {
|
|
|
- data: { token },
|
|
|
- } = await storageApi.publicApiAuthTokenForUploading({
|
|
|
- data,
|
|
|
- signature,
|
|
|
- })
|
|
|
- if (!token) {
|
|
|
- throw new Error('Received empty token!')
|
|
|
- }
|
|
|
-
|
|
|
const formData = new FormData()
|
|
|
formData.append('dataObjectId', dataObjectId.toString())
|
|
|
formData.append('storageBucketId', bucketId.toString())
|
|
@@ -113,10 +92,9 @@ export default class DevBatchUpload extends AccountsCommandBase {
|
|
|
try {
|
|
|
await axios({
|
|
|
method: 'POST',
|
|
|
- url: 'http://127.0.0.1:3333/api/v1/files',
|
|
|
+ url: urljoin(endpoint, 'api/v1/files'),
|
|
|
data: formData,
|
|
|
headers: {
|
|
|
- 'x-api-key': token,
|
|
|
'content-type': 'multipart/form-data',
|
|
|
...formData.getHeaders(),
|
|
|
},
|