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"}) } }