snaptrade-typescript-sdk 2.4.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.konfig/generate-id.txt +1 -1
- package/.konfigignore +3 -1
- package/README.md +107 -23
- package/api/account-information-api.ts +1075 -0
- package/api/api-disclaimer-api.ts +190 -0
- package/api/api-status-api.ts +128 -0
- package/api/authentication-api.ts +591 -0
- package/api/connections-api.ts +425 -0
- package/api/error-logs-api.ts +175 -0
- package/api/options-api.ts +758 -0
- package/api/portfolio-management-api.ts +3402 -0
- package/api/reference-data-api.ts +1076 -0
- package/api/trading-api.ts +1339 -0
- package/api/transactions-and-reporting-api.ts +391 -0
- package/api.ts +12 -11530
- package/base.ts +1 -2
- package/client.ts +55 -0
- package/common.ts +16 -54
- package/configuration.ts +33 -10
- package/dist/api/account-information-api.d.ts +525 -0
- package/dist/api/account-information-api.js +1049 -0
- package/dist/api/api-disclaimer-api.d.ts +102 -0
- package/dist/api/api-disclaimer-api.js +245 -0
- package/dist/api/api-status-api.d.ts +70 -0
- package/dist/api/api-status-api.js +203 -0
- package/dist/api/authentication-api.d.ts +280 -0
- package/dist/api/authentication-api.js +659 -0
- package/dist/api/connections-api.d.ts +214 -0
- package/dist/api/connections-api.js +470 -0
- package/dist/api/error-logs-api.d.ts +94 -0
- package/dist/api/error-logs-api.js +240 -0
- package/dist/api/options-api.d.ts +381 -0
- package/dist/api/options-api.js +728 -0
- package/dist/api/portfolio-management-api.d.ts +1624 -0
- package/dist/api/portfolio-management-api.js +3574 -0
- package/dist/api/reference-data-api.d.ts +481 -0
- package/dist/api/reference-data-api.js +1244 -0
- package/dist/api/trading-api.d.ts +662 -0
- package/dist/api/trading-api.js +1276 -0
- package/dist/api/transactions-and-reporting-api.d.ts +204 -0
- package/dist/api/transactions-and-reporting-api.js +387 -0
- package/dist/api.d.ts +12 -7363
- package/dist/api.js +24 -9175
- package/dist/base.d.ts +1 -1
- package/dist/base.js +1 -2
- package/dist/client.d.ts +27 -0
- package/dist/client.js +34 -0
- package/dist/common.d.ts +1 -6
- package/dist/common.js +26 -81
- package/dist/configuration.d.ts +21 -6
- package/dist/configuration.js +13 -8
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -2
- package/dist/index.test.js +84 -14
- package/dist/jest.config.js +0 -1
- package/dist/models/account-holdings.d.ts +47 -0
- package/dist/models/account-holdings.js +15 -0
- package/dist/models/account-order-record-status.d.ts +39 -0
- package/dist/models/account-order-record-status.js +43 -0
- package/dist/models/account-order-record.d.ts +126 -0
- package/dist/models/account-order-record.js +15 -0
- package/dist/models/account-simple.d.ts +37 -0
- package/dist/models/account-simple.js +15 -0
- package/dist/models/account.d.ts +76 -0
- package/dist/models/account.js +15 -0
- package/dist/models/action.d.ts +21 -0
- package/dist/models/action.js +25 -0
- package/dist/models/apidisclaimer-accept-request.d.ts +24 -0
- package/dist/models/apidisclaimer-accept-request.js +15 -0
- package/dist/models/authentication-login-snap-trade-user200-response.d.ts +18 -0
- package/dist/models/authentication-login-snap-trade-user200-response.js +15 -0
- package/dist/models/balance.d.ts +32 -0
- package/dist/models/balance.js +15 -0
- package/dist/models/brokerage-authorization-type-read-only-brokerage.d.ts +37 -0
- package/dist/models/brokerage-authorization-type-read-only-brokerage.js +15 -0
- package/dist/models/brokerage-authorization-type-read-only.d.ts +56 -0
- package/dist/models/brokerage-authorization-type-read-only.js +26 -0
- package/dist/models/brokerage-authorization-type.d.ts +30 -0
- package/dist/models/brokerage-authorization-type.js +20 -0
- package/dist/models/brokerage-authorization.d.ts +76 -0
- package/dist/models/brokerage-authorization.js +15 -0
- package/dist/models/brokerage-symbol.d.ts +51 -0
- package/dist/models/brokerage-symbol.js +15 -0
- package/dist/models/brokerage-type.d.ts +31 -0
- package/dist/models/brokerage-type.js +15 -0
- package/dist/models/brokerage.d.ts +128 -0
- package/dist/models/brokerage.js +15 -0
- package/dist/models/calculated-trade.d.ts +32 -0
- package/dist/models/calculated-trade.js +15 -0
- package/dist/models/cash-restriction.d.ts +54 -0
- package/dist/models/cash-restriction.js +20 -0
- package/dist/models/currency.d.ts +37 -0
- package/dist/models/currency.js +15 -0
- package/dist/models/delete-user-response.d.ts +31 -0
- package/dist/models/delete-user-response.js +15 -0
- package/dist/models/dividend-at-date.d.ts +37 -0
- package/dist/models/dividend-at-date.js +15 -0
- package/dist/models/encrypted-response-encrypted-message-data.d.ts +37 -0
- package/dist/models/encrypted-response-encrypted-message-data.js +15 -0
- package/dist/models/encrypted-response.d.ts +31 -0
- package/dist/models/encrypted-response.js +15 -0
- package/dist/models/exchange-rate-pairs.d.ts +38 -0
- package/dist/models/exchange-rate-pairs.js +15 -0
- package/dist/models/exchange.d.ts +67 -0
- package/dist/models/exchange.js +15 -0
- package/dist/models/excluded-asset.d.ts +26 -0
- package/dist/models/excluded-asset.js +15 -0
- package/dist/models/index.d.ts +102 -0
- package/dist/models/index.js +118 -0
- package/dist/models/jwt.d.ts +25 -0
- package/dist/models/jwt.js +15 -0
- package/dist/models/login-redirect-uri.d.ts +30 -0
- package/dist/models/login-redirect-uri.js +15 -0
- package/dist/models/manual-trade-and-impact.d.ts +39 -0
- package/dist/models/manual-trade-and-impact.js +15 -0
- package/dist/models/manual-trade-balance.d.ts +39 -0
- package/dist/models/manual-trade-balance.js +15 -0
- package/dist/models/manual-trade-form.d.ts +69 -0
- package/dist/models/manual-trade-form.js +15 -0
- package/dist/models/manual-trade-symbol.d.ts +56 -0
- package/dist/models/manual-trade-symbol.js +15 -0
- package/dist/models/manual-trade.d.ts +72 -0
- package/dist/models/manual-trade.js +15 -0
- package/dist/models/model-asset-class-details.d.ts +32 -0
- package/dist/models/model-asset-class-details.js +15 -0
- package/dist/models/model-asset-class-target.d.ts +26 -0
- package/dist/models/model-asset-class-target.js +15 -0
- package/dist/models/model-asset-class.d.ts +31 -0
- package/dist/models/model-asset-class.js +15 -0
- package/dist/models/model-portfolio-asset-class.d.ts +32 -0
- package/dist/models/model-portfolio-asset-class.js +15 -0
- package/dist/models/model-portfolio-details.d.ts +39 -0
- package/dist/models/model-portfolio-details.js +15 -0
- package/dist/models/model-portfolio-security.d.ts +32 -0
- package/dist/models/model-portfolio-security.js +15 -0
- package/dist/models/model-portfolio.d.ts +43 -0
- package/dist/models/model-portfolio.js +21 -0
- package/dist/models/model400-failed-request-response.d.ts +31 -0
- package/dist/models/model400-failed-request-response.js +15 -0
- package/dist/models/model401-failed-request-response.d.ts +31 -0
- package/dist/models/model401-failed-request-response.js +15 -0
- package/dist/models/model403-failed-request-response.d.ts +31 -0
- package/dist/models/model403-failed-request-response.js +15 -0
- package/dist/models/model404-failed-request-response.d.ts +31 -0
- package/dist/models/model404-failed-request-response.js +15 -0
- package/dist/models/monthly-dividends.d.ts +32 -0
- package/dist/models/monthly-dividends.js +15 -0
- package/dist/models/net-contributions.d.ts +37 -0
- package/dist/models/net-contributions.js +15 -0
- package/dist/models/net-dividend.d.ts +38 -0
- package/dist/models/net-dividend.js +15 -0
- package/dist/models/option-chain-inner-chain-per-root-inner-chain-per-strike-price-inner.d.ts +37 -0
- package/dist/models/option-chain-inner-chain-per-root-inner-chain-per-strike-price-inner.js +15 -0
- package/dist/models/option-chain-inner-chain-per-root-inner.d.ts +38 -0
- package/dist/models/option-chain-inner-chain-per-root-inner.js +15 -0
- package/dist/models/option-chain-inner.d.ts +50 -0
- package/dist/models/option-chain-inner.js +15 -0
- package/dist/models/option-leg.d.ts +44 -0
- package/dist/models/option-leg.js +22 -0
- package/dist/models/option-strategy-legs-inner.d.ts +42 -0
- package/dist/models/option-strategy-legs-inner.js +15 -0
- package/dist/models/option-strategy.d.ts +51 -0
- package/dist/models/option-strategy.js +15 -0
- package/dist/models/options-get-option-strategy-request.d.ts +41 -0
- package/dist/models/options-get-option-strategy-request.js +19 -0
- package/dist/models/options-holdings.d.ts +57 -0
- package/dist/models/options-holdings.js +15 -0
- package/dist/models/options-place-option-strategy-request.d.ts +48 -0
- package/dist/models/options-place-option-strategy-request.js +26 -0
- package/dist/models/options-position.d.ts +63 -0
- package/dist/models/options-position.js +15 -0
- package/dist/models/options-symbol.d.ts +86 -0
- package/dist/models/options-symbol.js +15 -0
- package/dist/models/order-type.d.ts +23 -0
- package/dist/models/order-type.js +27 -0
- package/dist/models/partner-data.d.ts +92 -0
- package/dist/models/partner-data.js +15 -0
- package/dist/models/past-value.d.ts +37 -0
- package/dist/models/past-value.js +15 -0
- package/dist/models/performance-custom.d.ts +138 -0
- package/dist/models/performance-custom.js +15 -0
- package/dist/models/portfolio-group-info.d.ts +93 -0
- package/dist/models/portfolio-group-info.js +15 -0
- package/dist/models/portfolio-group-position.d.ts +38 -0
- package/dist/models/portfolio-group-position.js +15 -0
- package/dist/models/portfolio-group-settings.d.ts +50 -0
- package/dist/models/portfolio-group-settings.js +15 -0
- package/dist/models/portfolio-group.d.ts +31 -0
- package/dist/models/portfolio-group.js +15 -0
- package/dist/models/position-symbol.d.ts +56 -0
- package/dist/models/position-symbol.js +15 -0
- package/dist/models/position.d.ts +56 -0
- package/dist/models/position.js +15 -0
- package/dist/models/redirect-tokenand-pin.d.ts +31 -0
- package/dist/models/redirect-tokenand-pin.js +15 -0
- package/dist/models/security-type.d.ts +43 -0
- package/dist/models/security-type.js +15 -0
- package/dist/models/snap-trade-apidisclaimer-accept-status.d.ts +31 -0
- package/dist/models/snap-trade-apidisclaimer-accept-status.js +15 -0
- package/dist/models/snap-trade-holdings-account.d.ts +64 -0
- package/dist/models/snap-trade-holdings-account.js +15 -0
- package/dist/models/snap-trade-holdings-total-value.d.ts +31 -0
- package/dist/models/snap-trade-holdings-total-value.js +15 -0
- package/dist/models/snap-trade-login-user-request-body.d.ts +53 -0
- package/dist/models/snap-trade-login-user-request-body.js +20 -0
- package/dist/models/snap-trade-register-user-request-body.d.ts +30 -0
- package/dist/models/snap-trade-register-user-request-body.js +15 -0
- package/dist/models/status.d.ts +37 -0
- package/dist/models/status.js +15 -0
- package/dist/models/strategy-impact-legs-inner.d.ts +61 -0
- package/dist/models/strategy-impact-legs-inner.js +15 -0
- package/dist/models/strategy-impact.d.ts +86 -0
- package/dist/models/strategy-impact.js +15 -0
- package/dist/models/strategy-order-place-orders-inner-legs-inner.d.ts +61 -0
- package/dist/models/strategy-order-place-orders-inner-legs-inner.js +15 -0
- package/dist/models/strategy-order-place-orders-inner.d.ts +278 -0
- package/dist/models/strategy-order-place-orders-inner.js +15 -0
- package/dist/models/strategy-order-place.d.ts +32 -0
- package/dist/models/strategy-order-place.js +15 -0
- package/dist/models/strategy-order-record.d.ts +120 -0
- package/dist/models/strategy-order-record.js +47 -0
- package/dist/models/strategy-quotes-greek.d.ts +49 -0
- package/dist/models/strategy-quotes-greek.js +15 -0
- package/dist/models/strategy-quotes.d.ts +57 -0
- package/dist/models/strategy-quotes.js +15 -0
- package/dist/models/sub-period-return-rate.d.ts +37 -0
- package/dist/models/sub-period-return-rate.js +15 -0
- package/dist/models/symbol-query.d.ts +24 -0
- package/dist/models/symbol-query.js +15 -0
- package/dist/models/symbol.d.ts +51 -0
- package/dist/models/symbol.js +15 -0
- package/dist/models/symbols-quotes.d.ts +56 -0
- package/dist/models/symbols-quotes.js +15 -0
- package/dist/models/target-asset.d.ts +55 -0
- package/dist/models/target-asset.js +15 -0
- package/dist/models/time-in-force.d.ts +22 -0
- package/dist/models/time-in-force.js +26 -0
- package/dist/models/trade-execution-status.d.ts +91 -0
- package/dist/models/trade-execution-status.js +27 -0
- package/dist/models/trade-impact.d.ts +51 -0
- package/dist/models/trade-impact.js +15 -0
- package/dist/models/trade.d.ts +74 -0
- package/dist/models/trade.js +20 -0
- package/dist/models/trading-place-ocoorder-request.d.ts +30 -0
- package/dist/models/trading-place-ocoorder-request.js +15 -0
- package/dist/models/underlying-symbol.d.ts +64 -0
- package/dist/models/underlying-symbol.js +15 -0
- package/dist/models/universal-activity.d.ts +134 -0
- package/dist/models/universal-activity.js +36 -0
- package/dist/models/universal-symbol-ticker.d.ts +70 -0
- package/dist/models/universal-symbol-ticker.js +15 -0
- package/dist/models/universal-symbol.d.ts +69 -0
- package/dist/models/universal-symbol.js +15 -0
- package/dist/models/user-error-log.d.ts +55 -0
- package/dist/models/user-error-log.js +15 -0
- package/dist/models/user-idand-secret.d.ts +31 -0
- package/dist/models/user-idand-secret.js +15 -0
- package/dist/models/user-settings.d.ts +80 -0
- package/dist/models/user-settings.js +15 -0
- package/dist/models/usexchange.d.ts +73 -0
- package/dist/models/usexchange.js +15 -0
- package/dist/pagination/page.d.ts +31 -0
- package/dist/pagination/page.js +58 -0
- package/dist/pagination/pageable.d.ts +53 -0
- package/dist/pagination/pageable.js +128 -0
- package/dist/pagination/paginate.d.ts +17 -0
- package/dist/pagination/paginate.js +78 -0
- package/dist/requestAfterHook.d.ts +8 -0
- package/dist/requestAfterHook.js +45 -0
- package/dist/requestBeforeHook.d.ts +8 -0
- package/dist/requestBeforeHook.js +8 -0
- package/docs/AccountInformationApi.md +485 -0
- package/docs/ApiDisclaimerApi.md +69 -0
- package/docs/ApiStatusApi.md +60 -0
- package/docs/AuthenticationApi.md +307 -0
- package/docs/ConnectionsApi.md +186 -0
- package/docs/ErrorLogsApi.md +65 -0
- package/docs/OptionsApi.md +321 -0
- package/docs/PortfolioManagementApi.md +1866 -0
- package/docs/ReferenceDataApi.md +597 -0
- package/docs/TradingApi.md +629 -0
- package/docs/TransactionsAndReportingApi.md +141 -0
- package/index.test.ts +62 -13
- package/index.ts +3 -3
- package/models/account-holdings.ts +61 -0
- package/models/account-order-record-status.ts +48 -0
- package/models/account-order-record.ts +142 -0
- package/models/account-simple.ts +43 -0
- package/models/account.ts +82 -0
- package/models/action.ts +30 -0
- package/models/apidisclaimer-accept-request.ts +29 -0
- package/models/authentication-login-snap-trade-user200-response.ts +31 -0
- package/models/balance.ts +40 -0
- package/models/brokerage-authorization-type-read-only-brokerage.ts +43 -0
- package/models/brokerage-authorization-type-read-only.ts +68 -0
- package/models/brokerage-authorization-type.ts +39 -0
- package/models/brokerage-authorization.ts +82 -0
- package/models/brokerage-symbol.ts +61 -0
- package/models/brokerage-type.ts +37 -0
- package/models/brokerage.ts +136 -0
- package/models/calculated-trade.ts +40 -0
- package/models/cash-restriction.ts +63 -0
- package/models/currency.ts +43 -0
- package/models/delete-user-response.ts +37 -0
- package/models/dividend-at-date.ts +43 -0
- package/models/encrypted-response-encrypted-message-data.ts +43 -0
- package/models/encrypted-response.ts +38 -0
- package/models/exchange-rate-pairs.ts +46 -0
- package/models/exchange.ts +73 -0
- package/models/excluded-asset.ts +34 -0
- package/models/index.ts +102 -0
- package/models/jwt.ts +31 -0
- package/models/login-redirect-uri.ts +35 -0
- package/models/manual-trade-and-impact.ts +49 -0
- package/models/manual-trade-balance.ts +49 -0
- package/models/manual-trade-form.ts +80 -0
- package/models/manual-trade-symbol.ts +64 -0
- package/models/manual-trade.ts +88 -0
- package/models/model-asset-class-details.ts +41 -0
- package/models/model-asset-class-target.ts +34 -0
- package/models/model-asset-class.ts +37 -0
- package/models/model-portfolio-asset-class.ts +40 -0
- package/models/model-portfolio-details.ts +50 -0
- package/models/model-portfolio-security.ts +40 -0
- package/models/model-portfolio.ts +52 -0
- package/models/model400-failed-request-response.ts +37 -0
- package/models/model401-failed-request-response.ts +37 -0
- package/models/model403-failed-request-response.ts +37 -0
- package/models/model404-failed-request-response.ts +37 -0
- package/models/monthly-dividends.ts +40 -0
- package/models/net-contributions.ts +43 -0
- package/models/net-dividend.ts +46 -0
- package/models/option-chain-inner-chain-per-root-inner-chain-per-strike-price-inner.ts +43 -0
- package/models/option-chain-inner-chain-per-root-inner.ts +46 -0
- package/models/option-chain-inner.ts +58 -0
- package/models/option-leg.ts +53 -0
- package/models/option-strategy-legs-inner.ts +47 -0
- package/models/option-strategy.ts +61 -0
- package/models/options-get-option-strategy-request.ts +51 -0
- package/models/options-holdings.ts +67 -0
- package/models/options-place-option-strategy-request.ts +57 -0
- package/models/options-position.ts +73 -0
- package/models/options-symbol.ts +94 -0
- package/models/order-type.ts +32 -0
- package/models/partner-data.ts +100 -0
- package/models/past-value.ts +43 -0
- package/models/performance-custom.ts +154 -0
- package/models/portfolio-group-info.ts +115 -0
- package/models/portfolio-group-position.ts +46 -0
- package/models/portfolio-group-settings.ts +58 -0
- package/models/portfolio-group.ts +37 -0
- package/models/position-symbol.ts +64 -0
- package/models/position.ts +64 -0
- package/models/redirect-tokenand-pin.ts +37 -0
- package/models/security-type.ts +49 -0
- package/models/snap-trade-apidisclaimer-accept-status.ts +37 -0
- package/models/snap-trade-holdings-account.ts +70 -0
- package/models/snap-trade-holdings-total-value.ts +37 -0
- package/models/snap-trade-login-user-request-body.ts +61 -0
- package/models/snap-trade-register-user-request-body.ts +35 -0
- package/models/status.ts +43 -0
- package/models/strategy-impact-legs-inner.ts +67 -0
- package/models/strategy-impact.ts +94 -0
- package/models/strategy-order-place-orders-inner-legs-inner.ts +67 -0
- package/models/strategy-order-place-orders-inner.ts +286 -0
- package/models/strategy-order-place.ts +40 -0
- package/models/strategy-order-record.ts +133 -0
- package/models/strategy-quotes-greek.ts +55 -0
- package/models/strategy-quotes.ts +67 -0
- package/models/sub-period-return-rate.ts +43 -0
- package/models/symbol-query.ts +29 -0
- package/models/symbol.ts +61 -0
- package/models/symbols-quotes.ts +64 -0
- package/models/target-asset.ts +62 -0
- package/models/time-in-force.ts +31 -0
- package/models/trade-execution-status.ts +105 -0
- package/models/trade-impact.ts +61 -0
- package/models/trade.ts +88 -0
- package/models/trading-place-ocoorder-request.ts +35 -0
- package/models/underlying-symbol.ts +76 -0
- package/models/universal-activity.ts +151 -0
- package/models/universal-symbol-ticker.ts +82 -0
- package/models/universal-symbol.ts +80 -0
- package/models/user-error-log.ts +61 -0
- package/models/user-idand-secret.ts +37 -0
- package/models/user-settings.ts +88 -0
- package/models/usexchange.ts +79 -0
- package/package.json +1 -1
- package/pagination/page.ts +50 -0
- package/pagination/pageable.ts +107 -0
- package/pagination/paginate.ts +40 -0
- package/requestAfterHook.ts +53 -0
- package/requestBeforeHook.ts +14 -0
- package/tsconfig.json +0 -1
- package/dist/api.js.map +0 -1
- package/dist/base.js.map +0 -1
- package/dist/common.js.map +0 -1
- package/dist/configuration.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.test.js.map +0 -1
- package/dist/jest.config.js.map +0 -1
- package/git_push.sh +0 -57
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SnapTrade
|
|
3
|
+
* Connect brokerage accounts to your app for live positions and trading
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: 1.0.0
|
|
6
|
+
* Contact: api@snaptrade.com
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This file is auto generated by Konfig (https://konfigthis.com).
|
|
9
|
+
* https://konfigthis.com
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { AxiosPromise } from "axios";
|
|
14
|
+
import {
|
|
15
|
+
Page,
|
|
16
|
+
PageInfo,
|
|
17
|
+
PageParameterProperties,
|
|
18
|
+
PageParameters,
|
|
19
|
+
} from "./Page";
|
|
20
|
+
|
|
21
|
+
export type PageParametersBase<Parameters> = Parameters & {
|
|
22
|
+
requestBody?: Parameters;
|
|
23
|
+
};
|
|
24
|
+
export type PageRequest<
|
|
25
|
+
Data extends PageInfo,
|
|
26
|
+
Parameters extends PageParameters
|
|
27
|
+
> = (parameters: Parameters) => AxiosPromise<Data>;
|
|
28
|
+
|
|
29
|
+
export abstract class Pageable<
|
|
30
|
+
Data extends PageInfo,
|
|
31
|
+
Parameters extends PageParameters
|
|
32
|
+
> {
|
|
33
|
+
readonly data: Data;
|
|
34
|
+
protected readonly initialParameters: Parameters;
|
|
35
|
+
private readonly _request: PageRequest<Data, Parameters>;
|
|
36
|
+
async previous(): Promise<Page<Data, Parameters> | null> {
|
|
37
|
+
if (!this.hasPrevious()) return null;
|
|
38
|
+
if (this.previousParameters === null) return null;
|
|
39
|
+
const response = await this.makeRequest(this.previousParameters);
|
|
40
|
+
return this.withData(response.data);
|
|
41
|
+
}
|
|
42
|
+
async next(): Promise<Page<Data, Parameters> | null> {
|
|
43
|
+
if (!this.hasNext()) return null;
|
|
44
|
+
if (this.nextParameters === null) return null;
|
|
45
|
+
const response = await this.makeRequest(this.nextParameters);
|
|
46
|
+
return this.withData(response.data);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Generate minimal set of parameters needed to get the previous page
|
|
51
|
+
*/
|
|
52
|
+
protected abstract get previousParameters(): PageParameterProperties | null;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Generate minimal set of parameters needed to get the next page
|
|
56
|
+
*/
|
|
57
|
+
protected abstract get nextParameters(): PageParameterProperties | null;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Is there a previous page based on PageInfo?
|
|
61
|
+
*/
|
|
62
|
+
abstract hasPrevious(): boolean;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Is there a next page based on PageInfo?
|
|
66
|
+
*/
|
|
67
|
+
abstract hasNext(): boolean;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Helper for invoking a request. Handles request body and parameter based pagination
|
|
71
|
+
*/
|
|
72
|
+
private makeRequest(parameters: PageParameterProperties): AxiosPromise<Data> {
|
|
73
|
+
// Handle request body pagination
|
|
74
|
+
if (this.initialParameters.requestBody !== undefined) {
|
|
75
|
+
return this._request({
|
|
76
|
+
...this.initialParameters,
|
|
77
|
+
requestBody: { ...this.initialParameters.requestBody, ...parameters },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return this._request({ ...this.initialParameters, ...parameters });
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Helper for creating new page
|
|
85
|
+
*/
|
|
86
|
+
private withData(data: Data): Page<Data, Parameters> {
|
|
87
|
+
return new Page({
|
|
88
|
+
data,
|
|
89
|
+
initialParameters: this.initialParameters,
|
|
90
|
+
request: this._request,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
constructor({
|
|
95
|
+
data,
|
|
96
|
+
initialParameters,
|
|
97
|
+
request,
|
|
98
|
+
}: {
|
|
99
|
+
data: Data;
|
|
100
|
+
initialParameters: Parameters;
|
|
101
|
+
request: PageRequest<Data, Parameters>;
|
|
102
|
+
}) {
|
|
103
|
+
this.data = data;
|
|
104
|
+
this._request = request;
|
|
105
|
+
this.initialParameters = initialParameters;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SnapTrade
|
|
3
|
+
* Connect brokerage accounts to your app for live positions and trading
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: 1.0.0
|
|
6
|
+
* Contact: api@snaptrade.com
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This file is auto generated by Konfig (https://konfigthis.com).
|
|
9
|
+
* https://konfigthis.com
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { PageInfo, PageParameters, Page } from "./page";
|
|
14
|
+
import { PageRequest } from "./pageable";
|
|
15
|
+
|
|
16
|
+
export const paginate = <
|
|
17
|
+
Data extends PageInfo,
|
|
18
|
+
Parameters extends PageParameters
|
|
19
|
+
>({
|
|
20
|
+
request,
|
|
21
|
+
initialParameters,
|
|
22
|
+
}: {
|
|
23
|
+
request: PageRequest<Data, Parameters>;
|
|
24
|
+
initialParameters: Parameters;
|
|
25
|
+
}): Promise<Page<Data, Parameters>> => {
|
|
26
|
+
return new Promise(async (resolve, reject) => {
|
|
27
|
+
try {
|
|
28
|
+
const data = await request(initialParameters);
|
|
29
|
+
resolve(
|
|
30
|
+
new Page({
|
|
31
|
+
data: data.data,
|
|
32
|
+
initialParameters,
|
|
33
|
+
request: (parameters) => request(parameters),
|
|
34
|
+
})
|
|
35
|
+
);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
reject(error);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as crypto from "crypto";
|
|
2
|
+
import { RequestArgs } from "./base";
|
|
3
|
+
import { Configuration } from "./configuration";
|
|
4
|
+
|
|
5
|
+
const JSONstringifyOrder = (obj: any) => {
|
|
6
|
+
var allKeys: any = [];
|
|
7
|
+
var seen: any = {};
|
|
8
|
+
JSON.stringify(obj, function (key, value) {
|
|
9
|
+
if (!(key in seen)) {
|
|
10
|
+
allKeys.push(key);
|
|
11
|
+
seen[key] = null;
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
});
|
|
15
|
+
allKeys.sort();
|
|
16
|
+
return JSON.stringify(obj, allKeys);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export function requestAfterHook(request: {
|
|
20
|
+
axiosArgs: RequestArgs;
|
|
21
|
+
basePath: string;
|
|
22
|
+
url: string;
|
|
23
|
+
configuration?: Configuration;
|
|
24
|
+
}): void {
|
|
25
|
+
const { configuration, basePath, axiosArgs, url } = request;
|
|
26
|
+
if (configuration?.consumerKey === undefined)
|
|
27
|
+
throw Error("Consumer key is required");
|
|
28
|
+
const consumerKey = encodeURI(configuration.consumerKey);
|
|
29
|
+
const requestData =
|
|
30
|
+
axiosArgs.options.data === undefined || axiosArgs.options.data === "{}"
|
|
31
|
+
? null
|
|
32
|
+
: JSON.parse(axiosArgs.options.data);
|
|
33
|
+
const path =
|
|
34
|
+
axiosArgs.url.indexOf("?") === -1
|
|
35
|
+
? `${axiosArgs.url}`
|
|
36
|
+
: `${axiosArgs.url.split("?")[0]}`;
|
|
37
|
+
const requestPath = `/api/v1${path}`;
|
|
38
|
+
const requestQuery = url
|
|
39
|
+
.replace(basePath, "")
|
|
40
|
+
.replace(path, "")
|
|
41
|
+
.replace("?", "");
|
|
42
|
+
const sigObject = {
|
|
43
|
+
content: requestData,
|
|
44
|
+
path: requestPath,
|
|
45
|
+
query: requestQuery,
|
|
46
|
+
};
|
|
47
|
+
const sigContent = JSONstringifyOrder(sigObject);
|
|
48
|
+
const hmac = crypto.createHmac("sha256", consumerKey);
|
|
49
|
+
const signature = hmac.update(sigContent).digest("base64");
|
|
50
|
+
|
|
51
|
+
if (axiosArgs.options.headers)
|
|
52
|
+
axiosArgs.options.headers["Signature"] = signature;
|
|
53
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Configuration } from "./configuration";
|
|
2
|
+
import { AxiosRequestConfig } from "axios";
|
|
3
|
+
|
|
4
|
+
export function requestBeforeHook(request: {
|
|
5
|
+
queryParameters: Record<string, any>;
|
|
6
|
+
path: string;
|
|
7
|
+
requestConfig: AxiosRequestConfig;
|
|
8
|
+
configuration?: Configuration;
|
|
9
|
+
}): void {
|
|
10
|
+
const { queryParameters } = request;
|
|
11
|
+
queryParameters["timestamp"] = Math.round(
|
|
12
|
+
new Date().getTime() / 1000
|
|
13
|
+
).toString();
|
|
14
|
+
}
|