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:
commit
a4c3321db3
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user