From 25057945486a3dfe8e6090d6208e9642a0f18e8c Mon Sep 17 00:00:00 2001 From: Will Munn Date: Sat, 19 Mar 2016 11:53:46 +0000 Subject: [PATCH 1/4] Add basket typings --- 7digital-api.d.ts | 71 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 72 insertions(+) create mode 100644 7digital-api.d.ts diff --git a/7digital-api.d.ts b/7digital-api.d.ts new file mode 100644 index 0000000..f90bd21 --- /dev/null +++ b/7digital-api.d.ts @@ -0,0 +1,71 @@ +export namespace Responses { + interface ApiResponse { + status: string; + version: string; + } + interface BasketResponse extends ApiResponse { + basket: Basket; + } + interface AmountDue { + amount: string; + formattedAmount: string; + } + interface Package { + id: string; + } + interface BasketItem { + id: string; + type: string; + itemName: string; + artistName: string; + releaseId: string; + trackId:string; + price: Price; + amountDue: AmountDue; + package: Package; + } + interface Basket { + id: string; + basketItems: Array; + itemCount: string; + amountDue: AmountDue; + } + interface Currency { + _: string; + code: string; + } + interface Price { + value: string; + fomattedPrice: string; + currency: Currency; + } +} + +interface BasketParams { + basketId: string; + country: string; +} + +interface AddItemParams extends BasketParams { + releaseId: string; + trackId: string; + packageId: string; + affiliatePartner: string; +} + +export class Basket { + get: ( + params:BasketParams, + callback: ( + err:Error, basket:Responses.BasketResponse + ) => void + ) => void; + create: (any, callback: ( + err:Error, basket:Responses.BasketResponse + ) => void + ) => void; + addItem: (AddItemParams, callback: ( + err:Error, basket:Responses.BasketResponse + ) => void + ) => void; +} diff --git a/package.json b/package.json index 3ef9f9d..9db1f23 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "verror": "^1.6.0", "xml2js": "~0.4.3" }, + "typings": "./7digital-api.d.ts", "devDependencies": { "async": "^1.5.0", "browserify": "~12.0.1", From 7ddc0c669829d20a2bec5c745fb57cca44a60709 Mon Sep 17 00:00:00 2001 From: Will Munn Date: Sun, 20 Mar 2016 23:53:57 +0000 Subject: [PATCH 2/4] Add skeleton for types --- 7digital-api.d.ts | 549 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 489 insertions(+), 60 deletions(-) diff --git a/7digital-api.d.ts b/7digital-api.d.ts index f90bd21..4a9e91f 100644 --- a/7digital-api.d.ts +++ b/7digital-api.d.ts @@ -1,71 +1,500 @@ export namespace Responses { - interface ApiResponse { - status: string; - version: string; - } - interface BasketResponse extends ApiResponse { - basket: Basket; - } - interface AmountDue { - amount: string; - formattedAmount: string; - } - interface Package { - id: string; - } - interface BasketItem { - id: string; - type: string; - itemName: string; - artistName: string; - releaseId: string; - trackId:string; - price: Price; - amountDue: AmountDue; - package: Package; - } - interface Basket { - id: string; - basketItems: Array; - itemCount: string; - amountDue: AmountDue; - } - interface Currency { - _: string; - code: string; - } - interface Price { - value: string; - fomattedPrice: string; - currency: Currency; - } + interface ApiResponse { + status: string; + version: string; + } + interface BasketResponse extends ApiResponse { + basket: Basket; + } + interface AmountDue { + amount: string; + formattedAmount: string; + } + interface Package { + id: string; + } + interface BasketItem { + id: string; + type: string; + itemName: string; + artistName: string; + releaseId: string; + trackId:string; + price: Price; + amountDue: AmountDue; + package: Package; + } + interface Basket { + id: string; + basketItems: Array; + itemCount: string; + amountDue: AmountDue; + } + interface Currency { + _: string; + code: string; + } + interface Price { + value: string; + fomattedPrice: string; + currency: Currency; + } } interface BasketParams { - basketId: string; - country: string; + basketId: string; + country: string; } interface AddItemParams extends BasketParams { - releaseId: string; - trackId: string; - packageId: string; - affiliatePartner: string; + releaseId: string; + trackId: string; + packageId: string; + affiliatePartner: string; } export class Basket { - get: ( - params:BasketParams, - callback: ( - err:Error, basket:Responses.BasketResponse - ) => void - ) => void; - create: (any, callback: ( - err:Error, basket:Responses.BasketResponse - ) => void - ) => void; - addItem: (AddItemParams, callback: ( - err:Error, basket:Responses.BasketResponse - ) => void - ) => void; + get: ( + params:BasketParams, + callback: ( + err:Error, basket:Responses.BasketResponse + ) => void + ) => void; + create: (any, callback: ( + err:Error, basket:Responses.BasketResponse + ) => void + ) => void; + addItem: (AddItemParams, callback: ( + err:Error, basket:Responses.BasketResponse + ) => void + ) => void; + removeItem: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + applyVoucher: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + addPricedItem: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getPayPalUrl: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + completePayPalPurchase: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; } +export class Releases { + getByDate: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getDetails: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getEditorial: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getChart: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getRecommendations: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + search: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getTracks: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getTags: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + matchById: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getNewByTags: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getTopByTags: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class Artists { + browse: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getChart: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getDetails: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getReleases: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getSimilar: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + search: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getTopTracks: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getTags: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + matchById: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getTopByTags: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class Tracks { + getChart: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getDetails: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + search: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + matchById: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class Tags { + all: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + + +export class User { + getLocker: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + purchaseItem: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + purchaseRrpItem: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + purchaseBasket: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + purchasePricedItem: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + listCards: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + selectCard: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + deleteCard: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + registerCard: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getCardRegistration: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + deliverItem: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + signup: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + create: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getDetails: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + authenticate: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class Users { + find: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + update: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class Territories { + getCountries: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class Translations { + get: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class IpLookup { + getCountryForIp: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class Editorial { + getList: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class Catalogue { + getArtistIdByUrl: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getReleaseIdByUrl: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + +export class Payment { + getCardTypes: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; + getVoucherDetails: ( + params: any, + callback: ( + err:Error, + response:any + ) => void + ) => void; +} + From 4d45cd5021d210a651c597e33c534e5ea4730456 Mon Sep 17 00:00:00 2001 From: Will Munn Date: Mon, 21 Mar 2016 23:40:38 +0000 Subject: [PATCH 3/4] Add release type --- 7digital-api.d.ts | 141 +++++++++++++++++++++++++++++++++------------- 1 file changed, 102 insertions(+), 39 deletions(-) diff --git a/7digital-api.d.ts b/7digital-api.d.ts index 4a9e91f..e01e791 100644 --- a/7digital-api.d.ts +++ b/7digital-api.d.ts @@ -3,41 +3,105 @@ export namespace Responses { status: string; version: string; } - interface BasketResponse extends ApiResponse { - basket: Basket; + namespace Release { + interface ReleaseResponse extends ApiResponse { + release: Release + } + interface ReleasePrice { + currencyCode: string; + sevendigitalPrice: string; + recommendedRetailPrice: string; + } + interface Artist { + id: string; + name: string; + appearsAs: string; + slug: string; + image: string; + isPlaceholderImage: string; + } + interface Release { + id: string; + title: string; + barcode: string; + year: string; + explicitContent: string; + slug: string; + artist: Artist; + image: string; + label: Label; + licensor: Licensor; + popularity: string; + duration: string; + trackCount: string; + download: Download; + } + interface Format { + id: string; + description: string; + } + interface Formats { + format: Array; + } + interface Package { + id: string; + description: string; + price: ReleasePrice; + formats: Formats; + } + interface Packages { + package: Array; + } + interface Download { + releaseDate: string; + packages: Packages; + } + interface Label { + id: string; + name: string; + } + interface Licensor { + id: string; + name: string; + } } - interface AmountDue { - amount: string; - formattedAmount: string; - } - interface Package { - id: string; - } - interface BasketItem { - id: string; - type: string; - itemName: string; - artistName: string; - releaseId: string; - trackId:string; - price: Price; - amountDue: AmountDue; - package: Package; - } - interface Basket { - id: string; - basketItems: Array; - itemCount: string; - amountDue: AmountDue; - } - interface Currency { - _: string; - code: string; - } - interface Price { - value: string; - fomattedPrice: string; - currency: Currency; + namespace Basket { + interface BasketResponse extends ApiResponse { + basket: Basket; + } + interface AmountDue { + amount: string; + formattedAmount: string; + } + interface Package { + id: string; + } + interface BasketItem { + id: string; + type: string; + itemName: string; + artistName: string; + releaseId: string; + trackId:string; + price: Price; + amountDue: AmountDue; + package: Package; + } + interface Basket { + id: string; + basketItems: Array; + itemCount: string; + amountDue: AmountDue; + } + interface Currency { + _: string; + code: string; + } + interface Price { + value: string; + fomattedPrice: string; + currency: Currency; + } } } @@ -57,15 +121,15 @@ export class Basket { get: ( params:BasketParams, callback: ( - err:Error, basket:Responses.BasketResponse + err:Error, basket:Responses.Basket.BasketResponse ) => void ) => void; create: (any, callback: ( - err:Error, basket:Responses.BasketResponse + err:Error, basket:Responses.Basket.BasketResponse ) => void ) => void; addItem: (AddItemParams, callback: ( - err:Error, basket:Responses.BasketResponse + err:Error, basket:Responses.Basket.BasketResponse ) => void ) => void; removeItem: ( @@ -116,7 +180,7 @@ export class Releases { params: any, callback: ( err:Error, - response:any + response:Responses.Release.ReleaseResponse ) => void ) => void; getEditorial: ( @@ -497,4 +561,3 @@ export class Payment { ) => void ) => void; } - From a9fd08966ffe0ca1a3997f6f11610a794491b35b Mon Sep 17 00:00:00 2001 From: Will Munn Date: Tue, 22 Mar 2016 08:53:10 +0000 Subject: [PATCH 4/4] Pluralize namespaces --- 7digital-api.d.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/7digital-api.d.ts b/7digital-api.d.ts index e01e791..7f197ca 100644 --- a/7digital-api.d.ts +++ b/7digital-api.d.ts @@ -3,7 +3,7 @@ export namespace Responses { status: string; version: string; } - namespace Release { + namespace Releases { interface ReleaseResponse extends ApiResponse { release: Release } @@ -65,7 +65,7 @@ export namespace Responses { name: string; } } - namespace Basket { + namespace Baskets { interface BasketResponse extends ApiResponse { basket: Basket; } @@ -121,15 +121,15 @@ export class Basket { get: ( params:BasketParams, callback: ( - err:Error, basket:Responses.Basket.BasketResponse + err:Error, basket:Responses.Baskets.BasketResponse ) => void ) => void; create: (any, callback: ( - err:Error, basket:Responses.Basket.BasketResponse + err:Error, basket:Responses.Baskets.BasketResponse ) => void ) => void; addItem: (AddItemParams, callback: ( - err:Error, basket:Responses.Basket.BasketResponse + err:Error, basket:Responses.Baskets.BasketResponse ) => void ) => void; removeItem: ( @@ -180,7 +180,7 @@ export class Releases { params: any, callback: ( err:Error, - response:Responses.Release.ReleaseResponse + response:Responses.Releases.ReleaseResponse ) => void ) => void; getEditorial: (