Files
api-bpjs-surkon/handlers/bpjs/responseHandler.go
2025-09-22 10:33:38 +07:00

323 lines
8.9 KiB
Go

package bpjs
import (
sk "bridging-rssa/models/bpjs/surat_kontrol"
"github.com/gin-gonic/gin"
"net/http"
"strconv"
)
func HandleResponse(c *gin.Context, res *sk.Response) {
code, err := strconv.Atoi(res.MetaData.Code)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Invalid status code"})
return
}
// Map status codes ke HTTP status constants
switch code {
// 1xx Informational
case 100:
c.JSON(http.StatusContinue, res.MetaData)
case 101:
c.JSON(http.StatusSwitchingProtocols, res.MetaData)
case 102:
c.JSON(http.StatusProcessing, res.MetaData)
case 103:
c.JSON(http.StatusEarlyHints, res.MetaData)
// 2xx Success
//case 200:
// c.JSON(http.StatusOK, &sk.Response{
// MetaData: sk.MetadataString{
// Code: res.MetaData.Code,
// Message: res.MetaData.Message,
// },
// })
case 200:
c.JSON(http.StatusOK, res.MetaData)
case 201:
c.JSON(http.StatusCreated, res.MetaData)
case 202:
c.JSON(http.StatusAccepted, res.MetaData)
case 203:
c.JSON(http.StatusNonAuthoritativeInfo, res.MetaData)
case 204:
c.JSON(http.StatusNoContent, res.MetaData)
case 205:
c.JSON(http.StatusResetContent, res.MetaData)
case 206:
c.JSON(http.StatusPartialContent, res.MetaData)
case 207:
c.JSON(http.StatusMultiStatus, res.MetaData)
case 208:
c.JSON(http.StatusAlreadyReported, res.MetaData)
case 226:
c.JSON(http.StatusIMUsed, res.MetaData)
// 3xx Redirection
case 300:
c.JSON(http.StatusMultipleChoices, res.MetaData)
case 301:
c.JSON(http.StatusMovedPermanently, res.MetaData)
case 302:
c.JSON(http.StatusFound, res.MetaData)
case 303:
c.JSON(http.StatusSeeOther, res.MetaData)
case 304:
c.JSON(http.StatusNotModified, res.MetaData)
case 305:
c.JSON(http.StatusUseProxy, res.MetaData)
case 307:
c.JSON(http.StatusTemporaryRedirect, res.MetaData)
case 308:
c.JSON(http.StatusPermanentRedirect, res.MetaData)
// 4xx Client Error
case 400:
c.JSON(http.StatusBadRequest, res.MetaData)
case 401:
c.JSON(http.StatusUnauthorized, res.MetaData)
case 402:
c.JSON(http.StatusPaymentRequired, res.MetaData)
case 403:
c.JSON(http.StatusForbidden, res.MetaData)
case 404:
c.JSON(http.StatusNotFound, res.MetaData)
case 405:
c.JSON(http.StatusMethodNotAllowed, res.MetaData)
case 406:
c.JSON(http.StatusNotAcceptable, res.MetaData)
case 407:
c.JSON(http.StatusProxyAuthRequired, res.MetaData)
case 408:
c.JSON(http.StatusRequestTimeout, res.MetaData)
case 409:
c.JSON(http.StatusConflict, res.MetaData)
case 410:
c.JSON(http.StatusGone, res.MetaData)
case 411:
c.JSON(http.StatusLengthRequired, res.MetaData)
case 412:
c.JSON(http.StatusPreconditionFailed, res.MetaData)
case 413:
c.JSON(http.StatusRequestEntityTooLarge, res.MetaData)
case 414:
c.JSON(http.StatusRequestURITooLong, res.MetaData)
case 415:
c.JSON(http.StatusUnsupportedMediaType, res.MetaData)
case 416:
c.JSON(http.StatusRequestedRangeNotSatisfiable, res.MetaData)
case 417:
c.JSON(http.StatusExpectationFailed, res.MetaData)
case 418:
c.JSON(http.StatusTeapot, res.MetaData)
case 421:
c.JSON(http.StatusMisdirectedRequest, res.MetaData)
case 422:
c.JSON(http.StatusUnprocessableEntity, res.MetaData)
case 425:
c.JSON(http.StatusTooEarly, res.MetaData)
case 423:
c.JSON(http.StatusLocked, res.MetaData)
case 424:
c.JSON(http.StatusFailedDependency, res.MetaData)
case 426:
c.JSON(http.StatusUpgradeRequired, res.MetaData)
case 428:
c.JSON(http.StatusPreconditionRequired, res.MetaData)
case 429:
c.JSON(http.StatusTooManyRequests, res.MetaData)
case 431:
c.JSON(http.StatusRequestHeaderFieldsTooLarge, res.MetaData)
case 451:
c.JSON(http.StatusUnavailableForLegalReasons, res.MetaData)
// 5xx Server Error
case 500:
c.JSON(http.StatusInternalServerError, res.MetaData)
case 501:
c.JSON(http.StatusNotImplemented, res.MetaData)
case 502:
c.JSON(http.StatusBadGateway, res.MetaData)
case 503:
c.JSON(http.StatusServiceUnavailable, res.MetaData)
case 504:
c.JSON(http.StatusGatewayTimeout, res.MetaData)
case 505:
c.JSON(http.StatusHTTPVersionNotSupported, res.MetaData)
case 506:
c.JSON(http.StatusVariantAlsoNegotiates, res.MetaData)
case 507:
c.JSON(http.StatusInsufficientStorage, res.MetaData)
case 508:
c.JSON(http.StatusLoopDetected, res.MetaData)
case 510:
c.JSON(http.StatusNotExtended, res.MetaData)
case 511:
c.JSON(http.StatusNetworkAuthenticationRequired, res.MetaData)
// Default case untuk status code yang tidak dikenali
default:
c.JSON(http.StatusInternalServerError, gin.H{"error": "Unknown status code"})
}
}
func HandleResponseSPRI(c *gin.Context, res *sk.Responsespri) {
code, err := strconv.Atoi(res.MetaData.Code)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Invalid status code"})
return
}
// Map status codes ke HTTP status constants
switch code {
// 1xx Informational
case 100:
c.JSON(http.StatusContinue, res.MetaData)
case 101:
c.JSON(http.StatusSwitchingProtocols, res.MetaData)
case 102:
c.JSON(http.StatusProcessing, res.MetaData)
case 103:
c.JSON(http.StatusEarlyHints, res.MetaData)
// 2xx Success
//case 200:
// c.JSON(http.StatusOK, &sk.Response{
// MetaData: sk.MetadataString{
// Code: res.MetaData.Code,
// Message: res.MetaData.Message,
// },
// })
case 200:
c.JSON(http.StatusOK, res.MetaData)
case 201:
c.JSON(http.StatusCreated, res.MetaData)
case 202:
c.JSON(http.StatusAccepted, res.MetaData)
case 203:
c.JSON(http.StatusNonAuthoritativeInfo, res.MetaData)
case 204:
c.JSON(http.StatusNoContent, res.MetaData)
case 205:
c.JSON(http.StatusResetContent, res.MetaData)
case 206:
c.JSON(http.StatusPartialContent, res.MetaData)
case 207:
c.JSON(http.StatusMultiStatus, res.MetaData)
case 208:
c.JSON(http.StatusAlreadyReported, res.MetaData)
case 226:
c.JSON(http.StatusIMUsed, res.MetaData)
// 3xx Redirection
case 300:
c.JSON(http.StatusMultipleChoices, res.MetaData)
case 301:
c.JSON(http.StatusMovedPermanently, res.MetaData)
case 302:
c.JSON(http.StatusFound, res.MetaData)
case 303:
c.JSON(http.StatusSeeOther, res.MetaData)
case 304:
c.JSON(http.StatusNotModified, res.MetaData)
case 305:
c.JSON(http.StatusUseProxy, res.MetaData)
case 307:
c.JSON(http.StatusTemporaryRedirect, res.MetaData)
case 308:
c.JSON(http.StatusPermanentRedirect, res.MetaData)
// 4xx Client Error
case 400:
c.JSON(http.StatusBadRequest, res.MetaData)
case 401:
c.JSON(http.StatusUnauthorized, res.MetaData)
case 402:
c.JSON(http.StatusPaymentRequired, res.MetaData)
case 403:
c.JSON(http.StatusForbidden, res.MetaData)
case 404:
c.JSON(http.StatusNotFound, res.MetaData)
case 405:
c.JSON(http.StatusMethodNotAllowed, res.MetaData)
case 406:
c.JSON(http.StatusNotAcceptable, res.MetaData)
case 407:
c.JSON(http.StatusProxyAuthRequired, res.MetaData)
case 408:
c.JSON(http.StatusRequestTimeout, res.MetaData)
case 409:
c.JSON(http.StatusConflict, res.MetaData)
case 410:
c.JSON(http.StatusGone, res.MetaData)
case 411:
c.JSON(http.StatusLengthRequired, res.MetaData)
case 412:
c.JSON(http.StatusPreconditionFailed, res.MetaData)
case 413:
c.JSON(http.StatusRequestEntityTooLarge, res.MetaData)
case 414:
c.JSON(http.StatusRequestURITooLong, res.MetaData)
case 415:
c.JSON(http.StatusUnsupportedMediaType, res.MetaData)
case 416:
c.JSON(http.StatusRequestedRangeNotSatisfiable, res.MetaData)
case 417:
c.JSON(http.StatusExpectationFailed, res.MetaData)
case 418:
c.JSON(http.StatusTeapot, res.MetaData)
case 421:
c.JSON(http.StatusMisdirectedRequest, res.MetaData)
case 422:
c.JSON(http.StatusUnprocessableEntity, res.MetaData)
case 423:
c.JSON(http.StatusLocked, res.MetaData)
case 424:
c.JSON(http.StatusFailedDependency, res.MetaData)
case 425:
c.JSON(http.StatusTooEarly, res.MetaData)
case 426:
c.JSON(http.StatusUpgradeRequired, res.MetaData)
case 428:
c.JSON(http.StatusPreconditionRequired, res.MetaData)
case 429:
c.JSON(http.StatusTooManyRequests, res.MetaData)
case 431:
c.JSON(http.StatusRequestHeaderFieldsTooLarge, res.MetaData)
case 451:
c.JSON(http.StatusUnavailableForLegalReasons, res.MetaData)
// 5xx Server Error
case 500:
c.JSON(http.StatusInternalServerError, res.MetaData)
case 501:
c.JSON(http.StatusNotImplemented, res.MetaData)
case 502:
c.JSON(http.StatusBadGateway, res.MetaData)
case 503:
c.JSON(http.StatusServiceUnavailable, res.MetaData)
case 504:
c.JSON(http.StatusGatewayTimeout, res.MetaData)
case 505:
c.JSON(http.StatusHTTPVersionNotSupported, res.MetaData)
case 506:
c.JSON(http.StatusVariantAlsoNegotiates, res.MetaData)
case 507:
c.JSON(http.StatusInsufficientStorage, res.MetaData)
case 508:
c.JSON(http.StatusLoopDetected, res.MetaData)
case 510:
c.JSON(http.StatusNotExtended, res.MetaData)
case 511:
c.JSON(http.StatusNetworkAuthenticationRequired, res.MetaData)
// Default case untuk status code yang tidak dikenali
default:
c.JSON(http.StatusInternalServerError, gin.H{"error": "Unknown status code"})
}
}