diff options
Diffstat (limited to 'src/frontend/gateways/rpc')
| -rw-r--r-- | src/frontend/gateways/rpc/Ad.gateway.ts | 19 | ||||
| -rw-r--r-- | src/frontend/gateways/rpc/Cart.gateway.ts | 29 | ||||
| -rw-r--r-- | src/frontend/gateways/rpc/Checkout.gateway.ts | 19 | ||||
| -rw-r--r-- | src/frontend/gateways/rpc/Currency.gateway.ts | 24 | ||||
| -rw-r--r-- | src/frontend/gateways/rpc/ProductCatalog.gateway.ts | 24 | ||||
| -rw-r--r-- | src/frontend/gateways/rpc/Recommendations.gateway.ts | 21 |
6 files changed, 136 insertions, 0 deletions
diff --git a/src/frontend/gateways/rpc/Ad.gateway.ts b/src/frontend/gateways/rpc/Ad.gateway.ts new file mode 100644 index 0000000..1fd7244 --- /dev/null +++ b/src/frontend/gateways/rpc/Ad.gateway.ts @@ -0,0 +1,19 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +import { ChannelCredentials } from '@grpc/grpc-js'; +import { AdResponse, AdServiceClient } from '../../protos/demo'; + +const { AD_ADDR = '' } = process.env; + +const client = new AdServiceClient(AD_ADDR, ChannelCredentials.createInsecure()); + +const AdGateway = () => ({ + listAds(contextKeys: string[]) { + return new Promise<AdResponse>((resolve, reject) => + client.getAds({ contextKeys: contextKeys }, (error, response) => (error ? reject(error) : resolve(response))) + ); + }, +}); + +export default AdGateway(); diff --git a/src/frontend/gateways/rpc/Cart.gateway.ts b/src/frontend/gateways/rpc/Cart.gateway.ts new file mode 100644 index 0000000..25dfc87 --- /dev/null +++ b/src/frontend/gateways/rpc/Cart.gateway.ts @@ -0,0 +1,29 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +import { ChannelCredentials } from '@grpc/grpc-js'; +import { Cart, CartItem, CartServiceClient, Empty } from '../../protos/demo'; + +const { CART_ADDR = '' } = process.env; + +const client = new CartServiceClient(CART_ADDR, ChannelCredentials.createInsecure()); + +const CartGateway = () => ({ + getCart(userId: string) { + return new Promise<Cart>((resolve, reject) => + client.getCart({ userId }, (error, response) => (error ? reject(error) : resolve(response))) + ); + }, + addItem(userId: string, item: CartItem) { + return new Promise<Empty>((resolve, reject) => + client.addItem({ userId, item }, (error, response) => (error ? reject(error) : resolve(response))) + ); + }, + emptyCart(userId: string) { + return new Promise<Empty>((resolve, reject) => + client.emptyCart({ userId }, (error, response) => (error ? reject(error) : resolve(response))) + ); + }, +}); + +export default CartGateway(); diff --git a/src/frontend/gateways/rpc/Checkout.gateway.ts b/src/frontend/gateways/rpc/Checkout.gateway.ts new file mode 100644 index 0000000..3d54f9e --- /dev/null +++ b/src/frontend/gateways/rpc/Checkout.gateway.ts @@ -0,0 +1,19 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +import { ChannelCredentials } from '@grpc/grpc-js'; +import { CheckoutServiceClient, PlaceOrderRequest, PlaceOrderResponse } from '../../protos/demo'; + +const { CHECKOUT_ADDR = '' } = process.env; + +const client = new CheckoutServiceClient(CHECKOUT_ADDR, ChannelCredentials.createInsecure()); + +const CheckoutGateway = () => ({ + placeOrder(order: PlaceOrderRequest) { + return new Promise<PlaceOrderResponse>((resolve, reject) => + client.placeOrder(order, (error, response) => (error ? reject(error) : resolve(response))) + ); + }, +}); + +export default CheckoutGateway(); diff --git a/src/frontend/gateways/rpc/Currency.gateway.ts b/src/frontend/gateways/rpc/Currency.gateway.ts new file mode 100644 index 0000000..ac25719 --- /dev/null +++ b/src/frontend/gateways/rpc/Currency.gateway.ts @@ -0,0 +1,24 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +import { ChannelCredentials } from '@grpc/grpc-js'; +import { GetSupportedCurrenciesResponse, CurrencyServiceClient, Money } from '../../protos/demo'; + +const { CURRENCY_ADDR = '' } = process.env; + +const client = new CurrencyServiceClient(CURRENCY_ADDR, ChannelCredentials.createInsecure()); + +const CurrencyGateway = () => ({ + convert(from: Money, toCode: string) { + return new Promise<Money>((resolve, reject) => + client.convert({ from, toCode }, (error, response) => (error ? reject(error) : resolve(response))) + ); + }, + getSupportedCurrencies() { + return new Promise<GetSupportedCurrenciesResponse>((resolve, reject) => + client.getSupportedCurrencies({}, (error, response) => (error ? reject(error) : resolve(response))) + ); + }, +}); + +export default CurrencyGateway(); diff --git a/src/frontend/gateways/rpc/ProductCatalog.gateway.ts b/src/frontend/gateways/rpc/ProductCatalog.gateway.ts new file mode 100644 index 0000000..18d8305 --- /dev/null +++ b/src/frontend/gateways/rpc/ProductCatalog.gateway.ts @@ -0,0 +1,24 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +import { ChannelCredentials } from '@grpc/grpc-js'; +import { ListProductsResponse, Product, ProductCatalogServiceClient } from '../../protos/demo'; + +const { PRODUCT_CATALOG_ADDR = '' } = process.env; + +const client = new ProductCatalogServiceClient(PRODUCT_CATALOG_ADDR, ChannelCredentials.createInsecure()); + +const ProductCatalogGateway = () => ({ + listProducts() { + return new Promise<ListProductsResponse>((resolve, reject) => + client.listProducts({}, (error, response) => (error ? reject(error) : resolve(response))) + ); + }, + getProduct(id: string) { + return new Promise<Product>((resolve, reject) => + client.getProduct({ id }, (error, response) => (error ? reject(error) : resolve(response))) + ); + }, +}); + +export default ProductCatalogGateway(); diff --git a/src/frontend/gateways/rpc/Recommendations.gateway.ts b/src/frontend/gateways/rpc/Recommendations.gateway.ts new file mode 100644 index 0000000..c58a470 --- /dev/null +++ b/src/frontend/gateways/rpc/Recommendations.gateway.ts @@ -0,0 +1,21 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +import { ChannelCredentials } from '@grpc/grpc-js'; +import { ListRecommendationsResponse, RecommendationServiceClient } from '../../protos/demo'; + +const { RECOMMENDATION_ADDR = '' } = process.env; + +const client = new RecommendationServiceClient(RECOMMENDATION_ADDR, ChannelCredentials.createInsecure()); + +const RecommendationsGateway = () => ({ + listRecommendations(userId: string, productIds: string[]) { + return new Promise<ListRecommendationsResponse>((resolve, reject) => + client.listRecommendations({ userId, productIds }, (error, response) => + error ? reject(error) : resolve(response) + ) + ); + }, +}); + +export default RecommendationsGateway(); |
