2 Object.defineProperty(exports, "__esModule", { value: true });
3 const constants_1 = require("./constants");
4 const filter_1 = require("./filter");
5 class MetadataStatusFilter extends filter_1.BaseFilter {
6 async receiveTrailers(status) {
7 // tslint:disable-next-line:prefer-const
8 let { code, details, metadata } = await status;
9 if (code !== constants_1.Status.UNKNOWN) {
10 // we already have a known status, so don't assign a new one.
11 return { code, details, metadata };
13 const metadataMap = metadata.getMap();
14 if (typeof metadataMap['grpc-status'] === 'string') {
15 const receivedCode = Number(metadataMap['grpc-status']);
16 if (receivedCode in constants_1.Status) {
19 metadata.remove('grpc-status');
21 if (typeof metadataMap['grpc-message'] === 'string') {
22 details = decodeURI(metadataMap['grpc-message']);
23 metadata.remove('grpc-message');
25 return { code, details, metadata };
28 exports.MetadataStatusFilter = MetadataStatusFilter;
29 class MetadataStatusFilterFactory {
30 constructor(channel) {
31 this.channel = channel;
33 createFilter(callStream) {
34 return new MetadataStatusFilter();
37 exports.MetadataStatusFilterFactory = MetadataStatusFilterFactory;
38 //# sourceMappingURL=metadata-status-filter.js.map