src/frontend/gateways/rpc/Shipping.gateway.ts (14 lines of code) (raw):
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
import { ChannelCredentials } from '@grpc/grpc-js';
import { Address, CartItem, GetQuoteResponse, ShippingServiceClient } from '../../protos/demo';
const { SHIPPING_ADDR = '' } = process.env;
const client = new ShippingServiceClient(SHIPPING_ADDR, ChannelCredentials.createInsecure());
const ShippingGateway = () => ({
getShippingCost(itemList: CartItem[], address: Address) {
return new Promise<GetQuoteResponse>((resolve, reject) =>
client.getQuote({ items: itemList, address: address }, (error, response) =>
error ? reject(error) : resolve(response)
)
);
},
});
export default ShippingGateway();