Add an abstract json layout to make it's easier to change json library (#16528)

* Add an abstract json layout to make it's easier to change json library

* Fix import

* Fix import sequence

* Fix blank lines

* Fix blank lines
pull/16538/head
Lunny Xiao 3 years ago committed by GitHub
parent e0f9635c06
commit 9f31f3aa8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      build/generate-emoji.go
  2. 3
      cmd/dump.go
  3. 3
      cmd/serv.go
  4. 3
      integrations/api_admin_test.go
  5. 4
      integrations/api_helper_for_declarative_test.go
  6. 4
      integrations/api_pull_review_test.go
  7. 3
      integrations/api_repo_lfs_test.go
  8. 3
      integrations/create_no_session_test.go
  9. 4
      integrations/integration_test.go
  10. 4
      integrations/lfs_getobject_test.go
  11. 6
      integrations/oauth_test.go
  12. 3
      integrations/repo_commits_test.go
  13. 3
      integrations/testlogger.go
  14. 3
      models/helper.go
  15. 4
      models/issue_comment.go
  16. 3
      models/migrations/testlogger_test.go
  17. 3
      models/migrations/v130.go
  18. 3
      models/migrations/v180.go
  19. 6
      models/migrations/v189.go
  20. 7
      models/migrations/v189_test.go
  21. 7
      models/repo_unit.go
  22. 5
      models/task.go
  23. 4
      models/user_heatmap_test.go
  24. 7
      models/webhook.go
  25. 3
      models/webhook_test.go
  26. 4
      modules/cache/cache_twoqueue.go
  27. 3
      modules/context/context.go
  28. 4
      modules/eventsource/event.go
  29. 3
      modules/httplib/httplib.go
  30. 3
      modules/indexer/code/elastic_search.go
  31. 142
      modules/json/json.go
  32. 7
      modules/lfs/http_client.go
  33. 9
      modules/lfs/http_client_test.go
  34. 7
      modules/lfs/transferadapter.go
  35. 7
      modules/lfs/transferadapter_test.go
  36. 3
      modules/log/conn.go
  37. 3
      modules/log/console.go
  38. 3
      modules/log/file.go
  39. 3
      modules/log/level.go
  40. 4
      modules/log/level_test.go
  41. 3
      modules/log/smtp.go
  42. 4
      modules/notification/action/action.go
  43. 5
      modules/private/hook.go
  44. 3
      modules/private/internal.go
  45. 3
      modules/private/mail.go
  46. 4
      modules/private/manager.go
  47. 3
      modules/private/restore_repo.go
  48. 5
      modules/private/serv.go
  49. 7
      modules/queue/helper.go
  50. 3
      modules/queue/manager.go
  51. 4
      modules/queue/queue_bytefifo.go
  52. 5
      modules/queue/queue_test.go
  53. 4
      modules/queue/setting.go
  54. 4
      modules/recaptcha/recaptcha.go
  55. 4
      modules/session/virtual.go
  56. 5
      modules/setting/log.go
  57. 4
      modules/setting/session.go
  58. 3
      modules/setting/setting.go
  59. 4
      modules/setting/setting_test.go
  60. 5
      modules/storage/helper.go
  61. 13
      modules/structs/hook.go
  62. 3
      modules/structs/user.go
  63. 3
      modules/task/migrate.go
  64. 4
      modules/task/task.go
  65. 7
      modules/templates/helper.go
  66. 4
      routers/api/v1/utils/hook.go
  67. 4
      routers/private/mail.go
  68. 3
      routers/private/manager.go
  69. 3
      routers/private/restore_repo.go
  70. 3
      routers/web/admin/admin.go
  71. 3
      routers/web/events/events.go
  72. 3
      routers/web/repo/editor.go
  73. 12
      routers/web/repo/webhook.go
  74. 3
      routers/web/user/home.go
  75. 4
      routers/web/user/oauth.go
  76. 3
      routers/web/user/task.go
  77. 4
      services/auth/source/ldap/source.go
  78. 4
      services/auth/source/oauth2/source.go
  79. 4
      services/auth/source/pam/source.go
  80. 4
      services/auth/source/smtp/source.go
  81. 3
      services/auth/source/sspi/source.go
  82. 5
      services/gitdiff/gitdiff_test.go
  83. 6
      services/lfs/locks.go
  84. 8
      services/lfs/server.go
  85. 3
      services/pull/pull.go
  86. 3
      services/webhook/dingtalk.go
  87. 5
      services/webhook/discord.go
  88. 3
      services/webhook/feishu.go
  89. 6
      services/webhook/matrix.go
  90. 3
      services/webhook/msteams.go
  91. 5
      services/webhook/slack.go
  92. 4
      services/webhook/telegram.go
  93. 2
      services/webhook/wechatwork.go

@ -20,7 +20,7 @@ import (
"strings" "strings"
"unicode/utf8" "unicode/utf8"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
const ( const (
@ -51,7 +51,6 @@ func (e Emoji) MarshalJSON() ([]byte, error) {
x.UnicodeVersion = "" x.UnicodeVersion = ""
x.Description = "" x.Description = ""
x.SkinTones = false x.SkinTones = false
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(x) return json.Marshal(x)
} }
@ -103,7 +102,6 @@ func generate() ([]byte, error) {
// unmarshal // unmarshal
var data Gemoji var data Gemoji
json := jsoniter.ConfigCompatibleWithStandardLibrary
err = json.Unmarshal(body, &data) err = json.Unmarshal(body, &data)
if err != nil { if err != nil {
return nil, err return nil, err

@ -15,13 +15,13 @@ import (
"time" "time"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/storage" "code.gitea.io/gitea/modules/storage"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"gitea.com/go-chi/session" "gitea.com/go-chi/session"
jsoniter "github.com/json-iterator/go"
archiver "github.com/mholt/archiver/v3" archiver "github.com/mholt/archiver/v3"
"github.com/urfave/cli" "github.com/urfave/cli"
) )
@ -306,7 +306,6 @@ func runDump(ctx *cli.Context) error {
var excludes []string var excludes []string
if setting.Cfg.Section("session").Key("PROVIDER").Value() == "file" { if setting.Cfg.Section("session").Key("PROVIDER").Value() == "file" {
var opts session.Options var opts session.Options
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err = json.Unmarshal([]byte(setting.SessionConfig.ProviderConfig), &opts); err != nil { if err = json.Unmarshal([]byte(setting.SessionConfig.ProviderConfig), &opts); err != nil {
return err return err
} }

@ -17,6 +17,7 @@ import (
"time" "time"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/pprof" "code.gitea.io/gitea/modules/pprof"
"code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/private"
@ -24,7 +25,6 @@ import (
"code.gitea.io/gitea/services/lfs" "code.gitea.io/gitea/services/lfs"
"github.com/golang-jwt/jwt" "github.com/golang-jwt/jwt"
jsoniter "github.com/json-iterator/go"
"github.com/kballard/go-shellquote" "github.com/kballard/go-shellquote"
"github.com/urfave/cli" "github.com/urfave/cli"
) )
@ -265,7 +265,6 @@ func runServ(c *cli.Context) error {
} }
tokenAuthentication.Header["Authorization"] = fmt.Sprintf("Bearer %s", tokenString) tokenAuthentication.Header["Authorization"] = fmt.Sprintf("Bearer %s", tokenString)
json := jsoniter.ConfigCompatibleWithStandardLibrary
enc := json.NewEncoder(os.Stdout) enc := json.NewEncoder(os.Stdout)
err = enc.Encode(tokenAuthentication) err = enc.Encode(tokenAuthentication)
if err != nil { if err != nil {

@ -10,9 +10,9 @@ import (
"testing" "testing"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -190,7 +190,6 @@ func TestAPIEditUser(t *testing.T) {
resp := session.MakeRequest(t, req, http.StatusUnprocessableEntity) resp := session.MakeRequest(t, req, http.StatusUnprocessableEntity)
errMap := make(map[string]interface{}) errMap := make(map[string]interface{})
json := jsoniter.ConfigCompatibleWithStandardLibrary
json.Unmarshal(resp.Body.Bytes(), &errMap) json.Unmarshal(resp.Body.Bytes(), &errMap)
assert.EqualValues(t, "email is not allowed to be empty string", errMap["message"].(string)) assert.EqualValues(t, "email is not allowed to be empty string", errMap["message"].(string))

@ -14,11 +14,11 @@ import (
"time" "time"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/queue" "code.gitea.io/gitea/modules/queue"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/services/forms" "code.gitea.io/gitea/services/forms"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -231,7 +231,6 @@ func doAPICreatePullRequest(ctx APITestContext, owner, repo, baseBranch, headBra
} }
resp := ctx.Session.MakeRequest(t, req, expected) resp := ctx.Session.MakeRequest(t, req, expected)
json := jsoniter.ConfigCompatibleWithStandardLibrary
decoder := json.NewDecoder(resp.Body) decoder := json.NewDecoder(resp.Body)
pr := api.PullRequest{} pr := api.PullRequest{}
err := decoder.Decode(&pr) err := decoder.Decode(&pr)
@ -251,7 +250,6 @@ func doAPIGetPullRequest(ctx APITestContext, owner, repo string, index int64) fu
} }
resp := ctx.Session.MakeRequest(t, req, expected) resp := ctx.Session.MakeRequest(t, req, expected)
json := jsoniter.ConfigCompatibleWithStandardLibrary
decoder := json.NewDecoder(resp.Body) decoder := json.NewDecoder(resp.Body)
pr := api.PullRequest{} pr := api.PullRequest{}
err := decoder.Decode(&pr) err := decoder.Decode(&pr)

@ -10,8 +10,9 @@ import (
"testing" "testing"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -189,7 +190,6 @@ func TestAPIPullReview(t *testing.T) {
}) })
resp = session.MakeRequest(t, req, http.StatusUnprocessableEntity) resp = session.MakeRequest(t, req, http.StatusUnprocessableEntity)
errMap := make(map[string]interface{}) errMap := make(map[string]interface{})
json := jsoniter.ConfigCompatibleWithStandardLibrary
json.Unmarshal(resp.Body.Bytes(), &errMap) json.Unmarshal(resp.Body.Bytes(), &errMap)
assert.EqualValues(t, "review event COMMENT requires a body or a comment", errMap["message"].(string)) assert.EqualValues(t, "review event COMMENT requires a body or a comment", errMap["message"].(string))

@ -13,10 +13,10 @@ import (
"testing" "testing"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/lfs" "code.gitea.io/gitea/modules/lfs"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -86,7 +86,6 @@ func TestAPILFSBatch(t *testing.T) {
decodeResponse := func(t *testing.T, b *bytes.Buffer) *lfs.BatchResponse { decodeResponse := func(t *testing.T, b *bytes.Buffer) *lfs.BatchResponse {
var br lfs.BatchResponse var br lfs.BatchResponse
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal(b.Bytes(), &br)) assert.NoError(t, json.Unmarshal(b.Bytes(), &br))
return &br return &br
} }

@ -12,12 +12,12 @@ import (
"path/filepath" "path/filepath"
"testing" "testing"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/routers" "code.gitea.io/gitea/routers"
"gitea.com/go-chi/session" "gitea.com/go-chi/session"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -63,7 +63,6 @@ func TestSessionFileCreation(t *testing.T) {
var config session.Options var config session.Options
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(oldSessionConfig), &config) err := json.Unmarshal([]byte(oldSessionConfig), &config)
assert.NoError(t, err) assert.NoError(t, err)

@ -28,6 +28,7 @@ import (
"code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/queue" "code.gitea.io/gitea/modules/queue"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
@ -37,7 +38,6 @@ import (
"code.gitea.io/gitea/routers" "code.gitea.io/gitea/routers"
"github.com/PuerkitoBio/goquery" "github.com/PuerkitoBio/goquery"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -416,7 +416,6 @@ func NewRequestWithValues(t testing.TB, method, urlStr string, values map[string
func NewRequestWithJSON(t testing.TB, method, urlStr string, v interface{}) *http.Request { func NewRequestWithJSON(t testing.TB, method, urlStr string, v interface{}) *http.Request {
t.Helper() t.Helper()
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonBytes, err := json.Marshal(v) jsonBytes, err := json.Marshal(v)
assert.NoError(t, err) assert.NoError(t, err)
req := NewRequestWithBody(t, method, urlStr, bytes.NewBuffer(jsonBytes)) req := NewRequestWithBody(t, method, urlStr, bytes.NewBuffer(jsonBytes))
@ -508,7 +507,6 @@ func logUnexpectedResponse(t testing.TB, recorder *httptest.ResponseRecorder) {
func DecodeJSON(t testing.TB, resp *httptest.ResponseRecorder, v interface{}) { func DecodeJSON(t testing.TB, resp *httptest.ResponseRecorder, v interface{}) {
t.Helper() t.Helper()
json := jsoniter.ConfigCompatibleWithStandardLibrary
decoder := json.NewDecoder(resp.Body) decoder := json.NewDecoder(resp.Body)
assert.NoError(t, decoder.Decode(v)) assert.NoError(t, decoder.Decode(v))
} }

@ -14,11 +14,11 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/lfs" "code.gitea.io/gitea/modules/lfs"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/routers/web" "code.gitea.io/gitea/routers/web"
jsoniter "github.com/json-iterator/go"
gzipp "github.com/klauspost/compress/gzip" gzipp "github.com/klauspost/compress/gzip"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -206,7 +206,7 @@ func TestGetLFSRange(t *testing.T) {
assert.Equal(t, tt.out, resp.Body.String()) assert.Equal(t, tt.out, resp.Body.String())
} else { } else {
var er lfs.ErrorResponse var er lfs.ErrorResponse
err := jsoniter.Unmarshal(resp.Body.Bytes(), &er) err := json.Unmarshal(resp.Body.Bytes(), &er)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, tt.out, er.Message) assert.Equal(t, tt.out, er.Message)
} }

@ -9,9 +9,9 @@ import (
"io/ioutil" "io/ioutil"
"testing" "testing"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -71,7 +71,6 @@ func TestAccessTokenExchange(t *testing.T) {
} }
parsed := new(response) parsed := new(response)
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed)) assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed))
assert.True(t, len(parsed.AccessToken) > 10) assert.True(t, len(parsed.AccessToken) > 10)
assert.True(t, len(parsed.RefreshToken) > 10) assert.True(t, len(parsed.RefreshToken) > 10)
@ -96,7 +95,6 @@ func TestAccessTokenExchangeWithoutPKCE(t *testing.T) {
} }
parsed := new(response) parsed := new(response)
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed)) assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed))
assert.True(t, len(parsed.AccessToken) > 10) assert.True(t, len(parsed.AccessToken) > 10)
assert.True(t, len(parsed.RefreshToken) > 10) assert.True(t, len(parsed.RefreshToken) > 10)
@ -186,7 +184,6 @@ func TestAccessTokenExchangeWithBasicAuth(t *testing.T) {
} }
parsed := new(response) parsed := new(response)
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed)) assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed))
assert.True(t, len(parsed.AccessToken) > 10) assert.True(t, len(parsed.AccessToken) > 10)
assert.True(t, len(parsed.RefreshToken) > 10) assert.True(t, len(parsed.RefreshToken) > 10)
@ -230,7 +227,6 @@ func TestRefreshTokenInvalidation(t *testing.T) {
} }
parsed := new(response) parsed := new(response)
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed)) assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed))
// test without invalidation // test without invalidation

