1
0
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:
Bogdan Fazakas 2022-11-18 12:15:02 +02:00
parent d49832295f
commit 3c0cc81910
4 changed files with 163 additions and 155 deletions

View File

@ -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",

View File

@ -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 {

View File

@ -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}`
}

View File

@ -8,3 +8,4 @@ export * from './Logger'
export * from './minAbi'
export * from './SignatureUtils'
export * from './TokenUtils'
export * from './ErrorHandling'