Skip to content
This repository has been archived by the owner on Feb 6, 2024. It is now read-only.

Commit

Permalink
fix: expose params for subscriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
justinemmanuelmercado committed Jun 22, 2020
1 parent 04848a4 commit ebe2f06
Showing 1 changed file with 42 additions and 44 deletions.
86 changes: 42 additions & 44 deletions src/sections/subscriptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,55 +19,67 @@ export type NotificationType =
| 'FulfillmentOrderStatus'
| 'ReportProcessingFinished'

enum NotificationTypeEnum {
AnyOfferChanged = 'AnyOfferChanged',
FeedProcessingFinished = 'FeedProcessingFinished',
FeePromotion = 'FeePromotion',
FulfillmentOrderStatus = 'FulfillmentOrderStatus',
ReportProcessingFinished = 'ReportProcessingFinished',
}

const NotificationType = enumeration(NotificationTypeEnum)

interface MarketplaceIdAndDestinationOnlyParameters {
MarketplaceId: string
Destination: Destination
export interface Destination {
DeliveryChannel: DeliveryChannel
AttributeList: AttributeKeyValue[]
}

interface AttributeKeyValue {
export interface AttributeKeyValue {
Key: AttributeKeyValueKeys
Value: string
}
interface Destination {
DeliveryChannel: DeliveryChannel
AttributeList: AttributeKeyValue[]

export interface Subscription {
NotificationType: NotificationType
Destination: Destination
IsEnabled: boolean
}

interface SubscriptionActionParameters {
MarketplaceId: string
NotificationType: NotificationType
Destination: Destination
}

type RegisterDestinationParameters = MarketplaceIdAndDestinationOnlyParameters
export type DeleteSubscriptionParameters = SubscriptionActionParameters
interface MarketplaceIdAndDestinationOnlyParameters {
MarketplaceId: string
Destination: Destination
}

export type RegisterDestinationParameters = MarketplaceIdAndDestinationOnlyParameters
export type DeregisterDestinationParameters = MarketplaceIdAndDestinationOnlyParameters
export interface ListRegisteredDestinationsParameters {
MarketplaceId: string
}
export interface UpdateSubscriptionParameters {
MarketplaceId: string
Subscription: Subscription
}
export type GetSubscriptionParameters = SubscriptionActionParameters

enum NotificationTypeEnum {
AnyOfferChanged = 'AnyOfferChanged',
FeedProcessingFinished = 'FeedProcessingFinished',
FeePromotion = 'FeePromotion',
FulfillmentOrderStatus = 'FulfillmentOrderStatus',
ReportProcessingFinished = 'ReportProcessingFinished',
}

const NotificationType = enumeration(NotificationTypeEnum)

const RegisterDestinationResponse = Codec.interface({
RegisterDestinationResponse: Codec.interface({
RegisterDestinationResult: exactly(''),
}),
})

type DeregisterDestinationParameters = MarketplaceIdAndDestinationOnlyParameters

const DeregisterDestinationResponse = Codec.interface({
DeregisterDestinationResponse: Codec.interface({
DeregisterDestinationResult: exactly(''),
}),
})

interface ListRegisteredDestinationsParameters {
MarketplaceId: string
[key: string]: string
}
enum AttribueKeyValueKeysEnum {
sqsQueueUrl = 'sqsQueueUrl',
}
Expand All @@ -93,8 +105,6 @@ const ListRegisteredDestinations = Codec.interface({
DestinationList: ensureArray('member', Destination),
})

type ListRegisteredDestinations = GetInterface<typeof ListRegisteredDestinations>

const ListRegisteredDestinationsResponse = Codec.interface({
ListRegisteredDestinationsResponse: Codec.interface({
ListRegisteredDestinationsResult: ListRegisteredDestinations,
Expand All @@ -109,12 +119,6 @@ const SendTestNotificationToDestinationResponse = Codec.interface({
}),
})

interface Subscription {
NotificationType: NotificationType
Destination: Destination
IsEnabled: boolean
}

interface CreateSubscriptionParameters {
MarketplaceId: string
Subscription: Subscription
Expand All @@ -126,8 +130,6 @@ const CreateSubscriptionResponse = Codec.interface({
}),
})

type GetSubscriptionParameters = SubscriptionActionParameters

const Subscription = Codec.interface({
NotificationType,
Destination,
Expand All @@ -138,32 +140,26 @@ const GetSubscription = Codec.interface({
Subscription,
})

type GetSubscription = GetInterface<typeof GetSubscription>

const GetSubscriptionResponse = Codec.interface({
GetSubscriptionResponse: Codec.interface({
GetSubscriptionResult: GetSubscription,
}),
})

type DeleteSubscriptionParameters = SubscriptionActionParameters

const DeleteSubscriptionResponse = Codec.interface({
DeleteSubscriptionResponse: Codec.interface({
DeleteSubscriptionResult: exactly(''),
}),
})

interface UpdateSubscriptionParameters {
MarketplaceId: string
Subscription: Subscription
}

const UpdateSubscriptionResponse = Codec.interface({
UpdateSubscriptionResponse: Codec.interface({
UpdateSubscriptionResult: exactly(''),
}),
})

export type ListRegisteredDestinations = GetInterface<typeof ListRegisteredDestinations>
export type GetSubscription = GetInterface<typeof GetSubscription>
export class Subscriptions {
constructor(private httpClient: HttpClient) {}

Expand Down Expand Up @@ -301,7 +297,9 @@ export class Subscriptions {
resource: Resource.Subscriptions,
version: SUBSCRIPTIONS_API_VERSION,
action: 'ListRegisteredDestinations',
parameters,
parameters: {
MarketplaceId: parameters.MarketplaceId,
},
})

return ListRegisteredDestinationsResponse.decode(response).caseOf({
Expand Down

0 comments on commit ebe2f06

Please sign in to comment.