Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/@types/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ import {
FtpFileObject,
IpfsFileObject,
UrlFileObject,
BaseFileObject
BaseFileObject,
S3FileObject
} from './fileObject'

export interface Command {
Expand Down Expand Up @@ -69,7 +70,7 @@ export interface FileInfoCommand extends Command {
did?: string
serviceId?: string
fileIndex?: number
file?: UrlFileObject | ArweaveFileObject | IpfsFileObject | FtpFileObject
file?: UrlFileObject | ArweaveFileObject | IpfsFileObject | FtpFileObject | S3FileObject
checksum?: boolean
}
// group these 2
Expand Down
1 change: 1 addition & 0 deletions src/@types/fileObject.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,5 @@ export interface FileInfoHttpRequest {
url?: string
transactionId?: string
serviceId?: string
s3Access?: S3Object
}
22 changes: 20 additions & 2 deletions src/components/httpRoutes/fileInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import {
FileObjectType,
FtpFileObject,
IpfsFileObject,
UrlFileObject
UrlFileObject,
S3FileObject
} from '../../@types/fileObject.js'
import { PROTOCOL_COMMANDS, SERVICES_API_BASE_PATH } from '../../utils/constants.js'
import { FileInfoHandler } from '../core/handler/fileInfoHandler.js'
Expand All @@ -29,6 +30,7 @@ const validateFileInfoRequest = (req: FileInfoHttpRequest): boolean => {
if (req.type === 'url' && !req.url) return false // 'url' is required if 'type' is 'url'
if (req.type === 'ftp' && !req.url) return false // 'url' is required if 'type' is 'ftp'
if (req.type === 'arweave' && !req.transactionId) return false // 'transactionId' is required if 'type' is 'arweave'
if (req.type === 's3' && !req.s3Access) return false // 's3Access' is required if 'type' is 's3'
if (!req.type && !req.serviceId) return false // 'serviceId' is required if 'type' is not provided

return true
Expand All @@ -48,7 +50,12 @@ fileInfoRoute.post(

try {
// Retrieve the file info
let fileObject: UrlFileObject | IpfsFileObject | ArweaveFileObject | FtpFileObject
let fileObject:
| UrlFileObject
| IpfsFileObject
| ArweaveFileObject
| FtpFileObject
| S3FileObject
let fileInfoTask: FileInfoCommand

if (fileInfoReq.did && fileInfoReq.serviceId) {
Expand Down Expand Up @@ -105,6 +112,17 @@ fileInfoRoute.post(
type: FileObjectType.FTP,
caller: req.caller
}
} else if (fileInfoReq.type === 's3' && fileInfoReq.s3Access) {
fileObject = {
type: 's3',
s3Access: fileInfoReq.s3Access
} as S3FileObject
fileInfoTask = {
command: PROTOCOL_COMMANDS.FILE_INFO,
file: fileObject,
type: FileObjectType.S3,
caller: req.caller
}
}
const response = await new FileInfoHandler(req.oceanNode).handle(fileInfoTask)
if (response.stream) {
Expand Down
Loading