@ -10,10 +10,10 @@ import (
"path" "path"
"testing" "testing"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -86,7 +86,6 @@ func doTestRepoCommitWithStatus(t *testing.T, state string, classes ...string) {
} }
func testRepoCommitsWithStatus(t *testing.T, resp, respOne *httptest.ResponseRecorder, state string) { func testRepoCommitsWithStatus(t *testing.T, resp, respOne *httptest.ResponseRecorder, state string) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
var statuses []*api.CommitStatus var statuses []*api.CommitStatus
assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), &statuses)) assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), &statuses))
var status api.CombinedStatus var status api.CombinedStatus

@ -14,9 +14,9 @@ import (
"testing" "testing"
"time" "time"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/queue" "code.gitea.io/gitea/modules/queue"
jsoniter "github.com/json-iterator/go"
) )
var ( var (
@ -158,7 +158,6 @@ func NewTestLogger() log.LoggerProvider {
// Init inits connection writer with json config. // Init inits connection writer with json config.
// json config only need key "level". // json config only need key "level".
func (log *TestLogger) Init(config string) error { func (log *TestLogger) Init(config string) error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(config), log) err := json.Unmarshal([]byte(config), log)
if err != nil { if err != nil {
return err return err

@ -7,7 +7,7 @@ package models
import ( import (
"encoding/binary" "encoding/binary"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
func keysInt64(m map[int64]struct{}) []int64 { func keysInt64(m map[int64]struct{}) []int64 {
@ -37,7 +37,6 @@ func valuesUser(m map[int64]*User) []*User {
// JSONUnmarshalHandleDoubleEncode - due to a bug in xorm (see https://gitea.com/xorm/xorm/pulls/1957) - it's // JSONUnmarshalHandleDoubleEncode - due to a bug in xorm (see https://gitea.com/xorm/xorm/pulls/1957) - it's
// possible that a Blob may be double encoded or gain an unwanted prefix of 0xff 0xfe. // possible that a Blob may be double encoded or gain an unwanted prefix of 0xff 0xfe.
func JSONUnmarshalHandleDoubleEncode(bs []byte, v interface{}) error { func JSONUnmarshalHandleDoubleEncode(bs []byte, v interface{}) error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal(bs, v) err := json.Unmarshal(bs, v)
if err != nil { if err != nil {
ok := true ok := true

@ -15,13 +15,13 @@ import (
"unicode/utf8" "unicode/utf8"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/markup/markdown"
"code.gitea.io/gitea/modules/references" "code.gitea.io/gitea/modules/references"
"code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
jsoniter "github.com/json-iterator/go"
"xorm.io/builder" "xorm.io/builder"
"xorm.io/xorm" "xorm.io/xorm"
@ -654,7 +654,6 @@ func (c *Comment) LoadPushCommits() (err error) {
var data PushActionContent var data PushActionContent
json := jsoniter.ConfigCompatibleWithStandardLibrary
err = json.Unmarshal([]byte(c.Content), &data) err = json.Unmarshal([]byte(c.Content), &data)
if err != nil { if err != nil {
return return
@ -1249,7 +1248,6 @@ func CreatePushPullComment(pusher *User, pr *PullRequest, oldCommitID, newCommit
ops.Issue = pr.Issue ops.Issue = pr.Issue
json := jsoniter.ConfigCompatibleWithStandardLibrary
dataJSON, err := json.Marshal(data) dataJSON, err := json.Marshal(data)
if err != nil { if err != nil {
return nil, err return nil, err

@ -14,9 +14,9 @@ import (
"testing" "testing"
"time" "time"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/queue" "code.gitea.io/gitea/modules/queue"
jsoniter "github.com/json-iterator/go"
) )
var ( var (
@ -158,7 +158,6 @@ func NewTestLogger() log.LoggerProvider {
// Init inits connection writer with json config. // Init inits connection writer with json config.
// json config only need key "level". // json config only need key "level".
func (log *TestLogger) Init(config string) error { func (log *TestLogger) Init(config string) error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(config), log) err := json.Unmarshal([]byte(config), log)
if err != nil { if err != nil {
return err return err

@ -5,8 +5,8 @@
package migrations package migrations
import ( import (
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
"xorm.io/xorm" "xorm.io/xorm"
) )
@ -70,7 +70,6 @@ func expandWebhooks(x *xorm.Engine) error {
for _, res := range results { for _, res := range results {
var events HookEvent var events HookEvent
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err = json.Unmarshal([]byte(res.Events), &events); err != nil { if err = json.Unmarshal([]byte(res.Events), &events); err != nil {
return err return err
} }

@ -5,9 +5,9 @@
package migrations package migrations
import ( import (
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
jsoniter "github.com/json-iterator/go"
"xorm.io/builder" "xorm.io/builder"
"xorm.io/xorm" "xorm.io/xorm"
) )
@ -105,7 +105,6 @@ func removeCredentials(payload string) (string, error) {
} }
var opts MigrateOptions var opts MigrateOptions
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(payload), &opts) err := json.Unmarshal([]byte(payload), &opts)
if err != nil { if err != nil {
return "", err return "", err

@ -8,13 +8,13 @@ import (
"encoding/binary" "encoding/binary"
"fmt" "fmt"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
"xorm.io/xorm" "xorm.io/xorm"
) )
func unwrapLDAPSourceCfg(x *xorm.Engine) error { func unwrapLDAPSourceCfg(x *xorm.Engine) error {
jsonUnmarshalHandleDoubleEncode := func(bs []byte, v interface{}) error { jsonUnmarshalHandleDoubleEncode := func(bs []byte, v interface{}) error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal(bs, v) err := json.Unmarshal(bs, v)
if err != nil { if err != nil {
ok := true ok := true
@ -84,7 +84,7 @@ func unwrapLDAPSourceCfg(x *xorm.Engine) error {
return fmt.Errorf("failed to unmarshal %s: %w", string(source.Cfg), err) return fmt.Errorf("failed to unmarshal %s: %w", string(source.Cfg), err)
} }
if wrapped.Source != nil && len(wrapped.Source) > 0 { if wrapped.Source != nil && len(wrapped.Source) > 0 {
bs, err := jsoniter.Marshal(wrapped.Source) bs, err := json.Marshal(wrapped.Source)
if err != nil { if err != nil {
return err return err
} }

@ -7,7 +7,8 @@ package migrations
import ( import (
"testing" "testing"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -65,12 +66,12 @@ func Test_unwrapLDAPSourceCfg(t *testing.T) {
converted := map[string]interface{}{} converted := map[string]interface{}{}
expected := map[string]interface{}{} expected := map[string]interface{}{}
if err := jsoniter.Unmarshal([]byte(source.Cfg), &converted); err != nil { if err := json.Unmarshal([]byte(source.Cfg), &converted); err != nil {
assert.NoError(t, err) assert.NoError(t, err)
return return
} }
if err := jsoniter.Unmarshal([]byte(source.Expected), &expected); err != nil { if err := json.Unmarshal([]byte(source.Expected), &expected); err != nil {
assert.NoError(t, err) assert.NoError(t, err)
return return
} }

@ -7,9 +7,9 @@ package models
import ( import (
"fmt" "fmt"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
jsoniter "github.com/json-iterator/go"
"xorm.io/xorm" "xorm.io/xorm"
"xorm.io/xorm/convert" "xorm.io/xorm/convert"
) )
@ -33,7 +33,6 @@ func (cfg *UnitConfig) FromDB(bs []byte) error {
// ToDB exports a UnitConfig to a serialized format. // ToDB exports a UnitConfig to a serialized format.
func (cfg *UnitConfig) ToDB() ([]byte, error) { func (cfg *UnitConfig) ToDB() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(cfg) return json.Marshal(cfg)
} }
@ -49,7 +48,6 @@ func (cfg *ExternalWikiConfig) FromDB(bs []byte) error {
// ToDB exports a ExternalWikiConfig to a serialized format. // ToDB exports a ExternalWikiConfig to a serialized format.
func (cfg *ExternalWikiConfig) ToDB() ([]byte, error) { func (cfg *ExternalWikiConfig) ToDB() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(cfg) return json.Marshal(cfg)
} }
@ -67,7 +65,6 @@ func (cfg *ExternalTrackerConfig) FromDB(bs []byte) error {
// ToDB exports a ExternalTrackerConfig to a serialized format. // ToDB exports a ExternalTrackerConfig to a serialized format.
func (cfg *ExternalTrackerConfig) ToDB() ([]byte, error) { func (cfg *ExternalTrackerConfig) ToDB() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(cfg) return json.Marshal(cfg)
} }
@ -85,7 +82,6 @@ func (cfg *IssuesConfig) FromDB(bs []byte) error {
// ToDB exports a IssuesConfig to a serialized format. // ToDB exports a IssuesConfig to a serialized format.
func (cfg *IssuesConfig) ToDB() ([]byte, error) { func (cfg *IssuesConfig) ToDB() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(cfg) return json.Marshal(cfg)
} }
@ -109,7 +105,6 @@ func (cfg *PullRequestsConfig) FromDB(bs []byte) error {
// ToDB exports a PullRequestsConfig to a serialized format. // ToDB exports a PullRequestsConfig to a serialized format.
func (cfg *PullRequestsConfig) ToDB() ([]byte, error) { func (cfg *PullRequestsConfig) ToDB() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(cfg) return json.Marshal(cfg)
} }

@ -7,13 +7,13 @@ package models
import ( import (
"fmt" "fmt"
"code.gitea.io/gitea/modules/json"
migration "code.gitea.io/gitea/modules/migrations/base" migration "code.gitea.io/gitea/modules/migrations/base"
"code.gitea.io/gitea/modules/secret" "code.gitea.io/gitea/modules/secret"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
jsoniter "github.com/json-iterator/go"
"xorm.io/builder" "xorm.io/builder"
) )
@ -114,7 +114,6 @@ func (task *Task) UpdateCols(cols ...string) error {
func (task *Task) MigrateConfig() (*migration.MigrateOptions, error) { func (task *Task) MigrateConfig() (*migration.MigrateOptions, error) {
if task.Type == structs.TaskTypeMigrateRepo { if task.Type == structs.TaskTypeMigrateRepo {
var opts migration.MigrateOptions var opts migration.MigrateOptions
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(task.PayloadContent), &opts) err := json.Unmarshal([]byte(task.PayloadContent), &opts)
if err != nil { if err != nil {
return nil, err return nil, err
@ -190,7 +189,6 @@ func GetMigratingTaskByID(id, doerID int64) (*Task, *migration.MigrateOptions, e
} }
var opts migration.MigrateOptions var opts migration.MigrateOptions
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(task.PayloadContent), &opts); err != nil { if err := json.Unmarshal([]byte(task.PayloadContent), &opts); err != nil {
return nil, nil, err return nil, nil, err
} }
@ -244,7 +242,6 @@ func FinishMigrateTask(task *Task) error {
conf.AuthPasswordEncrypted = "" conf.AuthPasswordEncrypted = ""
conf.AuthTokenEncrypted = "" conf.AuthTokenEncrypted = ""
conf.CloneAddrEncrypted = "" conf.CloneAddrEncrypted = ""
json := jsoniter.ConfigCompatibleWithStandardLibrary
confBytes, err := json.Marshal(conf) confBytes, err := json.Marshal(conf)
if err != nil { if err != nil {
return err return err

@ -8,7 +8,8 @@ import (
"fmt" "fmt"
"testing" "testing"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -68,7 +69,6 @@ func TestGetUserHeatmapDataByUser(t *testing.T) {
assert.Equal(t, tc.CountResult, contributions, fmt.Sprintf("testcase %d", i)) assert.Equal(t, tc.CountResult, contributions, fmt.Sprintf("testcase %d", i))
// Test JSON rendering // Test JSON rendering
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonData, err := json.Marshal(heatmap) jsonData, err := json.Marshal(heatmap)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, tc.JSONResult, string(jsonData)) assert.Equal(t, tc.JSONResult, string(jsonData))

@ -11,13 +11,13 @@ import (
"strings" "strings"
"time" "time"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
gouuid "github.com/google/uuid" gouuid "github.com/google/uuid"
jsoniter "github.com/json-iterator/go"
) )
// HookContentType is the content type of a web hook // HookContentType is the content type of a web hook
@ -160,8 +160,6 @@ type Webhook struct {
// AfterLoad updates the webhook object upon setting a column // AfterLoad updates the webhook object upon setting a column
func (w *Webhook) AfterLoad() { func (w *Webhook) AfterLoad() {
w.HookEvent = &HookEvent{} w.HookEvent = &HookEvent{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(w.Events), w.HookEvent); err != nil { if err := json.Unmarshal([]byte(w.Events), w.HookEvent); err != nil {
log.Error("Unmarshal[%d]: %v", w.ID, err) log.Error("Unmarshal[%d]: %v", w.ID, err)
} }
@ -174,7 +172,6 @@ func (w *Webhook) History(page int) ([]*HookTask, error) {
// UpdateEvent handles conversion from HookEvent to Events. // UpdateEvent handles conversion from HookEvent to Events.
func (w *Webhook) UpdateEvent() error { func (w *Webhook) UpdateEvent() error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.Marshal(w.HookEvent) data, err := json.Marshal(w.HookEvent)
w.Events = string(data) w.Events = string(data)
return err return err
@ -687,7 +684,6 @@ func (t *HookTask) AfterLoad() {
} }
t.RequestInfo = &HookRequest{} t.RequestInfo = &HookRequest{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(t.RequestContent), t.RequestInfo); err != nil { if err := json.Unmarshal([]byte(t.RequestContent), t.RequestInfo); err != nil {
log.Error("Unmarshal RequestContent[%d]: %v", t.ID, err) log.Error("Unmarshal RequestContent[%d]: %v", t.ID, err)
} }
@ -701,7 +697,6 @@ func (t *HookTask) AfterLoad() {
} }
func (t *HookTask) simpleMarshalJSON(v interface{}) string { func (t *HookTask) simpleMarshalJSON(v interface{}) string {
json := jsoniter.ConfigCompatibleWithStandardLibrary
p, err := json.Marshal(v) p, err := json.Marshal(v)
if err != nil { if err != nil {
log.Error("Marshal [%d]: %v", t.ID, err) log.Error("Marshal [%d]: %v", t.ID, err)

@ -9,9 +9,9 @@ import (
"testing" "testing"
"time" "time"
"code.gitea.io/gitea/modules/json"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -58,7 +58,6 @@ func TestWebhook_UpdateEvent(t *testing.T) {
assert.NoError(t, webhook.UpdateEvent()) assert.NoError(t, webhook.UpdateEvent())
assert.NotEmpty(t, webhook.Events) assert.NotEmpty(t, webhook.Events)
actualHookEvent := &HookEvent{} actualHookEvent := &HookEvent{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal([]byte(webhook.Events), actualHookEvent)) assert.NoError(t, json.Unmarshal([]byte(webhook.Events), actualHookEvent))
assert.Equal(t, *hookEvent, *actualHookEvent) assert.Equal(t, *hookEvent, *actualHookEvent)
} }

@ -9,9 +9,10 @@ import (
"sync" "sync"
"time" "time"
"code.gitea.io/gitea/modules/json"
mc "gitea.com/go-chi/cache" mc "gitea.com/go-chi/cache"
lru "github.com/hashicorp/golang-lru" lru "github.com/hashicorp/golang-lru"
jsoniter "github.com/json-iterator/go"
) )
// TwoQueueCache represents a LRU 2Q cache adapter implementation // TwoQueueCache represents a LRU 2Q cache adapter implementation
@ -177,7 +178,6 @@ func (c *TwoQueueCache) StartAndGC(opts mc.Options) error {
size, err = strconv.Atoi(opts.AdapterConfig) size, err = strconv.Atoi(opts.AdapterConfig)
} }
if err != nil { if err != nil {
json := jsoniter.ConfigCompatibleWithStandardLibrary
if !json.Valid([]byte(opts.AdapterConfig)) { if !json.Valid([]byte(opts.AdapterConfig)) {
return err return err
} }

@ -23,6 +23,7 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/base"
mc "code.gitea.io/gitea/modules/cache" mc "code.gitea.io/gitea/modules/cache"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/templates" "code.gitea.io/gitea/modules/templates"
@ -34,7 +35,6 @@ import (
"gitea.com/go-chi/cache" "gitea.com/go-chi/cache"
"gitea.com/go-chi/session" "gitea.com/go-chi/session"
"github.com/go-chi/chi" "github.com/go-chi/chi"
jsoniter "github.com/json-iterator/go"
"github.com/unknwon/com" "github.com/unknwon/com"
"github.com/unknwon/i18n" "github.com/unknwon/i18n"
"github.com/unrolled/render" "github.com/unrolled/render"
@ -408,7 +408,6 @@ func (ctx *Context) Error(status int, contents ...string) {
func (ctx *Context) JSON(status int, content interface{}) { func (ctx *Context) JSON(status int, content interface{}) {
ctx.Resp.Header().Set("Content-Type", "application/json;charset=utf-8") ctx.Resp.Header().Set("Content-Type", "application/json;charset=utf-8")
ctx.Resp.WriteHeader(status) ctx.Resp.WriteHeader(status)
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.NewEncoder(ctx.Resp).Encode(content); err != nil { if err := json.NewEncoder(ctx.Resp).Encode(content); err != nil {
ctx.ServerError("Render JSON failed", err) ctx.ServerError("Render JSON failed", err)
} }

@ -11,7 +11,7 @@ import (
"strings" "strings"
"time" "time"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
func wrapNewlines(w io.Writer, prefix []byte, value []byte) (sum int64, err error) { func wrapNewlines(w io.Writer, prefix []byte, value []byte) (sum int64, err error) {
@ -80,7 +80,6 @@ func (e *Event) WriteTo(w io.Writer) (int64, error) {
data = []byte(v) data = []byte(v)
default: default:
var err error var err error
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err = json.Marshal(e.Data) data, err = json.Marshal(e.Data)
if err != nil { if err != nil {
return sum, err return sum, err
@ -91,7 +90,6 @@ func (e *Event) WriteTo(w io.Writer) (int64, error) {
if err != nil { if err != nil {
return sum, err return sum, err
} }
} }
n, err = wrapNewlines(w, []byte("id: "), []byte(e.ID)) n, err = wrapNewlines(w, []byte("id: "), []byte(e.ID))

@ -24,7 +24,7 @@ import (
"sync" "sync"
"time" "time"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
var defaultSetting = Settings{false, "GiteaServer", 60 * time.Second, 60 * time.Second, nil, nil, nil, false} var defaultSetting = Settings{false, "GiteaServer", 60 * time.Second, 60 * time.Second, nil, nil, nil, false}
@ -443,7 +443,6 @@ func (r *Request) ToJSON(v interface{}) error {
if err != nil { if err != nil {
return err return err
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
err = json.Unmarshal(data, v) err = json.Unmarshal(data, v)
return err return err
} }

@ -18,13 +18,13 @@ import (
"code.gitea.io/gitea/modules/analyze" "code.gitea.io/gitea/modules/analyze"
"code.gitea.io/gitea/modules/charset" "code.gitea.io/gitea/modules/charset"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/typesniffer" "code.gitea.io/gitea/modules/typesniffer"
"github.com/go-enry/go-enry/v2" "github.com/go-enry/go-enry/v2"
jsoniter "github.com/json-iterator/go"
"github.com/olivere/elastic/v7" "github.com/olivere/elastic/v7"
) )
@ -321,7 +321,6 @@ func convertResult(searchResult *elastic.SearchResult, kw string, pageSize int)
repoID, fileName := parseIndexerID(hit.Id) repoID, fileName := parseIndexerID(hit.Id)
var res = make(map[string]interface{}) var res = make(map[string]interface{})
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal(hit.Source, &res); err != nil { if err := json.Unmarshal(hit.Source, &res); err != nil {
return 0, nil, nil, err return 0, nil, nil, err
} }

@ -0,0 +1,142 @@
// Copyright 2020 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package json
import (
"bytes"
"encoding/json"
"io"
jsoniter "github.com/json-iterator/go"
)
// Encoder represents an encoder for json
type Encoder interface {
Encode(v interface{}) error
}
// Decoder represents a decoder for json
type Decoder interface {
Decode(v interface{}) error
}
// Interface represents an interface to handle json data
type Interface interface {
Marshal(v interface{}) ([]byte, error)
Unmarshal(data []byte, v interface{}) error
NewEncoder(writer io.Writer) Encoder
NewDecoder(reader io.Reader) Decoder
Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error
}
var (
// DefaultJSONHandler default json handler
DefaultJSONHandler Interface = JSONiter{jsoniter.ConfigCompatibleWithStandardLibrary}
_ Interface = StdJSON{}
_ Interface = JSONiter{}
)
// StdJSON implements Interface via encoding/json
type StdJSON struct{}
// Marshal implements Interface
func (StdJSON) Marshal(v interface{}) ([]byte, error) {
return json.Marshal(v)
}
// Unmarshal implements Interface
func (StdJSON) Unmarshal(data []byte, v interface{}) error {
return json.Unmarshal(data, v)
}
// NewEncoder implements Interface
func (StdJSON) NewEncoder(writer io.Writer) Encoder {
return json.NewEncoder(writer)
}
// NewDecoder implements Interface
func (StdJSON) NewDecoder(reader io.Reader) Decoder {
return json.NewDecoder(reader)
}
// Indent implements Interface
func (StdJSON) Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error {
return json.Indent(dst, src, prefix, indent)
}
// JSONiter implements Interface via jsoniter
type JSONiter struct {
jsoniter.API
}
// Marshal implements Interface
func (j JSONiter) Marshal(v interface{}) ([]byte, error) {
return j.API.Marshal(v)
}
// Unmarshal implements Interface
func (j JSONiter) Unmarshal(data []byte, v interface{}) error {
return j.API.Unmarshal(data, v)
}
// NewEncoder implements Interface
func (j JSONiter) NewEncoder(writer io.Writer) Encoder {
return j.API.NewEncoder(writer)
}
// NewDecoder implements Interface
func (j JSONiter) NewDecoder(reader io.Reader) Decoder {
return j.API.NewDecoder(reader)
}
// Indent implements Interface, since jsoniter don't support Indent, just use encoding/json's
func (j JSONiter) Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error {
return json.Indent(dst, src, prefix, indent)
}
// Marshal converts object as bytes
func Marshal(v interface{}) ([]byte, error) {
return DefaultJSONHandler.Marshal(v)
}
// Unmarshal decodes object from bytes
func Unmarshal(data []byte, v interface{}) error {
return DefaultJSONHandler.Unmarshal(data, v)
}
// NewEncoder creates an encoder to write objects to writer
func NewEncoder(writer io.Writer) Encoder {
return DefaultJSONHandler.NewEncoder(writer)
}
// NewDecoder creates a decoder to read objects from reader
func NewDecoder(reader io.Reader) Decoder {
return DefaultJSONHandler.NewDecoder(reader)
}
// Indent appends to dst an indented form of the JSON-encoded src.
func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error {
return DefaultJSONHandler.Indent(dst, src, prefix, indent)
}
// MarshalIndent copied from encoding/json
func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) {
b, err := Marshal(v)
if err != nil {
return nil, err
}
var buf bytes.Buffer
err = Indent(&buf, b, prefix, indent)
if err != nil {
return nil, err
}
return buf.Bytes(), nil
}
// Valid proxy to json.Valid
func Valid(data []byte) bool {
return json.Valid(data)
}

@ -13,9 +13,8 @@ import (
"net/url" "net/url"
"strings" "strings"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
jsoniter "github.com/json-iterator/go"
) )
const batchSize = 20 const batchSize = 20
@ -69,7 +68,7 @@ func (c *HTTPClient) batch(ctx context.Context, operation string, objects []Poin
request := &BatchRequest{operation, c.transferNames(), nil, objects} request := &BatchRequest{operation, c.transferNames(), nil, objects}
payload := new(bytes.Buffer) payload := new(bytes.Buffer)
err := jsoniter.NewEncoder(payload).Encode(request) err := json.NewEncoder(payload).Encode(request)
if err != nil { if err != nil {
log.Error("Error encoding json: %v", err) log.Error("Error encoding json: %v", err)
return nil, err return nil, err
@ -102,7 +101,7 @@ func (c *HTTPClient) batch(ctx context.Context, operation string, objects []Poin
} }
var response BatchResponse var response BatchResponse
err = jsoniter.NewDecoder(res.Body).Decode(&response) err = json.NewDecoder(res.Body).Decode(&response)
if err != nil { if err != nil {
log.Error("Error decoding json: %v", err) log.Error("Error decoding json: %v", err)
return nil, err return nil, err

@ -13,7 +13,8 @@ import (
"strings" "strings"
"testing" "testing"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -146,7 +147,7 @@ func lfsTestRoundtripHandler(req *http.Request) *http.Response {
} }
payload := new(bytes.Buffer) payload := new(bytes.Buffer)
jsoniter.NewEncoder(payload).Encode(batchResponse) json.NewEncoder(payload).Encode(batchResponse)
return &http.Response{StatusCode: http.StatusOK, Body: ioutil.NopCloser(payload)} return &http.Response{StatusCode: http.StatusOK, Body: ioutil.NopCloser(payload)}
} }
@ -160,7 +161,7 @@ func TestHTTPClientDownload(t *testing.T) {
assert.Equal(t, MediaType, req.Header.Get("Accept")) assert.Equal(t, MediaType, req.Header.Get("Accept"))
var batchRequest BatchRequest var batchRequest BatchRequest
err := jsoniter.NewDecoder(req.Body).Decode(&batchRequest) err := json.NewDecoder(req.Body).Decode(&batchRequest)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, "download", batchRequest.Operation) assert.Equal(t, "download", batchRequest.Operation)
@ -267,7 +268,7 @@ func TestHTTPClientUpload(t *testing.T) {
assert.Equal(t, MediaType, req.Header.Get("Accept")) assert.Equal(t, MediaType, req.Header.Get("Accept"))
var batchRequest BatchRequest var batchRequest BatchRequest
err := jsoniter.NewDecoder(req.Body).Decode(&batchRequest) err := json.NewDecoder(req.Body).Decode(&batchRequest)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, "upload", batchRequest.Operation) assert.Equal(t, "upload", batchRequest.Operation)

@ -12,9 +12,8 @@ import (
"io" "io"
"net/http" "net/http"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
jsoniter "github.com/json-iterator/go"
) )
// TransferAdapter represents an adapter for downloading/uploading LFS objects // TransferAdapter represents an adapter for downloading/uploading LFS objects
@ -65,7 +64,7 @@ func (a *BasicTransferAdapter) Upload(ctx context.Context, l *Link, p Pointer, r
// Verify calls the verify handler on the LFS server // Verify calls the verify handler on the LFS server
func (a *BasicTransferAdapter) Verify(ctx context.Context, l *Link, p Pointer) error { func (a *BasicTransferAdapter) Verify(ctx context.Context, l *Link, p Pointer) error {
b, err := jsoniter.Marshal(p) b, err := json.Marshal(p)
if err != nil { if err != nil {
log.Error("Error encoding json: %v", err) log.Error("Error encoding json: %v", err)
return err return err
@ -128,7 +127,7 @@ func handleErrorResponse(resp *http.Response) error {
func decodeReponseError(r io.Reader) (ErrorResponse, error) { func decodeReponseError(r io.Reader) (ErrorResponse, error) {
var er ErrorResponse var er ErrorResponse
err := jsoniter.NewDecoder(r).Decode(&er) err := json.NewDecoder(r).Decode(&er)
if err != nil { if err != nil {
log.Error("Error decoding json: %v", err) log.Error("Error decoding json: %v", err)
} }

@ -13,7 +13,8 @@ import (
"strings" "strings"
"testing" "testing"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -49,7 +50,7 @@ func TestBasicTransferAdapter(t *testing.T) {
assert.Equal(t, MediaType, req.Header.Get("Content-Type")) assert.Equal(t, MediaType, req.Header.Get("Content-Type"))
var vp Pointer var vp Pointer
err := jsoniter.NewDecoder(req.Body).Decode(&vp) err := json.NewDecoder(req.Body).Decode(&vp)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, p.Oid, vp.Oid) assert.Equal(t, p.Oid, vp.Oid)
assert.Equal(t, p.Size, vp.Size) assert.Equal(t, p.Size, vp.Size)
@ -60,7 +61,7 @@ func TestBasicTransferAdapter(t *testing.T) {
Message: "Object not found", Message: "Object not found",
} }
payload := new(bytes.Buffer) payload := new(bytes.Buffer)
jsoniter.NewEncoder(payload).Encode(er) json.NewEncoder(payload).Encode(er)
return &http.Response{StatusCode: http.StatusNotFound, Body: ioutil.NopCloser(payload)} return &http.Response{StatusCode: http.StatusNotFound, Body: ioutil.NopCloser(payload)}
} else { } else {

@ -10,7 +10,7 @@ import (
"io" "io"
"net" "net"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
type connWriter struct { type connWriter struct {
@ -106,7 +106,6 @@ func NewConn() LoggerProvider {
// Init inits connection writer with json config. // Init inits connection writer with json config.
// json config only need key "level". // json config only need key "level".
func (log *ConnLogger) Init(jsonconfig string) error { func (log *ConnLogger) Init(jsonconfig string) error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(jsonconfig), log) err := json.Unmarshal([]byte(jsonconfig), log)
if err != nil { if err != nil {
return fmt.Errorf("Unable to parse JSON: %v", err) return fmt.Errorf("Unable to parse JSON: %v", err)

@ -10,7 +10,7 @@ import (
"io" "io"
"os" "os"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
// CanColorStdout reports if we can color the Stdout // CanColorStdout reports if we can color the Stdout
@ -52,7 +52,6 @@ func NewConsoleLogger() LoggerProvider {
// Init inits connection writer with json config. // Init inits connection writer with json config.
// json config only need key "level". // json config only need key "level".
func (log *ConsoleLogger) Init(config string) error { func (log *ConsoleLogger) Init(config string) error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(config), log) err := json.Unmarshal([]byte(config), log)
if err != nil { if err != nil {
return fmt.Errorf("Unable to parse JSON: %v", err) return fmt.Errorf("Unable to parse JSON: %v", err)

@ -15,8 +15,8 @@ import (
"sync" "sync"
"time" "time"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
jsoniter "github.com/json-iterator/go"
) )
// FileLogger implements LoggerProvider. // FileLogger implements LoggerProvider.
@ -101,7 +101,6 @@ func NewFileLogger() LoggerProvider {
// "rotate":true // "rotate":true
// } // }
func (log *FileLogger) Init(config string) error { func (log *FileLogger) Init(config string) error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(config), log); err != nil { if err := json.Unmarshal([]byte(config), log); err != nil {
return fmt.Errorf("Unable to parse JSON: %v", err) return fmt.Errorf("Unable to parse JSON: %v", err)
} }

@ -10,7 +10,7 @@ import (
"os" "os"
"strings" "strings"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
// Level is the level of the logger // Level is the level of the logger
@ -104,7 +104,6 @@ func FromString(level string) Level {
// UnmarshalJSON takes text and turns it into a Level // UnmarshalJSON takes text and turns it into a Level
func (l *Level) UnmarshalJSON(b []byte) error { func (l *Level) UnmarshalJSON(b []byte) error {
var tmp interface{} var tmp interface{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal(b, &tmp) err := json.Unmarshal(b, &tmp)
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "Err: %v", err) fmt.Fprintf(os.Stderr, "Err: %v", err)

@ -8,7 +8,8 @@ import (
"fmt" "fmt"
"testing" "testing"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -17,7 +18,6 @@ type testLevel struct {
} }
func TestLevelMarshalUnmarshalJSON(t *testing.T) { func TestLevelMarshalUnmarshalJSON(t *testing.T) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
levelBytes, err := json.Marshal(testLevel{ levelBytes, err := json.Marshal(testLevel{
Level: INFO, Level: INFO,
}) })

@ -10,7 +10,7 @@ import (
"net/smtp" "net/smtp"
"strings" "strings"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
type smtpWriter struct { type smtpWriter struct {
@ -57,7 +57,6 @@ func NewSMTPLogger() LoggerProvider {
// "level":LevelError // "level":LevelError
// } // }
func (log *SMTPLogger) Init(jsonconfig string) error { func (log *SMTPLogger) Init(jsonconfig string) error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(jsonconfig), log) err := json.Unmarshal([]byte(jsonconfig), log)
if err != nil { if err != nil {
return fmt.Errorf("Unable to parse JSON: %v", err) return fmt.Errorf("Unable to parse JSON: %v", err)

@ -10,10 +10,10 @@ import (
"strings" "strings"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/notification/base" "code.gitea.io/gitea/modules/notification/base"
"code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/repository"
jsoniter "github.com/json-iterator/go"
) )
type actionNotifier struct { type actionNotifier struct {
@ -296,7 +296,6 @@ func (*actionNotifier) NotifyPullRevieweDismiss(doer *models.User, review *model
} }
func (a *actionNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { func (a *actionNotifier) NotifyPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.Marshal(commits) data, err := json.Marshal(commits)
if err != nil { if err != nil {
log.Error("Marshal: %v", err) log.Error("Marshal: %v", err)
@ -368,7 +367,6 @@ func (a *actionNotifier) NotifyDeleteRef(doer *models.User, repo *models.Reposit
} }
func (a *actionNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) { func (a *actionNotifier) NotifySyncPushCommits(pusher *models.User, repo *models.Repository, opts *repository.PushUpdateOptions, commits *repository.PushCommits) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.Marshal(commits) data, err := json.Marshal(commits)
if err != nil { if err != nil {
log.Error("json.Marshal: %v", err) log.Error("json.Marshal: %v", err)

@ -6,15 +6,14 @@ package private
import ( import (
"context" "context"
"encoding/json"
"fmt" "fmt"
"net/http" "net/http"
"net/url" "net/url"
"strconv" "strconv"
"time" "time"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
) )
// Git environment variables // Git environment variables
@ -88,7 +87,6 @@ func HookPreReceive(ctx context.Context, ownerName, repoName string, opts HookOp
) )
req := newInternalRequest(ctx, reqURL, "POST") req := newInternalRequest(ctx, reqURL, "POST")
req = req.Header("Content-Type", "application/json") req = req.Header("Content-Type", "application/json")
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonBytes, _ := json.Marshal(opts) jsonBytes, _ := json.Marshal(opts)
req.Body(jsonBytes) req.Body(jsonBytes)
req.SetTimeout(60*time.Second, time.Duration(60+len(opts.OldCommitIDs))*time.Second) req.SetTimeout(60*time.Second, time.Duration(60+len(opts.OldCommitIDs))*time.Second)
@ -115,7 +113,6 @@ func HookPostReceive(ctx context.Context, ownerName, repoName string, opts HookO
req := newInternalRequest(ctx, reqURL, "POST") req := newInternalRequest(ctx, reqURL, "POST")
req = req.Header("Content-Type", "application/json") req = req.Header("Content-Type", "application/json")
req.SetTimeout(60*time.Second, time.Duration(60+len(opts.OldCommitIDs))*time.Second) req.SetTimeout(60*time.Second, time.Duration(60+len(opts.OldCommitIDs))*time.Second)
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonBytes, _ := json.Marshal(opts) jsonBytes, _ := json.Marshal(opts)
req.Body(jsonBytes) req.Body(jsonBytes)
resp, err := req.Response() resp, err := req.Response()

@ -12,8 +12,8 @@ import (
"net/http" "net/http"
"code.gitea.io/gitea/modules/httplib" "code.gitea.io/gitea/modules/httplib"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
) )
func newRequest(ctx context.Context, url, method string) *httplib.Request { func newRequest(ctx context.Context, url, method string) *httplib.Request {
@ -30,7 +30,6 @@ type Response struct {
func decodeJSONError(resp *http.Response) *Response { func decodeJSONError(resp *http.Response) *Response {
var res Response var res Response
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.NewDecoder(resp.Body).Decode(&res) err := json.NewDecoder(resp.Body).Decode(&res)
if err != nil { if err != nil {
res.Err = err.Error() res.Err = err.Error()

@ -10,8 +10,8 @@ import (
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
) )
// Email structure holds a data for sending general emails // Email structure holds a data for sending general emails
@ -33,7 +33,6 @@ func SendEmail(ctx context.Context, subject, message string, to []string) (int,
req := newInternalRequest(ctx, reqURL, "POST") req := newInternalRequest(ctx, reqURL, "POST")
req = req.Header("Content-Type", "application/json") req = req.Header("Content-Type", "application/json")
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonBytes, _ := json.Marshal(Email{ jsonBytes, _ := json.Marshal(Email{
Subject: subject, Subject: subject,
Message: message, Message: message,

@ -11,8 +11,8 @@ import (
"net/url" "net/url"
"time" "time"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
) )
// Shutdown calls the internal shutdown function // Shutdown calls the internal shutdown function
@ -66,7 +66,6 @@ func FlushQueues(ctx context.Context, timeout time.Duration, nonBlocking bool) (
req.SetTimeout(timeout+10*time.Second, timeout+10*time.Second) req.SetTimeout(timeout+10*time.Second, timeout+10*time.Second)
} }
req = req.Header("Content-Type", "application/json") req = req.Header("Content-Type", "application/json")
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonBytes, _ := json.Marshal(FlushOptions{ jsonBytes, _ := json.Marshal(FlushOptions{
Timeout: timeout, Timeout: timeout,
NonBlocking: nonBlocking, NonBlocking: nonBlocking,
@ -153,7 +152,6 @@ func AddLogger(ctx context.Context, group, name, mode string, config map[string]
req := newInternalRequest(ctx, reqURL, "POST") req := newInternalRequest(ctx, reqURL, "POST")
req = req.Header("Content-Type", "application/json") req = req.Header("Content-Type", "application/json")
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonBytes, _ := json.Marshal(LoggerOptions{ jsonBytes, _ := json.Marshal(LoggerOptions{
Group: group, Group: group,
Name: name, Name: name,

@ -11,8 +11,8 @@ import (
"net/http" "net/http"
"time" "time"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
) )
// RestoreParams structure holds a data for restore repository // RestoreParams structure holds a data for restore repository
@ -30,7 +30,6 @@ func RestoreRepo(ctx context.Context, repoDir, ownerName, repoName string, units
req := newInternalRequest(ctx, reqURL, "POST") req := newInternalRequest(ctx, reqURL, "POST")
req.SetTimeout(3*time.Second, 0) // since the request will spend much time, don't timeout req.SetTimeout(3*time.Second, 0) // since the request will spend much time, don't timeout
req = req.Header("Content-Type", "application/json") req = req.Header("Content-Type", "application/json")
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonBytes, _ := json.Marshal(RestoreParams{ jsonBytes, _ := json.Marshal(RestoreParams{
RepoDir: repoDir, RepoDir: repoDir,
OwnerName: ownerName, OwnerName: ownerName,

@ -11,8 +11,8 @@ import (
"net/url" "net/url"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
) )
// KeyAndOwner is the response from ServNoCommand // KeyAndOwner is the response from ServNoCommand
@ -35,7 +35,6 @@ func ServNoCommand(ctx context.Context, keyID int64) (*models.PublicKey, *models
} }
var keyAndOwner KeyAndOwner var keyAndOwner KeyAndOwner
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.NewDecoder(resp.Body).Decode(&keyAndOwner); err != nil { if err := json.NewDecoder(resp.Body).Decode(&keyAndOwner); err != nil {
return nil, nil, err return nil, nil, err
} }
@ -91,7 +90,7 @@ func ServCommand(ctx context.Context, keyID int64, ownerName, repoName string, m
return nil, err return nil, err
} }
defer resp.Body.Close() defer resp.Body.Close()
json := jsoniter.ConfigCompatibleWithStandardLibrary
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
var errServCommand ErrServCommand var errServCommand ErrServCommand
if err := json.NewDecoder(resp.Body).Decode(&errServCommand); err != nil { if err := json.NewDecoder(resp.Body).Decode(&errServCommand); err != nil {

@ -7,7 +7,7 @@ package queue
import ( import (
"reflect" "reflect"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
// Mappable represents an interface that can MapTo another interface // Mappable represents an interface that can MapTo another interface
@ -20,8 +20,6 @@ type Mappable interface {
// It will tolerate the cfg being passed as a []byte or string of a json representation of the // It will tolerate the cfg being passed as a []byte or string of a json representation of the
// exemplar or the correct type of the exemplar itself // exemplar or the correct type of the exemplar itself
func toConfig(exemplar, cfg interface{}) (interface{}, error) { func toConfig(exemplar, cfg interface{}) (interface{}, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
// First of all check if we've got the same type as the exemplar - if so it's all fine. // First of all check if we've got the same type as the exemplar - if so it's all fine.
if reflect.TypeOf(cfg).AssignableTo(reflect.TypeOf(exemplar)) { if reflect.TypeOf(cfg).AssignableTo(reflect.TypeOf(exemplar)) {
return cfg, nil return cfg, nil
@ -48,7 +46,6 @@ func toConfig(exemplar, cfg interface{}) (interface{}, error) {
if !ok { if !ok {
// hmm ... can we marshal it to json? // hmm ... can we marshal it to json?
var err error var err error
configBytes, err = json.Marshal(cfg) configBytes, err = json.Marshal(cfg)
ok = err == nil ok = err == nil
} }
@ -68,7 +65,6 @@ func toConfig(exemplar, cfg interface{}) (interface{}, error) {
// unmarshalAs will attempt to unmarshal provided bytes as the provided exemplar // unmarshalAs will attempt to unmarshal provided bytes as the provided exemplar
func unmarshalAs(bs []byte, exemplar interface{}) (data Data, err error) { func unmarshalAs(bs []byte, exemplar interface{}) (data Data, err error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
if exemplar != nil { if exemplar != nil {
t := reflect.TypeOf(exemplar) t := reflect.TypeOf(exemplar)
n := reflect.New(t) n := reflect.New(t)
@ -78,7 +74,6 @@ func unmarshalAs(bs []byte, exemplar interface{}) (data Data, err error) {
} else { } else {
err = json.Unmarshal(bs, &data) err = json.Unmarshal(bs, &data)
} }
return return
} }

@ -12,8 +12,8 @@ import (
"sync" "sync"
"time" "time"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
jsoniter "github.com/json-iterator/go"
) )
var manager *Manager var manager *Manager
@ -110,7 +110,6 @@ func (m *Manager) Add(managed interface{},
configuration, configuration,
exemplar interface{}) int64 { exemplar interface{}) int64 {
json := jsoniter.ConfigCompatibleWithStandardLibrary
cfg, _ := json.Marshal(configuration) cfg, _ := json.Marshal(configuration)
mq := &ManagedQueue{ mq := &ManagedQueue{
Type: t, Type: t,

@ -10,8 +10,8 @@ import (
"sync" "sync"
"time" "time"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
jsoniter "github.com/json-iterator/go"
) )
// ByteFIFOQueueConfiguration is the configuration for a ByteFIFOQueue // ByteFIFOQueueConfiguration is the configuration for a ByteFIFOQueue
@ -83,7 +83,6 @@ func (q *ByteFIFOQueue) PushFunc(data Data, fn func() error) error {
if !assignableTo(data, q.exemplar) { if !assignableTo(data, q.exemplar) {
return fmt.Errorf("Unable to assign data: %v to same type as exemplar: %v in %s", data, q.exemplar, q.name) return fmt.Errorf("Unable to assign data: %v to same type as exemplar: %v in %s", data, q.exemplar, q.name)
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
bs, err := json.Marshal(data) bs, err := json.Marshal(data)
if err != nil { if err != nil {
return err return err
@ -309,7 +308,6 @@ func (q *ByteFIFOUniqueQueue) Has(data Data) (bool, error) {
if !assignableTo(data, q.exemplar) { if !assignableTo(data, q.exemplar) {
return false, fmt.Errorf("Unable to assign data: %v to same type as exemplar: %v in %s", data, q.exemplar, q.name) return false, fmt.Errorf("Unable to assign data: %v to same type as exemplar: %v in %s", data, q.exemplar, q.name)
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
bs, err := json.Marshal(data) bs, err := json.Marshal(data)
if err != nil { if err != nil {
return false, err return false, err

@ -7,7 +7,8 @@ package queue
import ( import (
"testing" "testing"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -29,8 +30,6 @@ func TestToConfig(t *testing.T) {
assert.True(t, ok) assert.True(t, ok)
assert.NotEqual(t, cfg2, exemplar) assert.NotEqual(t, cfg2, exemplar)
assert.Equal(t, &cfg, &cfg2) assert.Equal(t, &cfg, &cfg2)
json := jsoniter.ConfigCompatibleWithStandardLibrary
cfgString, err := json.Marshal(cfg) cfgString, err := json.Marshal(cfg)
assert.NoError(t, err) assert.NoError(t, err)

@ -8,9 +8,9 @@ import (
"fmt" "fmt"
"strings" "strings"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
) )
func validType(t string) (Type, error) { func validType(t string) (Type, error) {
@ -27,8 +27,6 @@ func validType(t string) (Type, error) {
func getQueueSettings(name string) (setting.QueueSettings, []byte) { func getQueueSettings(name string) (setting.QueueSettings, []byte) {
q := setting.GetQueueSettings(name) q := setting.GetQueueSettings(name)
json := jsoniter.ConfigCompatibleWithStandardLibrary
cfg, err := json.Marshal(q) cfg, err := json.Marshal(q)
if err != nil { if err != nil {
log.Error("Unable to marshall generic options: %v Error: %v", q, err) log.Error("Unable to marshall generic options: %v Error: %v", q, err)

@ -12,9 +12,9 @@ import (
"net/url" "net/url"
"strings" "strings"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
jsoniter "github.com/json-iterator/go"
) )
// Response is the structure of JSON returned from API // Response is the structure of JSON returned from API
@ -50,8 +50,8 @@ func Verify(ctx context.Context, response string) (bool, error) {
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to read CAPTCHA response: %s", err) return false, fmt.Errorf("Failed to read CAPTCHA response: %s", err)
} }
var jsonResponse Response var jsonResponse Response
json := jsoniter.ConfigCompatibleWithStandardLibrary
err = json.Unmarshal(body, &jsonResponse) err = json.Unmarshal(body, &jsonResponse)
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to parse CAPTCHA response: %s", err) return false, fmt.Errorf("Failed to parse CAPTCHA response: %s", err)

@ -8,12 +8,13 @@ import (
"fmt" "fmt"
"sync" "sync"
"code.gitea.io/gitea/modules/json"
"gitea.com/go-chi/session" "gitea.com/go-chi/session"
couchbase "gitea.com/go-chi/session/couchbase" couchbase "gitea.com/go-chi/session/couchbase"
memcache "gitea.com/go-chi/session/memcache" memcache "gitea.com/go-chi/session/memcache"
mysql "gitea.com/go-chi/session/mysql" mysql "gitea.com/go-chi/session/mysql"
postgres "gitea.com/go-chi/session/postgres" postgres "gitea.com/go-chi/session/postgres"
jsoniter "github.com/json-iterator/go"
) )
// VirtualSessionProvider represents a shadowed session provider implementation. // VirtualSessionProvider represents a shadowed session provider implementation.
@ -25,7 +26,6 @@ type VirtualSessionProvider struct {
// Init initializes the cookie session provider with given root path. // Init initializes the cookie session provider with given root path.
func (o *VirtualSessionProvider) Init(gclifetime int64, config string) error { func (o *VirtualSessionProvider) Init(gclifetime int64, config string) error {
var opts session.Options var opts session.Options
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(config), &opts); err != nil { if err := json.Unmarshal([]byte(config), &opts); err != nil {
return err return err
} }

@ -13,14 +13,13 @@ import (
"strings" "strings"
"sync" "sync"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
jsoniter "github.com/json-iterator/go"
ini "gopkg.in/ini.v1" ini "gopkg.in/ini.v1"
) )
var filenameSuffix = "" var filenameSuffix = ""
var descriptionLock = sync.RWMutex{} var descriptionLock = sync.RWMutex{}
var logDescriptions = make(map[string]*LogDescription) var logDescriptions = make(map[string]*LogDescription)
@ -203,8 +202,6 @@ func generateLogConfig(sec *ini.Section, name string, defaults defaultLogOptions
} }
logConfig["colorize"] = sec.Key("COLORIZE").MustBool(false) logConfig["colorize"] = sec.Key("COLORIZE").MustBool(false)
json := jsoniter.ConfigCompatibleWithStandardLibrary
byteConfig, err := json.Marshal(logConfig) byteConfig, err := json.Marshal(logConfig)
if err != nil { if err != nil {
log.Error("Failed to marshal log configuration: %v %v", logConfig, err) log.Error("Failed to marshal log configuration: %v %v", logConfig, err)

@ -10,8 +10,8 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
jsoniter "github.com/json-iterator/go"
) )
var ( var (
@ -65,8 +65,6 @@ func newSessionService() {
default: default:
SessionConfig.SameSite = http.SameSiteLaxMode SessionConfig.SameSite = http.SameSiteLaxMode
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
shadowConfig, err := json.Marshal(SessionConfig) shadowConfig, err := json.Marshal(SessionConfig)
if err != nil { if err != nil {
log.Fatal("Can't shadow session config: %v", err) log.Fatal("Can't shadow session config: %v", err)

@ -24,11 +24,11 @@ import (
"time" "time"
"code.gitea.io/gitea/modules/generate" "code.gitea.io/gitea/modules/generate"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/user" "code.gitea.io/gitea/modules/user"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
jsoniter "github.com/json-iterator/go"
shellquote "github.com/kballard/go-shellquote" shellquote "github.com/kballard/go-shellquote"
"github.com/unknwon/com" "github.com/unknwon/com"
gossh "golang.org/x/crypto/ssh" gossh "golang.org/x/crypto/ssh"
@ -1116,7 +1116,6 @@ func MakeManifestData(appName string, appURL string, absoluteAssetURL string) []
Icons []manifestIcon `json:"icons"` Icons []manifestIcon `json:"icons"`
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
bytes, err := json.Marshal(&manifestJSON{ bytes, err := json.Marshal(&manifestJSON{
Name: appName, Name: appName,
ShortName: appName, ShortName: appName,

@ -7,7 +7,8 @@ package setting
import ( import (
"testing" "testing"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -28,6 +29,5 @@ func TestMakeAbsoluteAssetURL(t *testing.T) {
func TestMakeManifestData(t *testing.T) { func TestMakeManifestData(t *testing.T) {
jsonBytes := MakeManifestData(`Example App '\"`, "https://example.com", "https://example.com/foo/bar") jsonBytes := MakeManifestData(`Example App '\"`, "https://example.com", "https://example.com/foo/bar")
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.True(t, json.Valid(jsonBytes)) assert.True(t, json.Valid(jsonBytes))
} }

@ -7,7 +7,7 @@ package storage
import ( import (
"reflect" "reflect"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
// Mappable represents an interface that can MapTo another interface // Mappable represents an interface that can MapTo another interface
@ -20,8 +20,6 @@ type Mappable interface {
// It will tolerate the cfg being passed as a []byte or string of a json representation of the // It will tolerate the cfg being passed as a []byte or string of a json representation of the
// exemplar or the correct type of the exemplar itself // exemplar or the correct type of the exemplar itself
func toConfig(exemplar, cfg interface{}) (interface{}, error) { func toConfig(exemplar, cfg interface{}) (interface{}, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
// First of all check if we've got the same type as the exemplar - if so it's all fine. // First of all check if we've got the same type as the exemplar - if so it's all fine.
if reflect.TypeOf(cfg).AssignableTo(reflect.TypeOf(exemplar)) { if reflect.TypeOf(cfg).AssignableTo(reflect.TypeOf(exemplar)) {
return cfg, nil return cfg, nil
@ -48,7 +46,6 @@ func toConfig(exemplar, cfg interface{}) (interface{}, error) {
if !ok { if !ok {
// hmm ... can we marshal it to json? // hmm ... can we marshal it to json?
var err error var err error
configBytes, err = json.Marshal(cfg) configBytes, err = json.Marshal(cfg)
ok = err == nil ok = err == nil
} }

@ -10,7 +10,7 @@ import (
"strings" "strings"
"time" "time"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
var ( var (
@ -132,14 +132,12 @@ type CreatePayload struct {
// JSONPayload return payload information // JSONPayload return payload information
func (p *CreatePayload) JSONPayload() ([]byte, error) { func (p *CreatePayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.MarshalIndent(p, "", " ") return json.MarshalIndent(p, "", " ")
} }
// ParseCreateHook parses create event hook content. // ParseCreateHook parses create event hook content.
func ParseCreateHook(raw []byte) (*CreatePayload, error) { func ParseCreateHook(raw []byte) (*CreatePayload, error) {
hook := new(CreatePayload) hook := new(CreatePayload)
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal(raw, hook); err != nil { if err := json.Unmarshal(raw, hook); err != nil {
return nil, err return nil, err
} }
@ -183,7 +181,6 @@ type DeletePayload struct {
// JSONPayload implements Payload // JSONPayload implements Payload
func (p *DeletePayload) JSONPayload() ([]byte, error) { func (p *DeletePayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.MarshalIndent(p, "", " ") return json.MarshalIndent(p, "", " ")
} }
@ -203,7 +200,6 @@ type ForkPayload struct {
// JSONPayload implements Payload // JSONPayload implements Payload
func (p *ForkPayload) JSONPayload() ([]byte, error) { func (p *ForkPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.MarshalIndent(p, "", " ") return json.MarshalIndent(p, "", " ")
} }
@ -230,7 +226,6 @@ type IssueCommentPayload struct {
// JSONPayload implements Payload // JSONPayload implements Payload
func (p *IssueCommentPayload) JSONPayload() ([]byte, error) { func (p *IssueCommentPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.MarshalIndent(p, "", " ") return json.MarshalIndent(p, "", " ")
} }
@ -261,7 +256,6 @@ type ReleasePayload struct {
// JSONPayload implements Payload // JSONPayload implements Payload
func (p *ReleasePayload) JSONPayload() ([]byte, error) { func (p *ReleasePayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.MarshalIndent(p, "", " ") return json.MarshalIndent(p, "", " ")
} }
@ -287,14 +281,12 @@ type PushPayload struct {
// JSONPayload FIXME // JSONPayload FIXME
func (p *PushPayload) JSONPayload() ([]byte, error) { func (p *PushPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.MarshalIndent(p, "", " ") return json.MarshalIndent(p, "", " ")
} }
// ParsePushHook parses push event hook content. // ParsePushHook parses push event hook content.
func ParsePushHook(raw []byte) (*PushPayload, error) { func ParsePushHook(raw []byte) (*PushPayload, error) {
hook := new(PushPayload) hook := new(PushPayload)
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal(raw, hook); err != nil { if err := json.Unmarshal(raw, hook); err != nil {
return nil, err return nil, err
} }
@ -362,7 +354,6 @@ type IssuePayload struct {
// JSONPayload encodes the IssuePayload to JSON, with an indentation of two spaces. // JSONPayload encodes the IssuePayload to JSON, with an indentation of two spaces.
func (p *IssuePayload) JSONPayload() ([]byte, error) { func (p *IssuePayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.MarshalIndent(p, "", " ") return json.MarshalIndent(p, "", " ")
} }
@ -398,7 +389,6 @@ type PullRequestPayload struct {
// JSONPayload FIXME // JSONPayload FIXME
func (p *PullRequestPayload) JSONPayload() ([]byte, error) { func (p *PullRequestPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.MarshalIndent(p, "", " ") return json.MarshalIndent(p, "", " ")
} }
@ -435,6 +425,5 @@ type RepositoryPayload struct {
// JSONPayload JSON representation of the payload // JSONPayload JSON representation of the payload
func (p *RepositoryPayload) JSONPayload() ([]byte, error) { func (p *RepositoryPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.MarshalIndent(p, "", " ") return json.MarshalIndent(p, "", " ")
} }

@ -7,7 +7,7 @@ package structs
import ( import (
"time" "time"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
// User represents a user // User represents a user
@ -56,7 +56,6 @@ type User struct {
func (u User) MarshalJSON() ([]byte, error) { func (u User) MarshalJSON() ([]byte, error) {
// Re-declaring User to avoid recursion // Re-declaring User to avoid recursion
type shadow User type shadow User
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(struct { return json.Marshal(struct {
shadow shadow
CompatUserName string `json:"username"` CompatUserName string `json:"username"`

@ -12,6 +12,7 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/migrations" "code.gitea.io/gitea/modules/migrations"
migration "code.gitea.io/gitea/modules/migrations/base" migration "code.gitea.io/gitea/modules/migrations/base"
@ -20,7 +21,6 @@ import (
"code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
jsoniter "github.com/json-iterator/go"
) )
func handleCreateError(owner *models.User, err error) error { func handleCreateError(owner *models.User, err error) error {
@ -112,7 +112,6 @@ func runMigrateTask(t *models.Task) (err error) {
Format: format, Format: format,
Args: args, Args: args,
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
bs, _ := json.Marshal(message) bs, _ := json.Marshal(message)
t.Message = string(bs) t.Message = string(bs)
_ = t.UpdateCols("message") _ = t.UpdateCols("message")

@ -9,6 +9,7 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/migrations/base" "code.gitea.io/gitea/modules/migrations/base"
"code.gitea.io/gitea/modules/queue" "code.gitea.io/gitea/modules/queue"
@ -18,7 +19,6 @@ import (
"code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
jsoniter "github.com/json-iterator/go"
) )
// taskQueue is a global queue of tasks // taskQueue is a global queue of tasks
@ -85,8 +85,6 @@ func CreateMigrateTask(doer, u *models.User, opts base.MigrateOptions) (*models.
return nil, err return nil, err
} }
opts.AuthToken = "" opts.AuthToken = ""
json := jsoniter.ConfigCompatibleWithStandardLibrary
bs, err := json.Marshal(&opts) bs, err := json.Marshal(&opts)
if err != nil { if err != nil {
return nil, err return nil, err

@ -8,7 +8,6 @@ package templates
import ( import (
"bytes" "bytes"
"container/list" "container/list"
"encoding/json"
"errors" "errors"
"fmt" "fmt"
"html" "html"
@ -28,6 +27,7 @@ import (
"code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/emoji" "code.gitea.io/gitea/modules/emoji"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/repository"
@ -38,7 +38,6 @@ import (
"code.gitea.io/gitea/services/gitdiff" "code.gitea.io/gitea/services/gitdiff"
"github.com/editorconfig/editorconfig-core-go/v2" "github.com/editorconfig/editorconfig-core-go/v2"
jsoniter "github.com/json-iterator/go"
) )
// Used from static.go && dynamic.go // Used from static.go && dynamic.go
@ -46,7 +45,6 @@ var mailSubjectSplit = regexp.MustCompile(`(?m)^-{3,}[\s]*$`)
// NewFuncMap returns functions for injecting to templates // NewFuncMap returns functions for injecting to templates
func NewFuncMap() []template.FuncMap { func NewFuncMap() []template.FuncMap {
jsonED := jsoniter.ConfigCompatibleWithStandardLibrary
return []template.FuncMap{map[string]interface{}{ return []template.FuncMap{map[string]interface{}{
"GoVer": func() string { "GoVer": func() string {
return strings.Title(runtime.Version()) return strings.Title(runtime.Version())
@ -221,7 +219,7 @@ func NewFuncMap() []template.FuncMap {
return fmt.Sprintf("%f", float64(adds)/(float64(adds)+float64(dels))*100) return fmt.Sprintf("%f", float64(adds)/(float64(adds)+float64(dels))*100)
}, },
"Json": func(in interface{}) string { "Json": func(in interface{}) string {
out, err := jsonED.Marshal(in) out, err := json.Marshal(in)
if err != nil { if err != nil {
return "" return ""
} }
@ -847,7 +845,6 @@ func ActionContent2Commits(act Actioner) *repository.PushCommits {
return push return push
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(act.GetContent()), push); err != nil { if err := json.Unmarshal([]byte(act.GetContent()), push); err != nil {
log.Error("json.Unmarshal:\n%s\nERROR: %v", act.GetContent(), err) log.Error("json.Unmarshal:\n%s\nERROR: %v", act.GetContent(), err)
} }

@ -12,11 +12,11 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/convert" "code.gitea.io/gitea/modules/convert"
"code.gitea.io/gitea/modules/json"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/routers/utils" "code.gitea.io/gitea/routers/utils"
"code.gitea.io/gitea/services/webhook" "code.gitea.io/gitea/services/webhook"
jsoniter "github.com/json-iterator/go"
) )
// GetOrgHook get an organization's webhook. If there is an error, write to // GetOrgHook get an organization's webhook. If there is an error, write to
@ -147,7 +147,6 @@ func addHook(ctx *context.APIContext, form *api.CreateHookOption, orgID, repoID
return nil, false return nil, false
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.SlackMeta{ meta, err := json.Marshal(&webhook.SlackMeta{
Channel: strings.TrimSpace(channel), Channel: strings.TrimSpace(channel),
Username: form.Config["username"], Username: form.Config["username"],
@ -222,7 +221,6 @@ func editHook(ctx *context.APIContext, form *api.EditHookOption, w *models.Webho
if w.Type == models.SLACK { if w.Type == models.SLACK {
if channel, ok := form.Config["channel"]; ok { if channel, ok := form.Config["channel"]; ok {
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.SlackMeta{ meta, err := json.Marshal(&webhook.SlackMeta{
Channel: channel, Channel: channel,
Username: form.Config["username"], Username: form.Config["username"],

@ -11,11 +11,11 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/private"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/services/mailer" "code.gitea.io/gitea/services/mailer"
jsoniter "github.com/json-iterator/go"
) )
// SendEmail pushes messages to mail queue // SendEmail pushes messages to mail queue
@ -32,7 +32,7 @@ func SendEmail(ctx *context.PrivateContext) {
var mail private.Email var mail private.Email
rd := ctx.Req.Body rd := ctx.Req.Body
defer rd.Close() defer rd.Close()
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.NewDecoder(rd).Decode(&mail); err != nil { if err := json.NewDecoder(rd).Decode(&mail); err != nil {
log.Error("%v", err) log.Error("%v", err)
ctx.JSON(http.StatusInternalServerError, private.Response{ ctx.JSON(http.StatusInternalServerError, private.Response{

@ -10,12 +10,12 @@ import (
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/private"
"code.gitea.io/gitea/modules/queue" "code.gitea.io/gitea/modules/queue"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
jsoniter "github.com/json-iterator/go"
) )
// FlushQueues flushes all the Queues // FlushQueues flushes all the Queues
@ -130,7 +130,6 @@ func AddLogger(ctx *context.PrivateContext) {
} }
bufferLen := setting.Cfg.Section("log").Key("BUFFER_LEN").MustInt64(10000) bufferLen := setting.Cfg.Section("log").Key("BUFFER_LEN").MustInt64(10000)
json := jsoniter.ConfigCompatibleWithStandardLibrary
byteConfig, err := json.Marshal(opts.Config) byteConfig, err := json.Marshal(opts.Config)
if err != nil { if err != nil {
log.Error("Failed to marshal log configuration: %v %v", opts.Config, err) log.Error("Failed to marshal log configuration: %v %v", opts.Config, err)

@ -9,14 +9,13 @@ import (
"net/http" "net/http"
myCtx "code.gitea.io/gitea/modules/context" myCtx "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/migrations" "code.gitea.io/gitea/modules/migrations"
"code.gitea.io/gitea/modules/private" "code.gitea.io/gitea/modules/private"
jsoniter "github.com/json-iterator/go"
) )
// RestoreRepo restore a repository from data // RestoreRepo restore a repository from data
func RestoreRepo(ctx *myCtx.PrivateContext) { func RestoreRepo(ctx *myCtx.PrivateContext) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
bs, err := ioutil.ReadAll(ctx.Req.Body) bs, err := ioutil.ReadAll(ctx.Req.Body)
if err != nil { if err != nil {
ctx.JSON(http.StatusInternalServerError, private.Response{ ctx.JSON(http.StatusInternalServerError, private.Response{

@ -20,6 +20,7 @@ import (
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/cron" "code.gitea.io/gitea/modules/cron"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/process"
"code.gitea.io/gitea/modules/queue" "code.gitea.io/gitea/modules/queue"
@ -28,7 +29,6 @@ import (
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/services/forms" "code.gitea.io/gitea/services/forms"
"code.gitea.io/gitea/services/mailer" "code.gitea.io/gitea/services/mailer"
jsoniter "github.com/json-iterator/go"
"gitea.com/go-chi/session" "gitea.com/go-chi/session"
) )
@ -275,7 +275,6 @@ func Config(ctx *context.Context) {
sessionCfg := setting.SessionConfig sessionCfg := setting.SessionConfig
if sessionCfg.Provider == "VirtualSession" { if sessionCfg.Provider == "VirtualSession" {
var realSession session.Options var realSession session.Options
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(sessionCfg.ProviderConfig), &realSession); err != nil { if err := json.Unmarshal([]byte(sessionCfg.ProviderConfig), &realSession); err != nil {
log.Error("Unable to unmarshall session config for virtualed provider config: %s\nError: %v", sessionCfg.ProviderConfig, err) log.Error("Unable to unmarshall session config for virtualed provider config: %s\nError: %v", sessionCfg.ProviderConfig, err)
} }

@ -13,10 +13,10 @@ import (
"code.gitea.io/gitea/modules/convert" "code.gitea.io/gitea/modules/convert"
"code.gitea.io/gitea/modules/eventsource" "code.gitea.io/gitea/modules/eventsource"
"code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/routers/web/user" "code.gitea.io/gitea/routers/web/user"
jsoniter "github.com/json-iterator/go"
) )
// Events listens for events // Events listens for events
@ -103,7 +103,6 @@ loop:
log.Error("Unable to APIFormat stopwatches: %v", err) log.Error("Unable to APIFormat stopwatches: %v", err)
continue continue
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
dataBs, err := json.Marshal(apiSWs) dataBs, err := json.Marshal(apiSWs)
if err != nil { if err != nil {
log.Error("Unable to marshal stopwatches: %v", err) log.Error("Unable to marshal stopwatches: %v", err)

@ -16,6 +16,7 @@ import (
"code.gitea.io/gitea/modules/charset" "code.gitea.io/gitea/modules/charset"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/repofiles" "code.gitea.io/gitea/modules/repofiles"
repo_module "code.gitea.io/gitea/modules/repository" repo_module "code.gitea.io/gitea/modules/repository"
@ -26,7 +27,6 @@ import (
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/utils" "code.gitea.io/gitea/routers/utils"
"code.gitea.io/gitea/services/forms" "code.gitea.io/gitea/services/forms"
jsoniter "github.com/json-iterator/go"
) )
const ( const (
@ -165,7 +165,6 @@ func GetEditorConfig(ctx *context.Context, treePath string) string {
if err == nil { if err == nil {
def, err := ec.GetDefinitionForFilename(treePath) def, err := ec.GetDefinitionForFilename(treePath)
if err == nil { if err == nil {
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonStr, _ := json.Marshal(def) jsonStr, _ := json.Marshal(def)
return string(jsonStr) return string(jsonStr)
} }

@ -17,13 +17,13 @@ import (
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/convert" "code.gitea.io/gitea/modules/convert"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/services/forms" "code.gitea.io/gitea/services/forms"
"code.gitea.io/gitea/services/webhook" "code.gitea.io/gitea/services/webhook"
jsoniter "github.com/json-iterator/go"
) )
const ( const (
@ -306,7 +306,6 @@ func DiscordHooksNewPost(ctx *context.Context) {
return return
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.DiscordMeta{ meta, err := json.Marshal(&webhook.DiscordMeta{
Username: form.Username, Username: form.Username,
IconURL: form.IconURL, IconURL: form.IconURL,
@ -402,7 +401,6 @@ func TelegramHooksNewPost(ctx *context.Context) {
return return
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.TelegramMeta{ meta, err := json.Marshal(&webhook.TelegramMeta{
BotToken: form.BotToken, BotToken: form.BotToken,
ChatID: form.ChatID, ChatID: form.ChatID,
@ -455,7 +453,6 @@ func MatrixHooksNewPost(ctx *context.Context) {
return return
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.MatrixMeta{ meta, err := json.Marshal(&webhook.MatrixMeta{
HomeserverURL: form.HomeserverURL, HomeserverURL: form.HomeserverURL,
Room: form.RoomID, Room: form.RoomID,
@ -560,7 +557,6 @@ func SlackHooksNewPost(ctx *context.Context) {
return return
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.SlackMeta{ meta, err := json.Marshal(&webhook.SlackMeta{
Channel: strings.TrimSpace(form.Channel), Channel: strings.TrimSpace(form.Channel),
Username: form.Username, Username: form.Username,
@ -848,7 +844,6 @@ func SlackHooksEditPost(ctx *context.Context) {
return return
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.SlackMeta{ meta, err := json.Marshal(&webhook.SlackMeta{
Channel: strings.TrimSpace(form.Channel), Channel: strings.TrimSpace(form.Channel),
Username: form.Username, Username: form.Username,
@ -894,7 +889,6 @@ func DiscordHooksEditPost(ctx *context.Context) {
return return
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.DiscordMeta{ meta, err := json.Marshal(&webhook.DiscordMeta{
Username: form.Username, Username: form.Username,
IconURL: form.IconURL, IconURL: form.IconURL,
@ -970,7 +964,7 @@ func TelegramHooksEditPost(ctx *context.Context) {
ctx.HTML(http.StatusOK, orCtx.NewTemplate) ctx.HTML(http.StatusOK, orCtx.NewTemplate)
return return
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.TelegramMeta{ meta, err := json.Marshal(&webhook.TelegramMeta{
BotToken: form.BotToken, BotToken: form.BotToken,
ChatID: form.ChatID, ChatID: form.ChatID,
@ -1012,7 +1006,7 @@ func MatrixHooksEditPost(ctx *context.Context) {
ctx.HTML(http.StatusOK, orCtx.NewTemplate) ctx.HTML(http.StatusOK, orCtx.NewTemplate)
return return
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
meta, err := json.Marshal(&webhook.MatrixMeta{ meta, err := json.Marshal(&webhook.MatrixMeta{
HomeserverURL: form.HomeserverURL, HomeserverURL: form.HomeserverURL,
Room: form.RoomID, Room: form.RoomID,

@ -18,6 +18,7 @@ import (
"code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
issue_indexer "code.gitea.io/gitea/modules/indexer/issues" issue_indexer "code.gitea.io/gitea/modules/indexer/issues"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/markup/markdown"
@ -26,7 +27,6 @@ import (
issue_service "code.gitea.io/gitea/services/issue" issue_service "code.gitea.io/gitea/services/issue"
pull_service "code.gitea.io/gitea/services/pull" pull_service "code.gitea.io/gitea/services/pull"
jsoniter "github.com/json-iterator/go"
"github.com/keybase/go-crypto/openpgp" "github.com/keybase/go-crypto/openpgp"
"github.com/keybase/go-crypto/openpgp/armor" "github.com/keybase/go-crypto/openpgp/armor"
"xorm.io/builder" "xorm.io/builder"
@ -703,7 +703,6 @@ func buildIssueOverview(ctx *context.Context, unitType models.UnitType) {
} }
// Convert []int64 to string // Convert []int64 to string
json := jsoniter.ConfigCompatibleWithStandardLibrary
reposParam, _ := json.Marshal(repoIDs) reposParam, _ := json.Marshal(repoIDs)
ctx.Data["ReposParam"] = string(reposParam) ctx.Data["ReposParam"] = string(reposParam)

@ -15,6 +15,7 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/timeutil"
@ -25,7 +26,6 @@ import (
"gitea.com/go-chi/binding" "gitea.com/go-chi/binding"
"github.com/golang-jwt/jwt" "github.com/golang-jwt/jwt"
jsoniter "github.com/json-iterator/go"
) )
const ( const (
@ -507,7 +507,7 @@ func OIDCKeys(ctx *context.Context) {
} }
ctx.Resp.Header().Set("Content-Type", "application/json") ctx.Resp.Header().Set("Content-Type", "application/json")
enc := jsoniter.NewEncoder(ctx.Resp) enc := json.NewEncoder(ctx.Resp)
if err := enc.Encode(jwks); err != nil { if err := enc.Encode(jwks); err != nil {
log.Error("Failed to encode representation as json. Error: %v", err) log.Error("Failed to encode representation as json. Error: %v", err)
} }

@ -9,7 +9,7 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
// TaskStatus returns task's status // TaskStatus returns task's status
@ -26,7 +26,6 @@ func TaskStatus(ctx *context.Context) {
if task.Message != "" && task.Message[0] == '{' { if task.Message != "" && task.Message[0] == '{' {
// assume message is actually a translatable string // assume message is actually a translatable string
json := jsoniter.ConfigCompatibleWithStandardLibrary
var translatableMessage models.TranslatableMessage var translatableMessage models.TranslatableMessage
if err := json.Unmarshal([]byte(message), &translatableMessage); err != nil { if err := json.Unmarshal([]byte(message), &translatableMessage); err != nil {
translatableMessage = models.TranslatableMessage{ translatableMessage = models.TranslatableMessage{

@ -8,10 +8,9 @@ import (
"strings" "strings"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/secret" "code.gitea.io/gitea/modules/secret"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
) )
// .____ ________ _____ __________ // .____ ________ _____ __________
@ -79,7 +78,6 @@ func (source *Source) ToDB() ([]byte, error) {
return nil, err return nil, err
} }
source.BindPassword = "" source.BindPassword = ""
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(source) return json.Marshal(source)
} }

@ -6,8 +6,7 @@ package oauth2
import ( import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
jsoniter "github.com/json-iterator/go"
) )
// ________ _____ __ .__ ________ // ________ _____ __ .__ ________
@ -37,7 +36,6 @@ func (source *Source) FromDB(bs []byte) error {
// ToDB exports an SMTPConfig to a serialized format. // ToDB exports an SMTPConfig to a serialized format.
func (source *Source) ToDB() ([]byte, error) { func (source *Source) ToDB() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(source) return json.Marshal(source)
} }

@ -6,8 +6,7 @@ package pam
import ( import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
jsoniter "github.com/json-iterator/go"
) )
// __________ _____ _____ // __________ _____ _____
@ -33,7 +32,6 @@ func (source *Source) FromDB(bs []byte) error {
// ToDB exports a PAMConfig to a serialized format. // ToDB exports a PAMConfig to a serialized format.
func (source *Source) ToDB() ([]byte, error) { func (source *Source) ToDB() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(source) return json.Marshal(source)
} }

@ -6,8 +6,7 @@ package smtp
import ( import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/json"
jsoniter "github.com/json-iterator/go"
) )
// _________ __________________________ // _________ __________________________
@ -37,7 +36,6 @@ func (source *Source) FromDB(bs []byte) error {
// ToDB exports an SMTPConfig to a serialized format. // ToDB exports an SMTPConfig to a serialized format.
func (source *Source) ToDB() ([]byte, error) { func (source *Source) ToDB() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(source) return json.Marshal(source)
} }

@ -6,7 +6,7 @@ package sspi
import ( import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
jsoniter "github.com/json-iterator/go" "code.gitea.io/gitea/modules/json"
) )
// _________ ___________________.___ // _________ ___________________.___
@ -32,7 +32,6 @@ func (cfg *Source) FromDB(bs []byte) error {
// ToDB exports an SSPIConfig to a serialized format. // ToDB exports an SSPIConfig to a serialized format.
func (cfg *Source) ToDB() ([]byte, error) { func (cfg *Source) ToDB() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
return json.Marshal(cfg) return json.Marshal(cfg)
} }

@ -14,8 +14,9 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/highlight" "code.gitea.io/gitea/modules/highlight"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
dmp "github.com/sergi/go-diff/diffmatchpatch" dmp "github.com/sergi/go-diff/diffmatchpatch"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"gopkg.in/ini.v1" "gopkg.in/ini.v1"
@ -297,7 +298,7 @@ index 6961180..9ba1a00 100644
t.Errorf("ParsePatch(%q) error = %v, wantErr %v", testcase.name, err, testcase.wantErr) t.Errorf("ParsePatch(%q) error = %v, wantErr %v", testcase.name, err, testcase.wantErr)
return return
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
gotMarshaled, _ := json.MarshalIndent(got, "", " ") gotMarshaled, _ := json.MarshalIndent(got, "", " ")
if got.NumFiles != 1 { if got.NumFiles != 1 {
t.Errorf("ParsePath(%q) did not receive 1 file:\n%s", testcase.name, string(gotMarshaled)) t.Errorf("ParsePath(%q) did not receive 1 file:\n%s", testcase.name, string(gotMarshaled))

@ -12,11 +12,11 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/convert" "code.gitea.io/gitea/modules/convert"
"code.gitea.io/gitea/modules/json"
lfs_module "code.gitea.io/gitea/modules/lfs" lfs_module "code.gitea.io/gitea/modules/lfs"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
) )
func handleLockListOut(ctx *context.Context, repo *models.Repository, lock *models.LFSLock, err error) { func handleLockListOut(ctx *context.Context, repo *models.Repository, lock *models.LFSLock, err error) {
@ -159,7 +159,7 @@ func PostLockHandler(ctx *context.Context) {
var req api.LFSLockRequest var req api.LFSLockRequest
bodyReader := ctx.Req.Body bodyReader := ctx.Req.Body
defer bodyReader.Close() defer bodyReader.Close()
json := jsoniter.ConfigCompatibleWithStandardLibrary
dec := json.NewDecoder(bodyReader) dec := json.NewDecoder(bodyReader)
if err := dec.Decode(&req); err != nil { if err := dec.Decode(&req); err != nil {
log.Warn("Failed to decode lock request as json. Error: %v", err) log.Warn("Failed to decode lock request as json. Error: %v", err)
@ -293,7 +293,7 @@ func UnLockHandler(ctx *context.Context) {
var req api.LFSLockDeleteRequest var req api.LFSLockDeleteRequest
bodyReader := ctx.Req.Body bodyReader := ctx.Req.Body
defer bodyReader.Close() defer bodyReader.Close()
json := jsoniter.ConfigCompatibleWithStandardLibrary
dec := json.NewDecoder(bodyReader) dec := json.NewDecoder(bodyReader)
if err := dec.Decode(&req); err != nil { if err := dec.Decode(&req); err != nil {
log.Warn("Failed to decode lock request as json. Error: %v", err) log.Warn("Failed to decode lock request as json. Error: %v", err)

@ -17,12 +17,12 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/json"
lfs_module "code.gitea.io/gitea/modules/lfs" lfs_module "code.gitea.io/gitea/modules/lfs"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
"github.com/golang-jwt/jwt" "github.com/golang-jwt/jwt"
jsoniter "github.com/json-iterator/go"
) )
// requestContext contain variables from the HTTP request. // requestContext contain variables from the HTTP request.
@ -243,7 +243,7 @@ func BatchHandler(ctx *context.Context) {
ctx.Resp.Header().Set("Content-Type", lfs_module.MediaType) ctx.Resp.Header().Set("Content-Type", lfs_module.MediaType)
enc := jsoniter.NewEncoder(ctx.Resp) enc := json.NewEncoder(ctx.Resp)
if err := enc.Encode(respobj); err != nil { if err := enc.Encode(respobj); err != nil {
log.Error("Failed to encode representation as json. Error: %v", err) log.Error("Failed to encode representation as json. Error: %v", err)
} }
@ -336,7 +336,7 @@ func VerifyHandler(ctx *context.Context) {
func decodeJSON(req *http.Request, v interface{}) error { func decodeJSON(req *http.Request, v interface{}) error {
defer req.Body.Close() defer req.Body.Close()
dec := jsoniter.NewDecoder(req.Body) dec := json.NewDecoder(req.Body)
return dec.Decode(v) return dec.Decode(v)
} }
@ -429,7 +429,7 @@ func writeStatusMessage(ctx *context.Context, status int, message string) {
er := lfs_module.ErrorResponse{Message: message} er := lfs_module.ErrorResponse{Message: message}
enc := jsoniter.NewEncoder(ctx.Resp) enc := json.NewEncoder(ctx.Resp)
if err := enc.Encode(er); err != nil { if err := enc.Encode(er); err != nil {
log.Error("Failed to encode error response as json. Error: %v", err) log.Error("Failed to encode error response as json. Error: %v", err)
} }

@ -16,11 +16,11 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/notification"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
issue_service "code.gitea.io/gitea/services/issue" issue_service "code.gitea.io/gitea/services/issue"
jsoniter "github.com/json-iterator/go"
) )
// NewPullRequest creates new pull request with labels for repository. // NewPullRequest creates new pull request with labels for repository.
@ -86,7 +86,6 @@ func NewPullRequest(repo *models.Repository, pull *models.Issue, labelIDs []int6
data.CommitIDs = append(data.CommitIDs, e.Value.(*git.Commit).ID.String()) data.CommitIDs = append(data.CommitIDs, e.Value.(*git.Commit).ID.String())
} }
json := jsoniter.ConfigCompatibleWithStandardLibrary
dataJSON, err := json.Marshal(data) dataJSON, err := json.Marshal(data)
if err != nil { if err != nil {
return err return err

@ -10,9 +10,9 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
dingtalk "github.com/lunny/dingtalk_webhook" dingtalk "github.com/lunny/dingtalk_webhook"
) )
@ -27,7 +27,6 @@ var (
// JSONPayload Marshals the DingtalkPayload to json // JSONPayload Marshals the DingtalkPayload to json
func (d *DingtalkPayload) JSONPayload() ([]byte, error) { func (d *DingtalkPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.MarshalIndent(d, "", " ") data, err := json.MarshalIndent(d, "", " ")
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err

@ -12,10 +12,10 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
) )
type ( type (
@ -68,7 +68,6 @@ type (
// GetDiscordHook returns discord metadata // GetDiscordHook returns discord metadata
func GetDiscordHook(w *models.Webhook) *DiscordMeta { func GetDiscordHook(w *models.Webhook) *DiscordMeta {
s := &DiscordMeta{} s := &DiscordMeta{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(w.Meta), s); err != nil { if err := json.Unmarshal([]byte(w.Meta), s); err != nil {
log.Error("webhook.GetDiscordHook(%d): %v", w.ID, err) log.Error("webhook.GetDiscordHook(%d): %v", w.ID, err)
} }
@ -99,7 +98,6 @@ var (
// JSONPayload Marshals the DiscordPayload to json // JSONPayload Marshals the DiscordPayload to json
func (d *DiscordPayload) JSONPayload() ([]byte, error) { func (d *DiscordPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.MarshalIndent(d, "", " ") data, err := json.MarshalIndent(d, "", " ")
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err
@ -250,7 +248,6 @@ func GetDiscordPayload(p api.Payloader, event models.HookEventType, meta string)
s := new(DiscordPayload) s := new(DiscordPayload)
discord := &DiscordMeta{} discord := &DiscordMeta{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(meta), &discord); err != nil { if err := json.Unmarshal([]byte(meta), &discord); err != nil {
return s, errors.New("GetDiscordPayload meta json:" + err.Error()) return s, errors.New("GetDiscordPayload meta json:" + err.Error())
} }

@ -10,8 +10,8 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
) )
type ( type (
@ -37,7 +37,6 @@ func newFeishuTextPayload(text string) *FeishuPayload {
// JSONPayload Marshals the FeishuPayload to json // JSONPayload Marshals the FeishuPayload to json
func (f *FeishuPayload) JSONPayload() ([]byte, error) { func (f *FeishuPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.MarshalIndent(f, "", " ") data, err := json.MarshalIndent(f, "", " ")
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err

@ -15,10 +15,10 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
) )
const matrixPayloadSizeLimit = 1024 * 64 const matrixPayloadSizeLimit = 1024 * 64
@ -39,7 +39,6 @@ var messageTypeText = map[int]string{
// GetMatrixHook returns Matrix metadata // GetMatrixHook returns Matrix metadata
func GetMatrixHook(w *models.Webhook) *MatrixMeta { func GetMatrixHook(w *models.Webhook) *MatrixMeta {
s := &MatrixMeta{} s := &MatrixMeta{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(w.Meta), s); err != nil { if err := json.Unmarshal([]byte(w.Meta), s); err != nil {
log.Error("webhook.GetMatrixHook(%d): %v", w.ID, err) log.Error("webhook.GetMatrixHook(%d): %v", w.ID, err)
} }
@ -78,7 +77,6 @@ type MatrixPayloadSafe struct {
// JSONPayload Marshals the MatrixPayloadUnsafe to json // JSONPayload Marshals the MatrixPayloadUnsafe to json
func (m *MatrixPayloadUnsafe) JSONPayload() ([]byte, error) { func (m *MatrixPayloadUnsafe) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.MarshalIndent(m, "", " ") data, err := json.MarshalIndent(m, "", " ")
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err
@ -228,7 +226,6 @@ func GetMatrixPayload(p api.Payloader, event models.HookEventType, meta string)
s := new(MatrixPayloadUnsafe) s := new(MatrixPayloadUnsafe)
matrix := &MatrixMeta{} matrix := &MatrixMeta{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(meta), &matrix); err != nil { if err := json.Unmarshal([]byte(meta), &matrix); err != nil {
return s, errors.New("GetMatrixPayload meta json:" + err.Error()) return s, errors.New("GetMatrixPayload meta json:" + err.Error())
} }
@ -262,7 +259,6 @@ func getMessageBody(htmlText string) string {
// The access_token is removed from t.PayloadContent // The access_token is removed from t.PayloadContent
func getMatrixHookRequest(w *models.Webhook, t *models.HookTask) (*http.Request, error) { func getMatrixHookRequest(w *models.Webhook, t *models.HookTask) (*http.Request, error) {
payloadunsafe := MatrixPayloadUnsafe{} payloadunsafe := MatrixPayloadUnsafe{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(t.PayloadContent), &payloadunsafe); err != nil { if err := json.Unmarshal([]byte(t.PayloadContent), &payloadunsafe); err != nil {
log.Error("Matrix Hook delivery failed: %v", err) log.Error("Matrix Hook delivery failed: %v", err)
return nil, err return nil, err

@ -10,8 +10,8 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
) )
type ( type (
@ -57,7 +57,6 @@ type (
// JSONPayload Marshals the MSTeamsPayload to json // JSONPayload Marshals the MSTeamsPayload to json
func (m *MSTeamsPayload) JSONPayload() ([]byte, error) { func (m *MSTeamsPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.MarshalIndent(m, "", " ") data, err := json.MarshalIndent(m, "", " ")
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err

@ -11,10 +11,10 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
) )
// SlackMeta contains the slack metadata // SlackMeta contains the slack metadata
@ -28,7 +28,6 @@ type SlackMeta struct {
// GetSlackHook returns slack metadata // GetSlackHook returns slack metadata
func GetSlackHook(w *models.Webhook) *SlackMeta { func GetSlackHook(w *models.Webhook) *SlackMeta {
s := &SlackMeta{} s := &SlackMeta{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(w.Meta), s); err != nil { if err := json.Unmarshal([]byte(w.Meta), s); err != nil {
log.Error("webhook.GetSlackHook(%d): %v", w.ID, err) log.Error("webhook.GetSlackHook(%d): %v", w.ID, err)
} }
@ -58,7 +57,6 @@ type SlackAttachment struct {
// JSONPayload Marshals the SlackPayload to json // JSONPayload Marshals the SlackPayload to json
func (s *SlackPayload) JSONPayload() ([]byte, error) { func (s *SlackPayload) JSONPayload() ([]byte, error) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.MarshalIndent(s, "", " ") data, err := json.MarshalIndent(s, "", " ")
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err
@ -279,7 +277,6 @@ func GetSlackPayload(p api.Payloader, event models.HookEventType, meta string) (
s := new(SlackPayload) s := new(SlackPayload)
slack := &SlackMeta{} slack := &SlackMeta{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(meta), &slack); err != nil { if err := json.Unmarshal([]byte(meta), &slack); err != nil {
return s, errors.New("GetSlackPayload meta json:" + err.Error()) return s, errors.New("GetSlackPayload meta json:" + err.Error())
} }

@ -10,10 +10,10 @@ import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/markup" "code.gitea.io/gitea/modules/markup"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
) )
type ( type (
@ -34,7 +34,6 @@ type (
// GetTelegramHook returns telegram metadata // GetTelegramHook returns telegram metadata
func GetTelegramHook(w *models.Webhook) *TelegramMeta { func GetTelegramHook(w *models.Webhook) *TelegramMeta {
s := &TelegramMeta{} s := &TelegramMeta{}
json := jsoniter.ConfigCompatibleWithStandardLibrary
if err := json.Unmarshal([]byte(w.Meta), s); err != nil { if err := json.Unmarshal([]byte(w.Meta), s); err != nil {
log.Error("webhook.GetTelegramHook(%d): %v", w.ID, err) log.Error("webhook.GetTelegramHook(%d): %v", w.ID, err)
} }
@ -50,7 +49,6 @@ func (t *TelegramPayload) JSONPayload() ([]byte, error) {
t.ParseMode = "HTML" t.ParseMode = "HTML"
t.DisableWebPreview = true t.DisableWebPreview = true
t.Message = markup.Sanitize(t.Message) t.Message = markup.Sanitize(t.Message)
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, err := json.MarshalIndent(t, "", " ") data, err := json.MarshalIndent(t, "", " ")
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err

@ -5,12 +5,12 @@
package webhook package webhook
import ( import (
"encoding/json"
"fmt" "fmt"
"strings" "strings"
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/json"
api "code.gitea.io/gitea/modules/structs" api "code.gitea.io/gitea/modules/structs"
) )

Loading…
Cancel
Save