mirror of
https://github.com/oceanprotocol-archive/squid-js.git
synced 2024-02-02 15:31:51 +01:00
Use the new Aquarius response type.
This commit is contained in:
parent
9fe42ecf3c
commit
b8fec2d084
@ -21,6 +21,7 @@ before_script:
|
|||||||
- ganache-cli --port 18545 > ganache-cli.log &
|
- ganache-cli --port 18545 > ganache-cli.log &
|
||||||
- git clone https://github.com/oceanprotocol/barge
|
- git clone https://github.com/oceanprotocol/barge
|
||||||
- cd barge
|
- cd barge
|
||||||
|
- export AQUARIUS_VERSION=v0.2.1
|
||||||
- export KEEPER_VERSION=v0.9.0
|
- export KEEPER_VERSION=v0.9.0
|
||||||
- export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260"
|
- export KEEPER_OWNER_ROLE_ADDRESS="0xe2DD09d719Da89e5a3D0F2549c7E24566e947260"
|
||||||
- bash -x start_ocean.sh --latest --no-pleuston --local-spree-node 2>&1 > start_ocean.log &
|
- bash -x start_ocean.sh --latest --no-pleuston --local-spree-node 2>&1 > start_ocean.log &
|
||||||
|
@ -27,13 +27,13 @@ describe("Search Asset", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
it("should be able to search the assets", async () => {
|
it("should be able to search the assets", async () => {
|
||||||
const ddos: DDO[] = await ocean.assets.search(`Test1${testHash}`)
|
const {results: ddos} = await ocean.assets.search(`Test1${testHash}`)
|
||||||
|
|
||||||
assert.isArray(ddos, "A search should return an array")
|
assert.isArray(ddos, "A search should return an array")
|
||||||
|
|
||||||
test1length = ddos.length
|
test1length = ddos.length
|
||||||
test2length = (await ocean.assets.search(`Test2${testHash}`)).length
|
test2length = (await ocean.assets.search(`Test2${testHash}`)).results.length
|
||||||
test3length = (await ocean.assets.search(`Test3${testHash}`)).length
|
test3length = (await ocean.assets.search(`Test3${testHash}`)).results.length
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should regiester some a asset", async () => {
|
it("should regiester some a asset", async () => {
|
||||||
@ -44,19 +44,27 @@ describe("Search Asset", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
it("should search by text and see the increment of DDOs", async () => {
|
it("should search by text and see the increment of DDOs", async () => {
|
||||||
assert.equal((await ocean.assets.search(`Test2${testHash}`)).length - test2length, 2, "Something was wrong searching the assets")
|
assert.equal(
|
||||||
assert.equal((await ocean.assets.search(`Test3${testHash}`)).length - test3length, 1, "Something was wrong searching the assets")
|
(await ocean.assets.search(`Test2${testHash}`)).results.length - test2length,
|
||||||
|
2,
|
||||||
|
"Something was wrong searching the assets",
|
||||||
|
)
|
||||||
|
assert.equal(
|
||||||
|
(await ocean.assets.search(`Test3${testHash}`)).results.length - test3length,
|
||||||
|
1,
|
||||||
|
"Something was wrong searching the assets",
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should return a list of DDOs", async () => {
|
it("should return a list of DDOs", async () => {
|
||||||
const ddos: DDO[] = await ocean.assets.search(`Test1${testHash}`)
|
const {results: ddos} = await ocean.assets.search(`Test1${testHash}`)
|
||||||
|
|
||||||
assert.equal(ddos.length - test1length, 1, "Something was wrong searching the assets")
|
assert.equal(ddos.length - test1length, 1, "Something was wrong searching the assets")
|
||||||
ddos.map((ddo) => assert.instanceOf(ddo, DDO, "The DDO is not an instance of a DDO"))
|
ddos.map((ddo) => assert.instanceOf(ddo, DDO, "The DDO is not an instance of a DDO"))
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should be able to do a query to get a list of DDOs", async () => {
|
it("should be able to do a query to get a list of DDOs", async () => {
|
||||||
const ddos: DDO[] = await ocean.assets.query({
|
const {results: ddos} = await ocean.assets.query({
|
||||||
page: 0,
|
page: 0,
|
||||||
offset: 1,
|
offset: 1,
|
||||||
query: {
|
query: {
|
||||||
|
@ -6,6 +6,13 @@ import { Instantiable, InstantiableConfig } from "../Instantiable.abstract"
|
|||||||
|
|
||||||
const apiPath = "/api/v1/aquarius/assets/ddo"
|
const apiPath = "/api/v1/aquarius/assets/ddo"
|
||||||
|
|
||||||
|
export interface QueryResult {
|
||||||
|
results: DDO[]
|
||||||
|
page: number
|
||||||
|
totalPages: number
|
||||||
|
totalResults: number
|
||||||
|
}
|
||||||
|
|
||||||
export interface SearchQuery {
|
export interface SearchQuery {
|
||||||
text?: string
|
text?: string
|
||||||
offset: number
|
offset: number
|
||||||
@ -53,26 +60,24 @@ export class Aquarius extends Instantiable {
|
|||||||
/**
|
/**
|
||||||
* Search over the DDOs using a query.
|
* Search over the DDOs using a query.
|
||||||
* @param {SearchQuery} query Query to filter the DDOs.
|
* @param {SearchQuery} query Query to filter the DDOs.
|
||||||
* @return {Promise<DDO[]>}
|
* @return {Promise<QueryResult>}
|
||||||
*/
|
*/
|
||||||
public async queryMetadata(query: SearchQuery): Promise<DDO[]> {
|
public async queryMetadata(query: SearchQuery): Promise<QueryResult> {
|
||||||
const result: DDO[] = await WebServiceConnectorProvider.getConnector()
|
const result: QueryResult = await WebServiceConnectorProvider.getConnector()
|
||||||
.post(`${this.url}${apiPath}/query`, JSON.stringify(query))
|
.post(`${this.url}${apiPath}/query`, JSON.stringify(query))
|
||||||
.then((response: any) => {
|
.then((response: any) => {
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
return response.json() as DDO[]
|
return response.json() as DDO[]
|
||||||
}
|
}
|
||||||
this.logger.error("queryMetadata failed:", response.status, response.statusText)
|
this.logger.error("queryMetadata failed:", response.status, response.statusText)
|
||||||
return [] as DDO[]
|
return this.transformResult()
|
||||||
})
|
|
||||||
.then((ddos) => {
|
|
||||||
return ddos.map((ddo): DDO => {
|
|
||||||
return new DDO(ddo as DDO)
|
|
||||||
})
|
})
|
||||||
|
.then((results) => {
|
||||||
|
return this.transformResult(results)
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.logger.error("Error fetching querying metadata: ", error)
|
this.logger.error("Error fetching querying metadata: ", error)
|
||||||
return [] as DDO[]
|
return this.transformResult()
|
||||||
})
|
})
|
||||||
|
|
||||||
return result
|
return result
|
||||||
@ -81,31 +86,29 @@ export class Aquarius extends Instantiable {
|
|||||||
/**
|
/**
|
||||||
* Search over the DDOs using a query.
|
* Search over the DDOs using a query.
|
||||||
* @param {SearchQuery} query Query to filter the DDOs.
|
* @param {SearchQuery} query Query to filter the DDOs.
|
||||||
* @return {Promise<DDO[]>}
|
* @return {Promise<QueryResult>}
|
||||||
*/
|
*/
|
||||||
public async queryMetadataByText(query: SearchQuery): Promise<DDO[]> {
|
public async queryMetadataByText(query: SearchQuery): Promise<QueryResult> {
|
||||||
const fullUrl = new URL(`${this.url}${apiPath}/query`)
|
const fullUrl = new URL(`${this.url}${apiPath}/query`)
|
||||||
fullUrl.searchParams.append("text", query.text)
|
fullUrl.searchParams.append("text", query.text)
|
||||||
fullUrl.searchParams.append("sort", decodeURIComponent(JSON.stringify(query.sort)))
|
fullUrl.searchParams.append("sort", decodeURIComponent(JSON.stringify(query.sort)))
|
||||||
fullUrl.searchParams.append("offset", query.offset.toString())
|
fullUrl.searchParams.append("offset", query.offset.toString())
|
||||||
fullUrl.searchParams.append("page", query.page.toString())
|
fullUrl.searchParams.append("page", query.page.toString())
|
||||||
const result: DDO[] = await WebServiceConnectorProvider.getConnector()
|
const result: QueryResult = await WebServiceConnectorProvider.getConnector()
|
||||||
.get(fullUrl)
|
.get(fullUrl)
|
||||||
.then((response: any) => {
|
.then((response: any) => {
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
return response.json() as DDO[]
|
return response.json() as DDO[]
|
||||||
}
|
}
|
||||||
this.logger.log("queryMetadataByText failed:", response.status, response.statusText)
|
this.logger.log("queryMetadataByText failed:", response.status, response.statusText)
|
||||||
return [] as DDO[]
|
return this.transformResult()
|
||||||
})
|
|
||||||
.then((ddos) => {
|
|
||||||
return ddos.map((ddo): DDO => {
|
|
||||||
return new DDO(ddo as DDO)
|
|
||||||
})
|
})
|
||||||
|
.then((results) => {
|
||||||
|
return this.transformResult(results)
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
this.logger.error("Error fetching querying metadata by text: ", error)
|
this.logger.error("Error fetching querying metadata by text: ", error)
|
||||||
return [] as DDO[]
|
return this.transformResult()
|
||||||
})
|
})
|
||||||
|
|
||||||
return result
|
return result
|
||||||
@ -168,4 +171,16 @@ export class Aquarius extends Instantiable {
|
|||||||
public getServiceEndpoint(did: DID) {
|
public getServiceEndpoint(did: DID) {
|
||||||
return `${this.url}/api/v1/aquarius/assets/metadata/${did.getId()}`
|
return `${this.url}/api/v1/aquarius/assets/metadata/${did.getId()}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private transformResult(
|
||||||
|
{results, page, total_pages, total_results}: any = {result: [], page: 0, total_pages: 0, total_results: 0},
|
||||||
|
): QueryResult {
|
||||||
|
|
||||||
|
return {
|
||||||
|
results: (results || []).map((ddo) => new DDO(ddo as DDO)),
|
||||||
|
page,
|
||||||
|
totalPages: total_pages,
|
||||||
|
totalResults: total_results,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,9 +77,9 @@ export class Brizo extends Instantiable {
|
|||||||
const agreementIdSignature = await this.ocean.utils.signature.signText(agreementId, account.getId())
|
const agreementIdSignature = await this.ocean.utils.signature.signText(agreementId, account.getId())
|
||||||
const filesPromises = files
|
const filesPromises = files
|
||||||
.filter(({}, i) => index === -1 || i === index)
|
.filter(({}, i) => index === -1 || i === index)
|
||||||
.map(async ({index}) => {
|
.map(async ({index: i}) => {
|
||||||
let consumeUrl = serviceEndpoint
|
let consumeUrl = serviceEndpoint
|
||||||
consumeUrl += `?index=${index}`
|
consumeUrl += `?index=${i}`
|
||||||
consumeUrl += `&serviceAgreementId=${agreementId}`
|
consumeUrl += `&serviceAgreementId=${agreementId}`
|
||||||
consumeUrl += `&consumerAddress=${account.getId()}`
|
consumeUrl += `&consumerAddress=${account.getId()}`
|
||||||
consumeUrl += `&signature=${agreementIdSignature}`
|
consumeUrl += `&signature=${agreementIdSignature}`
|
||||||
@ -87,7 +87,7 @@ export class Brizo extends Instantiable {
|
|||||||
try {
|
try {
|
||||||
await this.downloadFile(
|
await this.downloadFile(
|
||||||
consumeUrl,
|
consumeUrl,
|
||||||
`file-${index}`,
|
`file-${i}`,
|
||||||
destination,
|
destination,
|
||||||
)
|
)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -262,7 +262,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
* @param {SearchQuery} query Query to filter the assets.
|
* @param {SearchQuery} query Query to filter the assets.
|
||||||
* @return {Promise<DDO[]>}
|
* @return {Promise<DDO[]>}
|
||||||
*/
|
*/
|
||||||
public async query(query: SearchQuery): Promise<DDO[]> {
|
public async query(query: SearchQuery) {
|
||||||
return this.ocean.aquarius.queryMetadata(query)
|
return this.ocean.aquarius.queryMetadata(query)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -271,7 +271,7 @@ export class OceanAssets extends Instantiable {
|
|||||||
* @param {SearchQuery} text Text to filter the assets.
|
* @param {SearchQuery} text Text to filter the assets.
|
||||||
* @return {Promise<DDO[]>}
|
* @return {Promise<DDO[]>}
|
||||||
*/
|
*/
|
||||||
public async search(text: string): Promise<DDO[]> {
|
public async search(text: string) {
|
||||||
return this.ocean.aquarius.queryMetadataByText({
|
return this.ocean.aquarius.queryMetadataByText({
|
||||||
text,
|
text,
|
||||||
page: 0,
|
page: 0,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as assert from "assert"
|
import { assert } from "chai"
|
||||||
import { Aquarius } from "../../src/aquarius/Aquarius"
|
import { Aquarius } from "../../src/aquarius/Aquarius"
|
||||||
import { SearchQuery } from "../../src/aquarius/Aquarius"
|
import { SearchQuery } from "../../src/aquarius/Aquarius"
|
||||||
import { DDO } from "../../src/ddo/DDO"
|
import { DDO } from "../../src/ddo/DDO"
|
||||||
@ -10,6 +10,9 @@ import WebServiceConnectorMock from "../mocks/WebServiceConnector.mock"
|
|||||||
describe("Aquarius", () => {
|
describe("Aquarius", () => {
|
||||||
|
|
||||||
const aquarius: Aquarius = new Aquarius({config} as any)
|
const aquarius: Aquarius = new Aquarius({config} as any)
|
||||||
|
// tslint:disable-next-line
|
||||||
|
const getResults = (results: DDO[], page = 0, total_pages = 1, total_results = 1) =>
|
||||||
|
({results, page, total_pages, total_results})
|
||||||
|
|
||||||
describe("#queryMetadata()", () => {
|
describe("#queryMetadata()", () => {
|
||||||
|
|
||||||
@ -26,24 +29,26 @@ describe("Aquarius", () => {
|
|||||||
} as SearchQuery
|
} as SearchQuery
|
||||||
|
|
||||||
it("should query metadata", async () => {
|
it("should query metadata", async () => {
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock([new DDO()]))
|
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock(getResults([new DDO()])))
|
||||||
|
|
||||||
const result: DDO[] = await aquarius.queryMetadata(query)
|
const result = await aquarius.queryMetadata(query)
|
||||||
assert(result)
|
assert.typeOf(result.results, "array")
|
||||||
assert(result.length !== null)
|
assert.lengthOf(result.results, 1)
|
||||||
|
assert.equal(result.page, 0)
|
||||||
|
assert.equal(result.totalPages, 1)
|
||||||
|
assert.equal(result.totalResults, 1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should query metadata and return real ddo", async () => {
|
it("should query metadata and return real ddo", async () => {
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock([new DDO()]))
|
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock(getResults([new DDO()])))
|
||||||
|
|
||||||
const result: DDO[] = await aquarius.queryMetadata(query)
|
const result = await aquarius.queryMetadata(query)
|
||||||
|
assert.typeOf(result.results, "array")
|
||||||
assert(result)
|
assert.lengthOf(result.results, 1)
|
||||||
assert(result[0].findServiceById)
|
assert.isDefined(result.results[0].findServiceById)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -64,21 +69,25 @@ describe("Aquarius", () => {
|
|||||||
it("should query metadata by text", async () => {
|
it("should query metadata by text", async () => {
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock([new DDO()]))
|
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock(getResults([new DDO()])))
|
||||||
|
|
||||||
const result: DDO[] = await aquarius.queryMetadataByText(query)
|
const result = await aquarius.queryMetadataByText(query)
|
||||||
assert(result)
|
assert.typeOf(result.results, "array")
|
||||||
assert(result.length !== null)
|
assert.lengthOf(result.results, 1)
|
||||||
|
assert.equal(result.page, 0)
|
||||||
|
assert.equal(result.totalPages, 1)
|
||||||
|
assert.equal(result.totalResults, 1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should query metadata and return real ddo", async () => {
|
it("should query metadata and return real ddo", async () => {
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock([new DDO()]))
|
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock(getResults([new DDO()])))
|
||||||
|
|
||||||
const result: DDO[] = await aquarius.queryMetadataByText(query)
|
const result = await aquarius.queryMetadataByText(query)
|
||||||
assert(result)
|
assert.typeOf(result.results, "array")
|
||||||
assert(result[0].findServiceById)
|
assert.lengthOf(result.results, 1)
|
||||||
|
assert.isDefined(result.results[0].findServiceById)
|
||||||
})
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
@ -59,7 +59,7 @@ describe("Ocean", () => {
|
|||||||
text: "Office",
|
text: "Office",
|
||||||
} as SearchQuery
|
} as SearchQuery
|
||||||
|
|
||||||
const assets: any[] = await ocean.assets.query(query)
|
const assets = await ocean.assets.query(query)
|
||||||
|
|
||||||
assert(assets)
|
assert(assets)
|
||||||
})
|
})
|
||||||
@ -68,7 +68,7 @@ describe("Ocean", () => {
|
|||||||
describe("#searchAssetsByText()", () => {
|
describe("#searchAssetsByText()", () => {
|
||||||
it("should search for assets", async () => {
|
it("should search for assets", async () => {
|
||||||
const text = "office"
|
const text = "office"
|
||||||
const assets: any[] = await ocean.assets.search(text)
|
const assets = await ocean.assets.search(text)
|
||||||
|
|
||||||
assert(assets)
|
assert(assets)
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user