errors.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package httperrors
  15. import (
  16. "yunion.io/x/pkg/errors"
  17. "yunion.io/x/pkg/util/httputils"
  18. )
  19. func NewBadGatewayError(msg string, params ...interface{}) *httputils.JSONClientError {
  20. return httputils.NewJsonClientError(httpErrorCode[ErrBadGateway], string(ErrBadGateway), msg, params...)
  21. }
  22. func NewNotImplementedError(msg string, params ...interface{}) *httputils.JSONClientError {
  23. return httputils.NewJsonClientError(httpErrorCode[ErrNotImplemented], string(ErrNotImplemented), msg, params...)
  24. }
  25. func NewInternalServerError(format string, params ...interface{}) *httputils.JSONClientError {
  26. return httputils.NewJsonClientError(httpErrorCode[ErrInternalError], string(ErrInternalError), format, params...)
  27. }
  28. func NewResourceNotReadyError(msg string, params ...interface{}) *httputils.JSONClientError {
  29. return httputils.NewJsonClientError(httpErrorCode[ErrResourceNotReady], string(ErrResourceNotReady), msg, params...)
  30. }
  31. func NewOutOfResourceError(msg string, params ...interface{}) *httputils.JSONClientError {
  32. return httputils.NewJsonClientError(httpErrorCode[ErrOutOfResource], string(ErrOutOfResource), msg, params...)
  33. }
  34. func NewServerStatusError(msg string, params ...interface{}) *httputils.JSONClientError {
  35. return httputils.NewJsonClientError(httpErrorCode[ErrServerStatus], string(ErrServerStatus), msg, params...)
  36. }
  37. func NewPaymentError(msg string, params ...interface{}) *httputils.JSONClientError {
  38. return httputils.NewJsonClientError(httpErrorCode[ErrPayment], string(ErrPayment), msg, params...)
  39. }
  40. func NewImageNotFoundError(imageId string) *httputils.JSONClientError {
  41. return httputils.NewJsonClientError(httpErrorCode[ErrImageNotFound], string(ErrImageNotFound), "Image %s not found", imageId)
  42. }
  43. func NewResourceNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
  44. return httputils.NewJsonClientError(httpErrorCode[ErrResourceNotFound], string(ErrResourceNotFound), msg, params...)
  45. }
  46. func NewResourceNotFoundError2(keyword, id string) *httputils.JSONClientError {
  47. return NewResourceNotFoundError("%s %s not found", keyword, id)
  48. }
  49. func NewSpecNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
  50. return httputils.NewJsonClientError(httpErrorCode[ErrSpecNotFound], string(ErrSpecNotFound), msg, params...)
  51. }
  52. func NewActionNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
  53. return httputils.NewJsonClientError(httpErrorCode[ErrActionNotFound], string(ErrActionNotFound), msg, params...)
  54. }
  55. func NewTenantNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
  56. return httputils.NewJsonClientError(httpErrorCode[ErrTenantNotFound], string(ErrTenantNotFound), msg, params...)
  57. }
  58. func NewUserNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
  59. return httputils.NewJsonClientError(httpErrorCode[ErrUserNotFound], string(ErrUserNotFound), msg, params...)
  60. }
  61. func NewInvalidStatusError(format string, params ...interface{}) *httputils.JSONClientError {
  62. return httputils.NewJsonClientError(httpErrorCode[ErrInvalidStatus], string(ErrInvalidStatus), format, params...)
  63. }
  64. func NewInputParameterError(msg string, params ...interface{}) *httputils.JSONClientError {
  65. return httputils.NewJsonClientError(httpErrorCode[ErrInputParameter], string(ErrInputParameter), msg, params...)
  66. }
  67. func NewWeakPasswordError() *httputils.JSONClientError {
  68. msg := ("password must be 12 chars of at least one digit, letter, uppercase letter and punctuate")
  69. return httputils.NewJsonClientError(httpErrorCode[ErrWeakPassword], string(ErrWeakPassword), "%s", msg)
  70. }
  71. func NewMissingParameterError(paramName string) *httputils.JSONClientError {
  72. msg := "Missing parameter %s"
  73. return httputils.NewJsonClientError(httpErrorCode[ErrMissingParameter], string(ErrMissingParameter), msg, paramName)
  74. }
  75. func NewPolicyDefinitionError(msg string, params ...interface{}) *httputils.JSONClientError {
  76. return httputils.NewJsonClientError(httpErrorCode[ErrPolicyDefinition], string(ErrPolicyDefinition), msg, params...)
  77. }
  78. func NewInsufficientResourceError(msg string, params ...interface{}) *httputils.JSONClientError {
  79. return httputils.NewJsonClientError(httpErrorCode[ErrInsufficientResource], string(ErrInsufficientResource), msg, params...)
  80. }
  81. func NewOutOfQuotaError(msg string, params ...interface{}) *httputils.JSONClientError {
  82. return httputils.NewJsonClientError(httpErrorCode[ErrOutOfQuota], string(ErrOutOfQuota), msg, params...)
  83. }
  84. func NewOutOfRangeError(msg string, params ...interface{}) *httputils.JSONClientError {
  85. return httputils.NewJsonClientError(httpErrorCode[ErrOutOfRange], string(ErrOutOfRange), msg, params...)
  86. }
  87. func NewOutOfLimitError(msg string, params ...interface{}) *httputils.JSONClientError {
  88. return httputils.NewJsonClientError(httpErrorCode[ErrOutOfLimit], string(ErrOutOfLimit), msg, params...)
  89. }
  90. func NewNotSufficientPrivilegeError(msg string, params ...interface{}) *httputils.JSONClientError {
  91. return httputils.NewJsonClientError(httpErrorCode[ErrNotSufficientPrivilege], string(ErrNotSufficientPrivilege), msg, params...)
  92. }
  93. func NewUnsupportOperationError(msg string, params ...interface{}) *httputils.JSONClientError {
  94. return httputils.NewJsonClientError(httpErrorCode[ErrUnsupportedOperation], string(ErrUnsupportedOperation), msg, params...)
  95. }
  96. func NewNotSupportedError(msg string, params ...interface{}) *httputils.JSONClientError {
  97. return httputils.NewJsonClientError(httpErrorCode[ErrNotSupported], string(ErrNotSupported), msg, params...)
  98. }
  99. func NewNotEmptyError(msg string, params ...interface{}) *httputils.JSONClientError {
  100. return httputils.NewJsonClientError(httpErrorCode[ErrNotEmpty], string(ErrNotEmpty), msg, params...)
  101. }
  102. func NewBadRequestError(format string, params ...interface{}) *httputils.JSONClientError {
  103. return httputils.NewJsonClientError(httpErrorCode[ErrBadRequest], string(ErrBadRequest), format, params...)
  104. }
  105. func NewUnauthorizedError(msg string, params ...interface{}) *httputils.JSONClientError {
  106. return httputils.NewJsonClientError(httpErrorCode[ErrUnauthorized], string(ErrUnauthorized), msg, params...)
  107. }
  108. func NewInvalidCredentialError(format string, params ...interface{}) *httputils.JSONClientError {
  109. return httputils.NewJsonClientError(httpErrorCode[ErrInvalidCredential], string(ErrInvalidCredential), format, params...)
  110. }
  111. func NewForbiddenError(msg string, params ...interface{}) *httputils.JSONClientError {
  112. return httputils.NewJsonClientError(httpErrorCode[ErrForbidden], string(ErrForbidden), msg, params...)
  113. }
  114. func NewNotFoundError(msg string, params ...interface{}) *httputils.JSONClientError {
  115. return httputils.NewJsonClientError(httpErrorCode[ErrNotFound], string(ErrNotFound), msg, params...)
  116. }
  117. func NewNotAcceptableError(msg string, params ...interface{}) *httputils.JSONClientError {
  118. return httputils.NewJsonClientError(httpErrorCode[ErrNotAcceptable], string(ErrNotAcceptable), msg, params...)
  119. }
  120. func NewDuplicateNameError(resName string, resId string) *httputils.JSONClientError {
  121. msg := "Duplicate name %s %s"
  122. return httputils.NewJsonClientError(httpErrorCode[ErrDuplicateName], string(ErrDuplicateName), msg, resName, resId)
  123. }
  124. func NewDuplicateIdError(resName string, resId string) *httputils.JSONClientError {
  125. msg := "Duplicate ID %s %s"
  126. return httputils.NewJsonClientError(httpErrorCode[ErrDuplicateId], string(ErrDuplicateId), msg, resName, resId)
  127. }
  128. func NewDuplicateResourceError(msg string, params ...interface{}) *httputils.JSONClientError {
  129. return httputils.NewJsonClientError(httpErrorCode[ErrDuplicateResource], string(ErrDuplicateResource), msg, params...)
  130. }
  131. func NewConflictError(msg string, params ...interface{}) *httputils.JSONClientError {
  132. return httputils.NewJsonClientError(httpErrorCode[ErrConflict], string(ErrConflict), msg, params...)
  133. }
  134. func NewResourceBusyError(msg string, params ...interface{}) *httputils.JSONClientError {
  135. return httputils.NewJsonClientError(httpErrorCode[ErrResourceBusy], string(ErrResourceBusy), msg, params...)
  136. }
  137. func NewRequireLicenseError(msg string, params ...interface{}) *httputils.JSONClientError {
  138. return httputils.NewJsonClientError(httpErrorCode[ErrRequireLicense], string(ErrRequireLicense), msg, params...)
  139. }
  140. func NewTimeoutError(msg string, params ...interface{}) *httputils.JSONClientError {
  141. return httputils.NewJsonClientError(httpErrorCode[ErrTimeout], string(ErrTimeout), msg, params...)
  142. }
  143. func NewProtectedResourceError(msg string, params ...interface{}) *httputils.JSONClientError {
  144. return httputils.NewJsonClientError(httpErrorCode[ErrProtectedResource], string(ErrProtectedResource), msg, params...)
  145. }
  146. func NewNoProjectError(msg string, params ...interface{}) *httputils.JSONClientError {
  147. return httputils.NewJsonClientError(httpErrorCode[ErrNoProject], string(ErrNoProject), msg, params...)
  148. }
  149. func NewServerError(msg string, params ...interface{}) *httputils.JSONClientError {
  150. return httputils.NewJsonClientError(httpErrorCode[errors.ErrServer], string(errors.ErrServer), msg, params...)
  151. }
  152. func NewClientError(msg string, params ...interface{}) *httputils.JSONClientError {
  153. return httputils.NewJsonClientError(httpErrorCode[errors.ErrClient], string(errors.ErrClient), msg, params...)
  154. }
  155. func NewUnclassifiedError(msg string, params ...interface{}) *httputils.JSONClientError {
  156. return httputils.NewJsonClientError(httpErrorCode[errors.ErrUnclassified], string(errors.ErrUnclassified), msg, params...)
  157. }
  158. func NewTooLargeEntityError(msg string, params ...interface{}) *httputils.JSONClientError {
  159. return httputils.NewJsonClientError(httpErrorCode[ErrTooLarge], string(ErrTooLarge), msg, params...)
  160. }
  161. func NewTooManyRequestsError(msg string, params ...interface{}) *httputils.JSONClientError {
  162. return httputils.NewJsonClientError(httpErrorCode[ErrTooManyRequests], string(ErrTooManyRequests), msg, params...)
  163. }
  164. func NewServiceAbnormalError(msg string, params ...interface{}) *httputils.JSONClientError {
  165. return httputils.NewJsonClientError(httpErrorCode[ErrServiceAbnormal], string(ErrServiceAbnormal), msg, params...)
  166. }
  167. func NewJsonClientError(err errors.Error, msg string, params ...interface{}) *httputils.JSONClientError {
  168. code, ok := httpErrorCode[err]
  169. if !ok {
  170. code = 500
  171. }
  172. return httputils.NewJsonClientError(code, string(err), msg, params...)
  173. }