@@ -119,33 +119,29 @@ internal ReturnType Result<ReturnType>(CoreContext<CoreRequest, CoreResponse> co
119119 {
120120 return default ;
121121 }
122+
122123 throw ResponseError ( context ) ;
123124 }
124- if ( HasEmptyResponse ( context . Response ) )
125- {
126- return default ;
127- }
125+
128126 ResponseType result = ConvertResponse ( context . Response ) ;
129127 result = contextAdder ( result , compatibilityFactory . CreateHttpContext ( context . Request , context . Response ) ) ;
130- if ( result is ReturnType convertedResult )
131- {
132- return convertedResult ;
133- }
128+
134129 if ( returnTypeCreator != null )
135130 {
136131 return returnTypeCreator ( compatibilityFactory . CreateHttpResponse ( context . Response ) , result ) ;
137132 }
138- throw new InvalidOperationException ( $ "Unable to transform { typeof ( ResponseType ) } into { typeof ( ReturnType ) } . ReturnTypeCreator is not provided.") ;
139- }
140133
141- private bool HasEmptyResponse ( CoreResponse response )
142- {
143- var resType = typeof ( ResponseType ) ;
144- if ( resType == typeof ( VoidType ) )
134+ if ( EqualityComparer < ResponseType > . Default . Equals ( result , default ) )
145135 {
146- return true ;
136+ return default ;
147137 }
148- return string . Equals ( response . Body ? . Trim ( ) , string . Empty ) && CoreHelper . IsNullableType ( resType ) ;
138+
139+ if ( result is ReturnType convertedResult )
140+ {
141+ return convertedResult ;
142+ }
143+
144+ throw new InvalidOperationException ( $ "Unable to transform { typeof ( ResponseType ) } into { typeof ( ReturnType ) } . ReturnTypeCreator is not provided.") ;
149145 }
150146
151147 private ApiException ResponseError ( CoreContext < CoreRequest , CoreResponse > context )
@@ -206,6 +202,10 @@ private bool GetDefaultErrorCaseFromErrors(out ErrorCase<Request, Response, Cont
206202
207203 private ResponseType ConvertResponse ( CoreResponse response )
208204 {
205+ if ( HasEmptyResponse ( response ) )
206+ {
207+ return default ;
208+ }
209209 if ( response . RawBody is ResponseType streamResponse )
210210 {
211211 return streamResponse ;
@@ -216,5 +216,15 @@ private ResponseType ConvertResponse(CoreResponse response)
216216 }
217217 return deserializer ( response . Body ) ;
218218 }
219+
220+ private bool HasEmptyResponse ( CoreResponse response )
221+ {
222+ var resType = typeof ( ResponseType ) ;
223+ if ( typeof ( VoidType ) . IsAssignableFrom ( resType ) )
224+ {
225+ return true ;
226+ }
227+ return string . Equals ( response . Body ? . Trim ( ) , string . Empty ) && CoreHelper . IsNullableType ( resType ) ;
228+ }
219229 }
220230}
0 commit comments