Skip to content
This repository has been archived by the owner on Nov 22, 2022. It is now read-only.

Commit

Permalink
Token refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
aplegatt committed Aug 8, 2022
1 parent 36afcfa commit 186b118
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 75 deletions.
6 changes: 3 additions & 3 deletions src/Http.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import type { ErrorType } from './interfaces/errors/ErrorType'
import type { FetchConfig, HttpMethod, ResponseParsing } from './interfaces/FetchConfig'
import type { JsonApiResponse } from './interfaces/JsonApi'
import type { ResultResponse } from './interfaces/ResultResponse'
import type { IToken } from './interfaces/Token'
import type { OptionalAnyToken } from './interfaces/Token'

export type EndpointOptions = {
fetcher: Fetcher
Expand All @@ -29,7 +29,7 @@ export default class Http {
protected async spreeResponse<ResponseType = JsonApiResponse>(
method: HttpMethod,
url: string,
tokens: IToken = {},
tokens: OptionalAnyToken = {},
params: any = {},
responseParsing: ResponseParsing = 'automatic'
): Promise<ResultResponse<ResponseType>> {
Expand Down Expand Up @@ -100,7 +100,7 @@ export default class Http {
}
}

protected spreeOrderHeaders(tokens: IToken): { [headerName: string]: string } {
protected spreeOrderHeaders(tokens: OptionalAnyToken): { [headerName: string]: string } {
const header = {}

if (tokens.orderToken) {
Expand Down
29 changes: 15 additions & 14 deletions src/endpoints/Account.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,82 +25,83 @@ import type { NoContentResponse, NoContentResult } from '../interfaces/NoContent
import type { IOrder, IOrderResult, IOrders, IOrdersResult } from '../interfaces/Order'
import routes from '../routes'
import prepareParamsFromOptions from '../helpers/params'
import { RequiredAccountToken } from '../interfaces/Token'

export default class Account extends Http {
public async accountInfo(options: AccountInfoOptions): Promise<IAccountResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IAccount>('get', routes.accountPath(), token, {})
}

public async creditCardsList(options: CreditCardsListOptions): Promise<ICreditCardsResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<ICreditCards>('get', routes.accountCreditCardsPath(), token, {})
}

public async defaultCreditCard(options: DefaultCreditCardOptions): Promise<ICreditCardResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<ICreditCard>('get', routes.accountDefaultCreditCardPath(), token, {})
}

public async removeCreditCard(options: RemoveCreditCardOptions): Promise<NoContentResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<NoContentResponse>('delete', routes.accountCreditCardRemovePath(options.id), token, {})
}

public async completedOrdersList(options: CompletedOrdersListOptions): Promise<IOrdersResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrders>('get', routes.accountCompletedOrdersPath(), token, {})
}

public async completedOrder(options: CompletedOrderOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('get', routes.accountCompletedOrderPath(options.order_number), token, {})
}

public async create(options: CreateOptions): Promise<IAccountResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { bodyParams: params } = prepareParamsFromOptions(options)

return await this.spreeResponse<IAccount>('post', routes.accountPath(), token, params)
return await this.spreeResponse<IAccount>('post', routes.accountPath(), {}, params)
}

public async update(options: UpdateOptions): Promise<IAccountResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAccountToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IAccount>('patch', routes.accountPath(), token, params)
}

public async addressesList(options: AddressesListOptions): Promise<AccountAddressesResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<AccountAddressesResponse>('get', routes.accountAddressesPath(), token, {})
}

public async showAddress(options: ShowAddressOptions): Promise<AccountAddressResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<AccountAddressResponse>('get', routes.accountAddressPath(options.id), token, {})
}

public async createAddress(options: CreateAddressOptions): Promise<AccountAddressResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAccountToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<AccountAddressResponse>('post', routes.accountAddressesPath(), token, params)
}

public async removeAddress(options: RemoveAddressOptions): Promise<NoContentResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<NoContentResponse>('delete', routes.accountAddressRemovePath(options.id), token, {})
}

public async updateAddress(options: UpdateAddressOptions): Promise<AccountAddressResult> {
const { token, bodyParams: params, pathParams } = prepareParamsFromOptions(options, ['id'])
const { token, bodyParams: params, pathParams }: { token: RequiredAccountToken; bodyParams: any; pathParams: any } = prepareParamsFromOptions(options, ['id'])

return await this.spreeResponse<AccountAddressResponse>('patch', routes.accountAddressPath(pathParams.id), token, params)
}
Expand Down
27 changes: 14 additions & 13 deletions src/endpoints/Cart.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,58 +22,59 @@ import type {
ShowOptions
} from '../interfaces/Cart'
import prepareParamsFromOptions from '../helpers/params'
import { RequiredAccountToken, RequiredAnyToken } from '../interfaces/Token'

