summaryrefslogtreecommitdiff
path: root/src/frontend/gateways/rpc/ProductCatalog.gateway.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/gateways/rpc/ProductCatalog.gateway.ts')
-rw-r--r--src/frontend/gateways/rpc/ProductCatalog.gateway.ts24
1 files changed, 24 insertions, 0 deletions
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();