mirror of
https://github.com/oceanprotocol/ocean.js.git
synced 2024-11-26 20:39:05 +01:00
more fixes in provider class
This commit is contained in:
parent
d49832295f
commit
3c0cc81910
@ -54,9 +54,9 @@
|
||||
"cross-fetch": "^3.1.5",
|
||||
"crypto-js": "^4.1.1",
|
||||
"decimal.js": "^10.4.1",
|
||||
"web3": "^1.8.0",
|
||||
"web3-core": "^1.8.0",
|
||||
"web3-eth-contract": "^1.8.0",
|
||||
"web3": "^1.8.0"
|
||||
"web3-eth-contract": "^1.8.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@truffle/hdwallet-provider": "^2.0.14",
|
||||
|
@ -174,32 +174,34 @@ export class Provider {
|
||||
? this.getEndpointURL(serviceEndpoints, 'fileinfo').urlPath
|
||||
: null
|
||||
if (!path) return null
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(path, {
|
||||
response = await fetch(path, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(args),
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
if (response?.ok) {
|
||||
const results: FileInfo[] = await response.json()
|
||||
for (const result of results) {
|
||||
files.push(result)
|
||||
}
|
||||
return files
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'File info call failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(`File info call failed: ${resolvedResponse}`)
|
||||
} catch (e) {
|
||||
LoggerInstance.error('File info call failed: ')
|
||||
LoggerInstance.error(e)
|
||||
throw new Error('HTTP request failed calling Provider')
|
||||
throw new Error(e)
|
||||
}
|
||||
if (response?.ok) {
|
||||
const results: FileInfo[] = await response.json()
|
||||
for (const result of results) {
|
||||
files.push(result)
|
||||
}
|
||||
return files
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'File info call failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(resolvedResponse)
|
||||
}
|
||||
|
||||
/** Get URL details (if possible)
|
||||
@ -224,32 +226,34 @@ export class Provider {
|
||||
? this.getEndpointURL(serviceEndpoints, 'fileinfo').urlPath
|
||||
: null
|
||||
if (!path) return null
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(path, {
|
||||
response = await fetch(path, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(args),
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
if (response?.ok) {
|
||||
const results: FileInfo[] = await response.json()
|
||||
for (const result of results) {
|
||||
files.push(result)
|
||||
}
|
||||
return files
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'File info call failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(`File info call failed: ${resolvedResponse}`)
|
||||
} catch (e) {
|
||||
LoggerInstance.error('File info call failed: ')
|
||||
LoggerInstance.error(e)
|
||||
throw new Error('HTTP request failed calling Provider')
|
||||
throw new Error(e)
|
||||
}
|
||||
if (response?.ok) {
|
||||
const results: FileInfo[] = await response.json()
|
||||
for (const result of results) {
|
||||
files.push(result)
|
||||
}
|
||||
return files
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'File info call failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(resolvedResponse)
|
||||
}
|
||||
|
||||
/** Get Compute Environments
|
||||
@ -266,28 +270,30 @@ export class Provider {
|
||||
)
|
||||
const path = this.getEndpointURL(serviceEndpoints, 'computeEnvironments')?.urlPath
|
||||
if (!path) return null
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(path, {
|
||||
response = await fetch(path, {
|
||||
method: 'GET',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
if (response?.ok) {
|
||||
const envs: ComputeEnvironment[] = await response.json()
|
||||
return envs
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Fetch compute env failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(`Fetch compute env failed: ${resolvedResponse}`)
|
||||
} catch (e) {
|
||||
LoggerInstance.error('Fetch compute env failed: ')
|
||||
LoggerInstance.error(e)
|
||||
throw new Error('HTTP request failed calling Provider')
|
||||
throw new Error(e)
|
||||
}
|
||||
if (response?.ok) {
|
||||
const envs: ComputeEnvironment[] = await response.json()
|
||||
return envs
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Fetch compute env failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(resolvedResponse)
|
||||
}
|
||||
|
||||
/** Initialize a service request.
|
||||
@ -329,29 +335,30 @@ export class Provider {
|
||||
initializeUrl += '&userdata=' + encodeURI(JSON.stringify(userCustomParameters))
|
||||
if (computeEnv) initializeUrl += '&environment=' + encodeURI(computeEnv)
|
||||
if (validUntil) initializeUrl += '&validUntil=' + validUntil
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(initializeUrl, {
|
||||
response = await fetch(initializeUrl, {
|
||||
method: 'GET',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
|
||||
if (response?.ok) {
|
||||
const results: ProviderInitialize = await response.json()
|
||||
return results
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Provider initialized failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(`Provider initialized failed: ${resolvedResponse}`)
|
||||
} catch (e) {
|
||||
LoggerInstance.error('Provider initialized failed: ')
|
||||
LoggerInstance.error(e)
|
||||
throw new Error('Asset URL not found or not available.')
|
||||
}
|
||||
if (response?.ok) {
|
||||
const results: ProviderInitialize = await response.json()
|
||||
return results
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Provider initialized failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(resolvedResponse)
|
||||
}
|
||||
|
||||
/** Initialize a compute request.
|
||||
@ -388,30 +395,32 @@ export class Provider {
|
||||
? this.getEndpointURL(serviceEndpoints, 'initializeCompute').urlPath
|
||||
: null
|
||||
if (!initializeUrl) return null
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(initializeUrl, {
|
||||
response = await fetch(initializeUrl, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(providerData),
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Compute start failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
LoggerInstance.error('Payload was:', providerData)
|
||||
throw new Error(`Compute initialized failed: ${resolvedResponse}`)
|
||||
} catch (e) {
|
||||
LoggerInstance.error('Initialize compute failed: ')
|
||||
LoggerInstance.error(e)
|
||||
throw new Error('ComputeJob cannot be initialized')
|
||||
throw new Error(e)
|
||||
}
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Initialize compute failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
LoggerInstance.error('Payload was:', providerData)
|
||||
throw new Error(resolvedResponse)
|
||||
}
|
||||
|
||||
/** Gets fully signed URL for download
|
||||
@ -508,33 +517,33 @@ export class Provider {
|
||||
if (payload.additionalDatasets) payload.additionalDatasets = additionalDatasets
|
||||
if (output) payload.output = output
|
||||
if (!computeStartUrl) return null
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(computeStartUrl, {
|
||||
response = await fetch(computeStartUrl, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(payload),
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Compute start failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
throw new Error(`Compute start failed: ${resolvedResponse}`)
|
||||
} catch (e) {
|
||||
LoggerInstance.error('Compute start failed:')
|
||||
LoggerInstance.error(e)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
throw new Error('HTTP request failed calling Provider')
|
||||
throw new Error(e)
|
||||
}
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Compute start failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
throw new Error(resolvedResponse)
|
||||
}
|
||||
|
||||
/** Instruct the provider to Stop the execution of a to stop a compute job.
|
||||
@ -587,40 +596,33 @@ export class Provider {
|
||||
if (jobId) payload.jobId = jobId
|
||||
|
||||
if (!computeStopUrl) return null
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(computeStopUrl, {
|
||||
response = await fetch(computeStopUrl, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(payload),
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
LoggerInstance.error('Compute stop failed:', response.status, response.statusText)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Compute start failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
throw new Error(`Compute stop failed: ${resolvedResponse}`)
|
||||
} catch (e) {
|
||||
LoggerInstance.error('Compute stop failed:')
|
||||
LoggerInstance.error(e)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
throw new Error('HTTP request failed calling Provider')
|
||||
throw new Error(e)
|
||||
}
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Compute stop failed: ',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
throw new Error(resolvedResponse)
|
||||
}
|
||||
|
||||
/** Get compute status for a specific jobId/documentId/owner.
|
||||
@ -652,29 +654,30 @@ export class Provider {
|
||||
url += (jobId && `&jobId=${jobId}`) || ''
|
||||
|
||||
if (!computeStatusUrl) return null
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(computeStatusUrl + url, {
|
||||
response = await fetch(computeStatusUrl + url, {
|
||||
method: 'GET',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Get compute status failed:',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(`Compute status call failed: ${resolvedResponse}`)
|
||||
} catch (e) {
|
||||
LoggerInstance.error('Get compute status failed')
|
||||
LoggerInstance.error(e)
|
||||
throw new Error('HTTP request failed calling Provider')
|
||||
throw new Error(e)
|
||||
}
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Get compute status failed:',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
throw new Error(resolvedResponse)
|
||||
}
|
||||
|
||||
/** Get compute result url
|
||||
@ -771,33 +774,33 @@ export class Provider {
|
||||
if (signature) payload.signature = signature
|
||||
|
||||
if (!computeDeleteUrl) return null
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(computeDeleteUrl, {
|
||||
response = await fetch(computeDeleteUrl, {
|
||||
method: 'DELETE',
|
||||
body: JSON.stringify(payload),
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Delete compute job failed:',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
throw new Error(`Delete compute job failed: ${resolvedResponse}`)
|
||||
} catch (e) {
|
||||
LoggerInstance.error('Delete compute job failed:')
|
||||
LoggerInstance.error(e)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
throw new Error('HTTP request failed calling Provider')
|
||||
throw new Error(e)
|
||||
}
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
return params
|
||||
}
|
||||
const resolvedResponse = await response.json()
|
||||
LoggerInstance.error(
|
||||
'Delete compute job failed:',
|
||||
response.status,
|
||||
response.statusText,
|
||||
resolvedResponse
|
||||
)
|
||||
LoggerInstance.error('Payload was:', payload)
|
||||
throw new Error(resolvedResponse)
|
||||
}
|
||||
|
||||
/** Check for a valid provider at URL
|
||||
@ -806,21 +809,22 @@ export class Provider {
|
||||
* @return {Promise<boolean>} string
|
||||
*/
|
||||
public async isValidProvider(url: string, signal?: AbortSignal): Promise<boolean> {
|
||||
let response
|
||||
try {
|
||||
const response = await fetch(url, {
|
||||
response = await fetch(url, {
|
||||
method: 'GET',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
signal
|
||||
})
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
if (params && params.providerAddress) return true
|
||||
}
|
||||
return false
|
||||
} catch (error) {
|
||||
LoggerInstance.error(`Error validating provider: ${error.message}`)
|
||||
return false
|
||||
}
|
||||
if (response?.ok) {
|
||||
const params = await response.json()
|
||||
if (params && params.providerAddress) return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private noZeroX(input: string): string {
|
||||
|
@ -1,3 +1,6 @@
|
||||
export function getErrorMessage(resource: string, message: string): string {
|
||||
export function getErrorMessage(error: string): string {
|
||||
const errorOnj = error.split('_')
|
||||
const resource = errorOnj?.[0]
|
||||
const message = errorOnj?.at(-1)
|
||||
return `${message} has failed for the following component: ${resource}`
|
||||
}
|
||||
|
@ -8,3 +8,4 @@ export * from './Logger'
|
||||
export * from './minAbi'
|
||||
export * from './SignatureUtils'
|
||||
export * from './TokenUtils'
|
||||
export * from './ErrorHandling'
|
||||
|
Loading…
x
Reference in New Issue
Block a user