export default class Cart extends Http {
public async show(options: ShowOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('get', routes.cartPath(), token, {})
}

public async create(options?: CreateOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAccountToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('post', routes.cartPath(), token, {})
}

public async addItem(options: AddItemOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('post', routes.cartAddItemPath(), token, params)
}

public async removeItem(options: RemoveItemOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('delete', routes.cartRemoveItemPath(options.id), token, {})
}

public async emptyCart(options: EmptyCartOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.cartEmptyPath(), token, {})
}

public async remove(options: RemoveOptions): Promise<NoContentResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<NoContentResponse>('delete', routes.cartPath(), token, {})
}

public async setQuantity(options: SetQuantityOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.cartSetItemQuantity(), token, params)
}

public async applyCouponCode(options: ApplyCouponCodeOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.cartApplyCodePath(), token, params)
}

public async removeCouponCode(options: RemoveCouponCodeOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

let route: string

Expand All @@ -87,13 +88,13 @@ export default class Cart extends Http {
}

public async removeAllCoupons(options: RemoveAllCouponsOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('delete', routes.cartRemoveAllCoupons(), token, {})
}

public async estimateShippingRates(options: EstimateShippingRatesOptions): Promise<EstimatedShippingRatesResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<EstimatedShippingRates>(
'get',
Expand All @@ -104,13 +105,13 @@ export default class Cart extends Http {
}

public async associateGuestCart(options: AssociateGuestCartOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAccountToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.cartAssociatePath(), token, params)
}

public async changeCurrency(options: ChangeCurrencyOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.cartChangeCurrencyPath(), token, params)
}
Expand Down
23 changes: 12 additions & 11 deletions src/endpoints/Checkout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,70 +24,71 @@ import {
} from '../interfaces/StripeCheckoutSessionSummary'
import routes from '../routes'
import prepareParamsFromOptions from '../helpers/params'
import { RequiredAnyToken } from '../interfaces/Token'

export default class Checkout extends Http {
public async orderNext(options: OrderNextOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.checkoutNextPath(), token, {})
}

public async orderUpdate(options: OrderUpdateOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.checkoutPath(), token, params)
}

public async advance(options: AdvanceOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.checkoutAdvancePath(), token, {})
}

public async complete(options: CompleteOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.checkoutCompletePath(), token, {})
}

public async addStoreCredits(options: AddStoreCreditOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('post', routes.checkoutAddStoreCreditsPath(), token, params)
}

public async removeStoreCredits(options: RemoveStoreCreditsOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('post', routes.checkoutRemoveStoreCreditsPath(), token, {})
}

public async paymentMethods(options: PaymentMethodsOptions): Promise<IPaymentMethodsResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IPaymentMethods>('get', routes.checkoutPaymentMethodsPath(), token, {})
}

public async shippingRates(options: ShippingRatesOptions): Promise<ShippingRatesResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<ShippingRates>('get', routes.checkoutShippingRatesPath(), token, params)
}

public async selectShippingMethod(options: SelectShippingMethodOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('patch', routes.checkoutSelectShippingMethodPath(), token, params)
}

public async addPayment(options: AddPaymentOptions): Promise<IOrderResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('post', routes.checkoutAddPaymentPath(), token, params)
}

public async createStripeSession(options: CreateStripeSessionOptions): Promise<StripeCheckoutSessionSummaryResult> {
const { token, bodyParams: params } = prepareParamsFromOptions(options)
const { token, bodyParams: params }: { token: RequiredAnyToken; bodyParams: any } = prepareParamsFromOptions(options)

return await this.spreeResponse<StripeCheckoutSessionSummary>(
'patch',
Expand Down
3 changes: 2 additions & 1 deletion src/endpoints/Order.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ import Http from '../Http'
import type { IOrder, IOrderResult, StatusOptions } from '../interfaces/Order'
import routes from '../routes'
import prepareParamsFromOptions from '../helpers/params'
import { RequiredAnyToken } from '../interfaces/Token'

export default class Order extends Http {
public async status(options: StatusOptions): Promise<IOrderResult> {
const { token } = prepareParamsFromOptions(options)
const { token }: { token: RequiredAnyToken } = prepareParamsFromOptions(options)

return await this.spreeResponse<IOrder>('get', routes.orderStatusPath(options.order_number), token, {})
}
Expand Down
Loading

0 comments on commit 186b118

Please sign in to comment.