Browse Source

storage-node-v2: Add parameters to the token request.

- Add storageBucketId and bagId.
Shamil Gadelshin 3 years ago
parent
commit
fcdc34defd

+ 7 - 0
storage-node-v2/src/api-spec/openapi.yaml

@@ -112,10 +112,17 @@ components:
       type: object
       required:
         - dataObjectId
+        - storageBucketId
+        - bagId
       properties:
         dataObjectId:
           type: integer
           format: int64
+        storageBucketId:
+          type: integer
+          format: int64
+        bagId:
+          type: string
     ErrorResponse:
       type: object
       required:

+ 5 - 2
storage-node-v2/src/command-base/ApiCommandBase.ts

@@ -9,13 +9,14 @@ import { ApiPromise } from '@polkadot/api'
 import logger from '../services/logger'
 import ExitCodes from './ExitCodes'
 import { CLIError } from '@oclif/errors'
+import { Input } from '@oclif/parser'
 
 export default abstract class ApiCommandBase extends Command {
   private api: ApiPromise | null = null
 
   static flags = {
     help: flags.help({ char: 'h' }),
-    dev: flags.boolean({ char: 'd', description: 'Use development mode' }),
+    dev: flags.boolean({ char: 'm', description: 'Use development mode' }),
     apiUrl: flags.string({
       char: 'u',
       description:
@@ -50,7 +51,9 @@ export default abstract class ApiCommandBase extends Command {
   }
 
   async init(): Promise<void> {
-    const { flags } = this.parse(ApiCommandBase)
+    // Oclif hack: https://github.com/oclif/oclif/issues/225#issuecomment-490555119
+    /* eslint-disable @typescript-eslint/no-explicit-any */
+    const { flags } = this.parse(<Input<any>>this.constructor)
 
     const apiUrl = flags.apiUrl ?? 'ws://localhost:9944'
 

+ 2 - 2
storage-node-v2/src/commands/server.ts

@@ -16,12 +16,12 @@ export default class Server extends ApiCommandBase {
       description: 'Storage provider worker ID',
     }),
     uploads: flags.string({
-      char: 'u',
+      char: 'd',
       required: true,
       description: 'Data uploading directory.',
     }),
     port: flags.integer({
-      char: 'p',
+      char: 'o',
       required: true,
       description: 'Server port.',
     }),

+ 2 - 0
storage-node-v2/src/services/helpers/auth.ts

@@ -4,6 +4,8 @@ import { signatureVerify } from '@polkadot/util-crypto'
 
 export interface TokenRequest {
   dataObjectId: number
+  storageBucketId: number
+  bagId: string
 }
 
 export function verifyTokenSignature(

+ 2 - 7
storage-node-v2/src/services/webApi/app.ts

@@ -10,7 +10,6 @@ import {
 import { KeyringPair } from '@polkadot/keyring/types'
 import { ApiPromise } from '@polkadot/api'
 import { TokenRequest, verifyTokenSignature } from '../helpers/auth'
-import { createStorageBucket } from '../runtime/extrinsics'
 import { httpLogger } from '../../services/logger'
 
 // TODO: custom errors (including validation errors)
@@ -34,12 +33,6 @@ export async function createApp(
   // TODO: check path
   app.use('/files', express.static(uploadsDir))
 
-  app.get('/test', async function (req, res) {
-    await createStorageBucket(api, account)
-
-    res.send('ok')
-  })
-
   app.use(
     // Set parameters for each request.
     (req: express.Request, res: express.Response, next: NextFunction) => {
@@ -112,6 +105,8 @@ function validateUpload(
     // TODO: token construction
     const sourceTokenRequest: TokenRequest = {
       dataObjectId: parseInt(req.body.dataObjectId),
+      storageBucketId: parseInt(req.body.storageBucketId),
+      bagId: req.body.bagId,
     }
 
     return verifyTokenSignature(sourceTokenRequest, tokenSignature, account)

+ 0 - 1
storage-node-v2/src/services/webApi/controllers/publicApi.ts

@@ -8,7 +8,6 @@ import { parseBagId } from '../../../services/helpers/bagIdParser'
 import fs from 'fs'
 const fsPromises = fs.promises
 
-// TODO: error handling
 interface UploadRequest {
   dataObjectId: number
   storageBucketId: number