1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
- //
- // This Source Code Form is subject to the terms of the MIT License.
- // If a copy of the MIT was not distributed with this file,
- // You can obtain one at https://github.com/gogf/gf.
- package ghttp
- import (
- "github.com/gogf/gf/v2/errors/gcode"
- "github.com/gogf/gf/v2/errors/gerror"
- "github.com/gogf/gf/v2/internal/httputil"
- )
- // BuildParams builds the request string for the http client. The `params` can be type of:
- // string/[]byte/map/struct/*struct.
- //
- // The optional parameter `noUrlEncode` specifies whether to ignore the url encoding for the data.
- func BuildParams(params interface{}, noUrlEncode ...bool) (encodedParamStr string) {
- return httputil.BuildParams(params, noUrlEncode...)
- }
- // niceCallFunc calls function `f` with exception capture logic.
- func niceCallFunc(f func()) {
- defer func() {
- if exception := recover(); exception != nil {
- switch exception {
- case exceptionExit, exceptionExitAll:
- return
- default:
- if v, ok := exception.(error); ok && gerror.HasStack(v) {
- // It's already an error that has stack info.
- panic(v)
- }
- // Create a new error with stack info.
- // Note that there's a skip pointing the start stacktrace
- // of the real error point.
- if v, ok := exception.(error); ok {
- if gerror.Code(v) != gcode.CodeNil {
- panic(v)
- } else {
- panic(gerror.WrapCodeSkip(
- gcode.CodeInternalError, 1, v, "exception recovered",
- ))
- }
- } else {
- panic(gerror.NewCodeSkipf(
- gcode.CodeInternalError, 1, "exception recovered: %+v", exception,
- ))
- }
- }
- }
- }()
- f()
- }
|