Skip to content

Commit 2b862f3

Browse files
committed
refactor: comprehensive cleanup to use WriteSuccessResponse and WriteErrorResponse utilities
1 parent b406864 commit 2b862f3

File tree

23 files changed

+201
-963
lines changed

23 files changed

+201
-963
lines changed

backend/internal/application/handler.go

Lines changed: 15 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@
1919
package application
2020

2121
import (
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.
490406
func (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

Comments
 (0)