@@ -22,6 +22,7 @@ import BufferSerializer from "../../../actors/runtime/BufferSerializer";
22
22
import { DaprClient } from "../../.." ;
23
23
import { Logger } from "../../../logger/Logger" ;
24
24
import { getRegisteredActorResponse } from "../../../utils/Actors.util" ;
25
+ import HttpStatusCode from "../../../enum/HttpStatusCode.enum" ;
25
26
26
27
// https://docs.dapr.io/reference/api/bindings_api/
27
28
export default class HTTPServerActor implements IServerActor {
@@ -88,6 +89,7 @@ export default class HTTPServerActor implements IServerActor {
88
89
private async handlerDeactivate ( req : IRequest , res : IResponse ) : Promise < IResponse > {
89
90
const { actorTypeName, actorId } = req . params ;
90
91
const result = await ActorRuntime . getInstance ( this . client . getDaprClient ( ) ) . deactivate ( actorTypeName , actorId ) ;
92
+ res . statusCode = HttpStatusCode . OK ;
91
93
return this . handleResult ( res , result ) ;
92
94
}
93
95
@@ -98,13 +100,21 @@ export default class HTTPServerActor implements IServerActor {
98
100
// @todo : reentrancy id? (https://github.com/dapr/python-sdk/blob/master/ext/flask_dapr/flask_dapr/actor.py#L91)
99
101
100
102
const dataSerialized = this . serializer . serialize ( body ) ;
101
- const result = await ActorRuntime . getInstance ( this . client . getDaprClient ( ) ) . invoke (
102
- actorTypeName ,
103
- actorId ,
104
- methodName ,
105
- dataSerialized ,
106
- ) ;
107
- return this . handleResult ( res , result ) ;
103
+ try {
104
+ const result = await ActorRuntime . getInstance ( this . client . getDaprClient ( ) ) . invoke (
105
+ actorTypeName ,
106
+ actorId ,
107
+ methodName ,
108
+ dataSerialized ,
109
+ ) ;
110
+ res . statusCode = HttpStatusCode . OK ;
111
+ return this . handleResult ( res , result ) ;
112
+ } catch ( err ) {
113
+ if ( err instanceof Error ) {
114
+ res . statusCode = HttpStatusCode . INTERNAL_SERVER_ERROR ;
115
+ }
116
+ return this . handleResult ( res , err ) ;
117
+ }
108
118
}
109
119
110
120
private async handlerTimer ( req : IRequest , res : IResponse ) : Promise < IResponse > {
@@ -137,10 +147,9 @@ export default class HTTPServerActor implements IServerActor {
137
147
138
148
private handleResult ( res : IResponse , result : any ) {
139
149
if ( result && typeof result === "object" ) {
140
- return res . status ( 200 ) . send ( result ) ;
150
+ return res . status ( res . statusCode ) . send ( result ) ;
141
151
} else {
142
- // @ts -ignore
143
- return res . status ( 200 ) . send ( `${ result } ` ) ;
152
+ return res . status ( res . statusCode ) . send ( `${ result } ` ) ;
144
153
}
145
154
}
146
155
}
0 commit comments