1919package application
2020
2121import (
22- "encoding/json"
2322 "net/http"
2423
2524 "github.com/asgardeo/thunder/internal/application/model"
2625 oauth2const "github.com/asgardeo/thunder/internal/oauth/oauth2/constants"
27- serverconst "github.com/asgardeo/thunder/internal/system/constants"
2826 "github.com/asgardeo/thunder/internal/system/error/apierror"
2927 "github.com/asgardeo/thunder/internal/system/error/serviceerror"
3028 "github.com/asgardeo/thunder/internal/system/log"
@@ -48,18 +46,12 @@ func (ah *applicationHandler) HandleApplicationPostRequest(w http.ResponseWriter
4846
4947 appRequest , err := sysutils.DecodeJSONBody [model.ApplicationRequest ](r )
5048 if err != nil {
51- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
52- w .WriteHeader (http .StatusBadRequest )
53-
5449 errResp := apierror.ErrorResponse {
5550 Code : ErrorInvalidRequestFormat .Code ,
5651 Message : ErrorInvalidRequestFormat .Error ,
5752 Description : ErrorInvalidRequestFormat .ErrorDescription ,
5853 }
59- if encodeErr := json .NewEncoder (w ).Encode (errResp ); encodeErr != nil {
60- logger .Error ("Error encoding error response" , log .Error (encodeErr ))
61- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
62- }
54+ sysutils .WriteErrorResponse (w , http .StatusBadRequest , errResp )
6355 return
6456 }
6557
@@ -110,30 +102,17 @@ func (ah *applicationHandler) HandleApplicationPostRequest(w http.ResponseWriter
110102 if len (createdAppDTO .InboundAuthConfig ) > 0 {
111103 success := ah .processInboundAuthConfig (logger , createdAppDTO , & returnApp )
112104 if ! success {
113- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
114- w .WriteHeader (http .StatusInternalServerError )
115-
116105 errResp := apierror.ErrorResponse {
117106 Code : ErrorInternalServerError .Code ,
118107 Message : ErrorInternalServerError .Error ,
119108 Description : ErrorInternalServerError .ErrorDescription ,
120109 }
121- if encodeErr := json .NewEncoder (w ).Encode (errResp ); encodeErr != nil {
122- logger .Error ("Error encoding error response" , log .Error (encodeErr ))
123- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
124- }
110+ sysutils .WriteErrorResponse (w , http .StatusInternalServerError , errResp )
125111 return
126112 }
127113 }
128114
129- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
130- w .WriteHeader (http .StatusCreated )
131-
132- if encodeErr := json .NewEncoder (w ).Encode (returnApp ); encodeErr != nil {
133- logger .Error ("Error encoding response" , log .Error (encodeErr ))
134- http .Error (w , "Failed to encode response" , http .StatusInternalServerError )
135- return
136- }
115+ sysutils .WriteSuccessResponse (w , http .StatusCreated , returnApp )
137116}
138117
139118// HandleApplicationListRequest handles the application request.
@@ -146,14 +125,7 @@ func (ah *applicationHandler) HandleApplicationListRequest(w http.ResponseWriter
146125 return
147126 }
148127
149- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
150- w .WriteHeader (http .StatusOK )
151-
152- if encodeErr := json .NewEncoder (w ).Encode (listResponse ); encodeErr != nil {
153- logger .Error ("Error encoding response" , log .Error (encodeErr ))
154- http .Error (w , "Failed to encode response" , http .StatusInternalServerError )
155- return
156- }
128+ sysutils .WriteSuccessResponse (w , http .StatusOK , listResponse )
157129}
158130
159131// HandleApplicationGetRequest handles the application request.
@@ -162,18 +134,12 @@ func (ah *applicationHandler) HandleApplicationGetRequest(w http.ResponseWriter,
162134
163135 id := r .PathValue ("id" )
164136 if id == "" {
165- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
166- w .WriteHeader (http .StatusBadRequest )
167-
168137 errResp := apierror.ErrorResponse {
169138 Code : ErrorInvalidApplicationID .Code ,
170139 Message : ErrorInvalidApplicationID .Error ,
171140 Description : ErrorInvalidApplicationID .ErrorDescription ,
172141 }
173- if encodeErr := json .NewEncoder (w ).Encode (errResp ); encodeErr != nil {
174- logger .Error ("Error encoding error response" , log .Error (encodeErr ))
175- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
176- }
142+ sysutils .WriteErrorResponse (w , http .StatusBadRequest , errResp )
177143 return
178144 }
179145
@@ -207,37 +173,25 @@ func (ah *applicationHandler) HandleApplicationGetRequest(w http.ResponseWriter,
207173 logger .Error ("Unsupported inbound authentication type returned" ,
208174 log .String ("type" , string (appDTO .InboundAuthConfig [0 ].Type )))
209175
210- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
211- w .WriteHeader (http .StatusInternalServerError )
212-
213176 errResp := apierror.ErrorResponse {
214177 Code : ErrorInternalServerError .Code ,
215178 Message : ErrorInternalServerError .Error ,
216179 Description : ErrorInternalServerError .ErrorDescription ,
217180 }
218- if encodeErr := json .NewEncoder (w ).Encode (errResp ); encodeErr != nil {
219- logger .Error ("Error encoding error response" , log .Error (encodeErr ))
220- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
221- }
181+ sysutils .WriteErrorResponse (w , http .StatusInternalServerError , errResp )
222182 return
223183 }
224184
225185 returnInboundAuthConfig := appDTO .InboundAuthConfig [0 ]
226186 if returnInboundAuthConfig .OAuthAppConfig == nil {
227187 logger .Error ("OAuth application configuration is nil" )
228188
229- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
230- w .WriteHeader (http .StatusInternalServerError )
231-
232189 errResp := apierror.ErrorResponse {
233190 Code : ErrorInternalServerError .Code ,
234191 Message : ErrorInternalServerError .Error ,
235192 Description : ErrorInternalServerError .ErrorDescription ,
236193 }
237- if encodeErr := json .NewEncoder (w ).Encode (errResp ); encodeErr != nil {
238- logger .Error ("Error encoding error response" , log .Error (encodeErr ))
239- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
240- }
194+ sysutils .WriteErrorResponse (w , http .StatusInternalServerError , errResp )
241195 return
242196 }
243197
@@ -277,14 +231,7 @@ func (ah *applicationHandler) HandleApplicationGetRequest(w http.ResponseWriter,
277231 returnApp .ClientID = appDTO .InboundAuthConfig [0 ].OAuthAppConfig .ClientID
278232 }
279233
280- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
281- w .WriteHeader (http .StatusOK )
282-
283- if encodeErr := json .NewEncoder (w ).Encode (returnApp ); encodeErr != nil {
284- logger .Error ("Error encoding response" , log .Error (encodeErr ))
285- http .Error (w , "Failed to encode response" , http .StatusInternalServerError )
286- return
287- }
234+ sysutils .WriteSuccessResponse (w , http .StatusOK , returnApp )
288235}
289236
290237// HandleApplicationPutRequest handles the application request.
@@ -293,35 +240,23 @@ func (ah *applicationHandler) HandleApplicationPutRequest(w http.ResponseWriter,
293240
294241 id := r .PathValue ("id" )
295242 if id == "" {
296- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
297- w .WriteHeader (http .StatusBadRequest )
298-
299243 errResp := apierror.ErrorResponse {
300244 Code : ErrorInvalidApplicationID .Code ,
301245 Message : ErrorInvalidApplicationID .Error ,
302246 Description : ErrorInvalidApplicationID .ErrorDescription ,
303247 }
304- if encodeErr := json .NewEncoder (w ).Encode (errResp ); encodeErr != nil {
305- logger .Error ("Error encoding error response" , log .Error (encodeErr ))
306- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
307- }
248+ sysutils .WriteErrorResponse (w , http .StatusBadRequest , errResp )
308249 return
309250 }
310251
311252 appRequest , err := sysutils.DecodeJSONBody [model.ApplicationRequest ](r )
312253 if err != nil {
313- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
314- w .WriteHeader (http .StatusBadRequest )
315-
316254 errResp := apierror.ErrorResponse {
317255 Code : ErrorInvalidRequestFormat .Code ,
318256 Message : ErrorInvalidRequestFormat .Error ,
319257 Description : ErrorInvalidRequestFormat .ErrorDescription ,
320258 }
321- if encodeErr := json .NewEncoder (w ).Encode (errResp ); encodeErr != nil {
322- logger .Error ("Error encoding error response" , log .Error (encodeErr ))
323- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
324- }
259+ sysutils .WriteErrorResponse (w , http .StatusBadRequest , errResp )
325260 return
326261 }
327262
@@ -373,30 +308,17 @@ func (ah *applicationHandler) HandleApplicationPutRequest(w http.ResponseWriter,
373308 if len (updatedAppDTO .InboundAuthConfig ) > 0 {
374309 success := ah .processInboundAuthConfig (logger , updatedAppDTO , & returnApp )
375310 if ! success {
376- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
377- w .WriteHeader (http .StatusInternalServerError )
378-
379311 errResp := apierror.ErrorResponse {
380312 Code : ErrorInternalServerError .Code ,
381313 Message : ErrorInternalServerError .Error ,
382314 Description : ErrorInternalServerError .ErrorDescription ,
383315 }
384- if encodeErr := json .NewEncoder (w ).Encode (errResp ); encodeErr != nil {
385- logger .Error ("Error encoding error response" , log .Error (encodeErr ))
386- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
387- }
316+ sysutils .WriteErrorResponse (w , http .StatusInternalServerError , errResp )
388317 return
389318 }
390319 }
391320
392- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
393- w .WriteHeader (http .StatusOK )
394-
395- if encodeErr := json .NewEncoder (w ).Encode (returnApp ); encodeErr != nil {
396- logger .Error ("Error encoding response" , log .Error (encodeErr ))
397- http .Error (w , "Failed to encode response" , http .StatusInternalServerError )
398- return
399- }
321+ sysutils .WriteSuccessResponse (w , http .StatusOK , returnApp )
400322}
401323
402324// HandleApplicationDeleteRequest handles the application request.
@@ -405,18 +327,12 @@ func (ah *applicationHandler) HandleApplicationDeleteRequest(w http.ResponseWrit
405327
406328 id := r .PathValue ("id" )
407329 if id == "" {
408- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
409- w .WriteHeader (http .StatusBadRequest )
410-
411330 errResp := apierror.ErrorResponse {
412331 Code : ErrorInvalidApplicationID .Code ,
413332 Message : ErrorInvalidApplicationID .Error ,
414333 Description : ErrorInvalidApplicationID .ErrorDescription ,
415334 }
416- if encodeErr := json .NewEncoder (w ).Encode (errResp ); encodeErr != nil {
417- logger .Error ("Error encoding error response" , log .Error (encodeErr ))
418- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
419- }
335+ sysutils .WriteErrorResponse (w , http .StatusBadRequest , errResp )
420336 return
421337 }
422338
@@ -426,7 +342,7 @@ func (ah *applicationHandler) HandleApplicationDeleteRequest(w http.ResponseWrit
426342 return
427343 }
428344
429- w . WriteHeader ( http .StatusNoContent )
345+ sysutils . WriteSuccessResponse ( w , http .StatusNoContent , nil )
430346}
431347
432348// processInboundAuthConfig prepares the response for OAuth app configuration.
@@ -489,8 +405,6 @@ func (ah *applicationHandler) processInboundAuthConfig(logger *log.Logger, appDT
489405// handleError handles service errors and returns appropriate HTTP responses.
490406func (ah * applicationHandler ) handleError (w http.ResponseWriter , logger * log.Logger ,
491407 svcErr * serviceerror.ServiceError ) {
492- w .Header ().Set (serverconst .ContentTypeHeaderName , serverconst .ContentTypeJSON )
493-
494408 errResp := apierror.ErrorResponse {
495409 Code : svcErr .Code ,
496410 Message : svcErr .Error ,
@@ -505,12 +419,8 @@ func (ah *applicationHandler) handleError(w http.ResponseWriter, logger *log.Log
505419 statusCode = http .StatusBadRequest
506420 }
507421 }
508- w .WriteHeader (statusCode )
509422
510- if err := json .NewEncoder (w ).Encode (errResp ); err != nil {
511- logger .Error ("Error encoding error response" , log .Error (err ))
512- http .Error (w , "Failed to encode error response" , http .StatusInternalServerError )
513- }
423+ sysutils .WriteErrorResponse (w , statusCode , errResp )
514424}
515425
516426// processInboundAuthConfigFromRequest processes inbound auth config from request to DTO.
0 commit comments