@@ -18,6 +18,7 @@ import { Logger } from "../../../logger/Logger";
18
18
import * as SerializerUtil from "../../../utils/Serializer.util" ;
19
19
import { KeyValueType } from "../../../types/KeyValue.type" ;
20
20
import { createGRPCMetadata } from "../../../utils/Client.util" ;
21
+ import { PubSubPublishResponseType } from "../../../types/pubsub/PubSubPublishResponse.type" ;
21
22
22
23
// https://docs.dapr.io/reference/api/pubsub_api/
23
24
export default class GRPCClientPubSub implements IClientPubSub {
@@ -30,12 +31,21 @@ export default class GRPCClientPubSub implements IClientPubSub {
30
31
this . logger = new Logger ( "GRPCClient" , "PubSub" , client . getOptions ( ) . logger ) ;
31
32
}
32
33
33
- // @todo : should return a specific typed Promise<TypePubSubPublishResponse> instead of Promise<any>
34
- async publish ( pubSubName : string , topic : string , data : object = { } , metadata ?: KeyValueType ) : Promise < boolean > {
34
+ async publish (
35
+ pubSubName : string ,
36
+ topic : string ,
37
+ data : object | string ,
38
+ metadata ?: KeyValueType ,
39
+ ) : Promise < PubSubPublishResponseType > {
35
40
const msgService = new PublishEventRequest ( ) ;
36
41
msgService . setPubsubName ( pubSubName ) ;
37
42
msgService . setTopic ( topic ) ;
38
- msgService . setData ( SerializerUtil . serializeGrpc ( data ) . serializedData ) ;
43
+
44
+ if ( data ) {
45
+ const serialized = SerializerUtil . serializeGrpc ( data ) ;
46
+ msgService . setData ( serialized . serializedData ) ;
47
+ msgService . setDataContentType ( serialized . contentType ) ;
48
+ }
39
49
40
50
const client = await this . client . getClient ( ) ;
41
51
const grpcMetadata = createGRPCMetadata ( metadata ) ;
@@ -44,11 +54,10 @@ export default class GRPCClientPubSub implements IClientPubSub {
44
54
client . publishEvent ( msgService , grpcMetadata , ( err , _res ) => {
45
55
if ( err ) {
46
56
this . logger . error ( `publish failed: ${ err } ` ) ;
47
- return reject ( false ) ;
57
+ return reject ( { error : err } ) ;
48
58
}
49
59
50
- // https://docs.dapr.io/reference/api/pubsub_api/#expected-http-response
51
- return resolve ( true ) ;
60
+ return resolve ( { } ) ;
52
61
} ) ;
53
62
} ) ;
54
63
}
0 commit comments