diff --git a/src/index.ts b/src/index.ts index d8555d2c..3e0406e7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,6 +7,7 @@ import Me from "./model/Me"; import { OrganizationSubscriptionGetParams } from "./model/OrganizationSubscription"; import ProjectAccess from "./model/ProjectAccess"; import { APIObject } from "./model/Ressource"; +import SshKey from "./model/SshKey"; import { TicketQueryParams } from "./model/Ticket"; export const models = entities; @@ -365,10 +366,12 @@ export default class Client { * * @return Result */ - addSshKey(value: string, title: string) { + async addSshKey(value: string, title: string): Promise { const values = this.cleanRequest({ value, title }); - return new entities.SshKey(values).save(); + const result = await new entities.SshKey(values).save(); + + return result.getEntity(); } /** @@ -504,7 +507,7 @@ export default class Client { * @return OrganizationSubscriptions[] */ getOrganizationSubscriptions(organizationId: string, params: OrganizationSubscriptionGetParams) { - return entities.OrganizationSubscription.query({ + return entities.OrganizationSubscription.queryCursoredResult({ ...params, organizationId, }); @@ -719,7 +722,7 @@ export default class Client { * @return CursoredResult */ getOrganizationRegions(organizationId: string, params: object) { - return entities.OrganizationRegion.query({ organizationId, ...params }); + return entities.OrganizationRegion.queryCursoredResult({ organizationId, ...params }); } /** @@ -940,7 +943,7 @@ export default class Client { * @return Promise */ getOrganizationPaymentSourcesAllowed(organizationId: string) { - return entities.OrganizationPaymentSource.getAllowed(organizationId); + return entities.OrganizationPaymentSource.getAllowed({ organizationId }); } /** @@ -958,7 +961,7 @@ export default class Client { * @return Promise: { client_secret, public_key } */ createOrganizationPaymentSourceIntent(organizationId: string) { - return entities.OrganizationPaymentSource.intent(organizationId); + return entities.OrganizationPaymentSource.intent({ organizationId }); } /** diff --git a/src/model/ApiToken.ts b/src/model/ApiToken.ts index 0e6926f1..c0f5928e 100644 --- a/src/model/ApiToken.ts +++ b/src/model/ApiToken.ts @@ -69,14 +69,6 @@ export default class ApiToken extends Ressource { paramDefaults ); } - - // @ts-ignore - // @deprecated use deleteWithParams instead - delete(params: APITokenQueryParams) { - const url = `${_urlParser(this._queryUrl, { ...params })}/${this.id}`; - - return super.delete(url); - } deleteWithParams(params: APITokenQueryParams) { const url = `${_urlParser(this._queryUrl, { ...params })}/${this.id}`; diff --git a/src/model/Me.ts b/src/model/Me.ts index 625f4dcd..eeff2e1b 100644 --- a/src/model/Me.ts +++ b/src/model/Me.ts @@ -1,5 +1,4 @@ -import User from "./User"; -import { APIObject } from "./Ressource"; +import Ressource, { APIObject } from "./Ressource"; import { getConfig } from "../config"; import Organization from "./Organization"; import Project from "./Project"; @@ -21,9 +20,14 @@ const modifiableField = [ "ssh_keys" ]; -// @ts-ignore -// TODO: fix the get method inheritance error -export default class Me extends User { +export default class Me extends Ressource { + id: string; + created_at: string; + updated_at: string; + has_key: boolean; + display_name: string; + email: string; + username: string; projects: Array; ssh_keys: Array; roles: Array; @@ -40,8 +44,15 @@ export default class Me extends User { constructor(account: APIObject) { const { api_url } = getConfig(); - super(account, `${api_url}${url}`, modifiableField); + super(`${api_url}${url}`, {}, {}, account, [], modifiableField); + this.id = ""; + this.created_at = ""; + this.updated_at = ""; + this.has_key = false; + this.display_name = ""; + this.email = ""; + this.username = ""; this.projects = []; this.ssh_keys = []; this.roles = []; diff --git a/src/model/OrganizationOrder.ts b/src/model/OrganizationOrder.ts index 922989ea..4cf7c13f 100644 --- a/src/model/OrganizationOrder.ts +++ b/src/model/OrganizationOrder.ts @@ -16,10 +16,8 @@ export interface OrganizationOrderQueryParams { [key: string]: any; }; -// @ts-ignore -// TODO: solve the get and query function inheritance ts error export default class OrganizationOrder extends Order { - static get(params: OrganizationOrderGetParams, customUrl?: string) { + static get(params: OrganizationOrderGetParams, customUrl?: string): Promise { const { organizationId, id, ...queryParams } = params; const { api_url } = getConfig(); @@ -29,10 +27,10 @@ export default class OrganizationOrder extends Order { { organizationId, id }, {}, queryParams - ); + ) as Promise; } - static query(params: OrganizationOrderQueryParams) { + static query(params: OrganizationOrderQueryParams): Promise { const { organizationId, ...queryParams } = params; const { api_url } = getConfig(); @@ -43,6 +41,6 @@ export default class OrganizationOrder extends Order { {}, queryParams, data => (data as CursoredResult).items - ); + ) as Promise; } } diff --git a/src/model/OrganizationPaymentSource.ts b/src/model/OrganizationPaymentSource.ts index 15badb15..6b71f56e 100644 --- a/src/model/OrganizationPaymentSource.ts +++ b/src/model/OrganizationPaymentSource.ts @@ -12,8 +12,6 @@ export interface OrganizationPaymentSourceParams { [key: string]: any; }; -// @ts-ignore -// TODO: solve the getAllowed and intent function inheritance ts error export default class OrganizationPaymentSource extends PaymentSource { constructor(paymentSource: APIObject, customUrl?: string) { const { api_url } = getConfig(); @@ -60,13 +58,11 @@ export default class OrganizationPaymentSource extends PaymentSource { * * @return object */ - static getAllowed(organizationId: string) { + static getAllowed(params: OrganizationPaymentSourceParams) { const { api_url } = getConfig(); const parsedUrl = _urlParser( `${api_url}${url}`, - { - organizationId - }, + params, {} ); return request(`${parsedUrl}/allowed`, "GET"); @@ -77,13 +73,11 @@ export default class OrganizationPaymentSource extends PaymentSource { * * @return object */ - static intent(organizationId: string) { + static intent(params: OrganizationPaymentSourceParams) { const { api_url } = getConfig(); const parsedUrl = _urlParser( `${api_url}${url}`, - { - organizationId - }, + params, {} ); return request(`${parsedUrl}/intent`, "POST"); diff --git a/src/model/OrganizationRegion.ts b/src/model/OrganizationRegion.ts index 9ecc5405..1deb8eca 100644 --- a/src/model/OrganizationRegion.ts +++ b/src/model/OrganizationRegion.ts @@ -1,5 +1,6 @@ import Region from "./Region"; import CursoredRessource from "./CursoredRessource"; +import CursoredResult from "./CursoredResult"; import { getConfig } from "../config"; const url = "/organizations/:organizationId/regions/:id"; @@ -9,10 +10,8 @@ export interface OrganizationRegionQueryParams { [key: string]: any; }; -// @ts-ignore -// TODO: solve the query function inheritance ts error export default class OrganizationRegion extends Region { - static query(params: OrganizationRegionQueryParams) { + static queryCursoredResult(params: OrganizationRegionQueryParams) { const { organizationId, ...queryParams } = params; const { api_url } = getConfig(); diff --git a/src/model/OrganizationSubscription.ts b/src/model/OrganizationSubscription.ts index 0065bdd4..c3e4493d 100644 --- a/src/model/OrganizationSubscription.ts +++ b/src/model/OrganizationSubscription.ts @@ -17,8 +17,6 @@ export interface OrganizationSubscriptionQueryParams { [key: string]: any; }; -// @ts-ignore -// TODO: solve the get and query function inheritance ts error export default class OrganizationSubscription extends Subscription { organization_id: string; @@ -49,10 +47,10 @@ export default class OrganizationSubscription extends Subscription { { organizationId, id }, {}, queryParams - ); + ) as Promise; } - static query(params: OrganizationSubscriptionQueryParams) { + static queryCursoredResult(params: OrganizationSubscriptionQueryParams) { const { organizationId, ...queryParams } = params; const { api_url } = getConfig(); diff --git a/src/model/PaymentSource.ts b/src/model/PaymentSource.ts index 9eb9d689..4df06752 100644 --- a/src/model/PaymentSource.ts +++ b/src/model/PaymentSource.ts @@ -7,6 +7,14 @@ const url = "/platform/payment_source"; const paramDefaults = {}; const creatableField = ["type", "token", "email"]; +export interface PaymentSourceAllowedParams { + [key: string]: any; +}; + +export interface PaymentSourceIntentParams { + [key: string]: any; +}; + export default class PaymentSource extends Ressource { id: string; type: string; @@ -79,9 +87,9 @@ export default class PaymentSource extends Ressource { * * @return object */ - static getAllowed() { + static getAllowed(params?: PaymentSourceAllowedParams) { const { api_url } = getConfig(); - return request(`${api_url}${url}/allowed`, "GET"); + return request(`${api_url}${url}/allowed`, "GET", params); } /** @@ -89,9 +97,9 @@ export default class PaymentSource extends Ressource { * * @return object */ - static intent() { + static intent(params?: PaymentSourceIntentParams) { const { api_url } = getConfig(); - return request(`${api_url}${url}/intent`, "POST"); + return request(`${api_url}${url}/intent`, "POST", params); } /** diff --git a/src/model/SshKey.ts b/src/model/SshKey.ts index 11069c59..de002c06 100644 --- a/src/model/SshKey.ts +++ b/src/model/SshKey.ts @@ -45,18 +45,6 @@ export default class SshKey extends Ressource { return super._get(`${api_url}${url}`, { id }, paramDefaults, queryParams); } - /** - * Override Ressource.save() so that it returns an SshKey and not a Result. - * - * @return object - */ - // @ts-ignore - // TODO: fix inheritance error - async save() { - let sshKey = await super.save(); - return new SshKey(sshKey.data); - } - /** * Override Ressource.getLink() so that it returns an SshKey and not a Result. * diff --git a/test/OrganizationSubscription.spec.js b/test/OrganizationSubscription.spec.js index 5b4b248c..de82caf2 100644 --- a/test/OrganizationSubscription.spec.js +++ b/test/OrganizationSubscription.spec.js @@ -87,18 +87,18 @@ describe("OrganizationSubscription", () => { } ] }); - OrganizationSubscription.query({ organizationId: "aliceOrg" }).then( - subscriptions => { - assert.equal(subscriptions.items.length, 1); - assert.equal(subscriptions.items[0].project_region, "region"); - assert.equal(subscriptions.items[0].project_id, "projectId"); - assert.equal( - subscriptions.items[0].constructor.name, - "OrganizationSubscription" - ); - done(); - } - ); + OrganizationSubscription.queryCursoredResult({ + organizationId: "aliceOrg" + }).then(subscriptions => { + assert.equal(subscriptions.items.length, 1); + assert.equal(subscriptions.items[0].project_region, "region"); + assert.equal(subscriptions.items[0].project_id, "projectId"); + assert.equal( + subscriptions.items[0].constructor.name, + "OrganizationSubscription" + ); + done(); + }); }); it("Get organization subscriptions with filters", done => { @@ -112,7 +112,7 @@ describe("OrganizationSubscription", () => { ] } ); - OrganizationSubscription.query({ + OrganizationSubscription.queryCursoredResult({ organizationId: "aliceOrg", filter: { status: {