1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

Merge pull request #1560 from oceanprotocol/issue-1557-add-aquarius-getassetmetadata-and-querysearch-functions

Issue-#1557: Add Aquarius.getAssetMetadata() and Aquarius.querySearch() functions
This commit is contained in:
Miquel A. Cabot 2022-07-22 11:52:09 +02:00 committed by GitHub
commit a4c3321db3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,30 @@
import { LoggerInstance, sleep } from '../utils'
import { Asset, DDO, ValidateMetadata } from '../@types/'
import fetch from 'cross-fetch'
export interface SearchQuery {
from?: number
size?: number
query: {
match?: {
[property: string]:
| string
| number
| boolean
| Record<string, string | number | boolean>
}
// eslint-disable-next-line camelcase
query_string?: {
[property: string]: string | number | string[] | number[] | boolean
}
// eslint-disable-next-line camelcase
simple_query_string?: {
[property: string]: string | number | string[] | number[] | boolean
}
}
sort?: { [jsonPath: string]: string }
}
export class Aquarius {
public aquariusURL
/**
@ -121,6 +145,67 @@ export class Aquarius {
}
return status
}
/**
* Search over the DDOs using a query.
* @param {string} did DID of the asset
* @param {AbortSignal} signal abort signal
* @return {Promise<QueryResult>}
*/
public async getAssetMetadata(did: string, signal?: AbortSignal): Promise<any> {
const path = this.aquariusURL + '/api/aquarius/assets/metadata/' + did
try {
const response = await fetch(path, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
signal: signal
})
if (response.ok) {
return response.json()
} else {
throw new Error(
'getAssetMetadata failed: ' + response.status + response.statusText
)
}
} catch (error) {
LoggerInstance.error('Error getting metadata: ', error)
throw new Error('Error getting metadata: ' + error)
}
}
/**
* Search over the DDOs using a query.
* @param {SearchQuery} query Query to filter the DDOs.
* @param {AbortSignal} signal abort signal
* @return {Promise<QueryResult>}
*/
public async querySearch(query: SearchQuery, signal?: AbortSignal): Promise<any> {
const path = this.aquariusURL + '/api/aquarius/assets/query'
try {
const response = await fetch(path, {
method: 'POST',
body: JSON.stringify(query),
headers: {
'Content-Type': 'application/json'
},
signal: signal
})
if (response.ok) {
return response.json()
} else {
throw new Error('querySearch failed: ' + response.status + response.statusText)
}
} catch (error) {
LoggerInstance.error('Error querying metadata: ', error)
throw new Error('Error querying metadata: ' + error)
}
}
}
export default Aquarius