Adding upstream version 0.10.5.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
104c0c203d
commit
e733edafba
141 changed files with 102352 additions and 0 deletions
363
benchmarks/medium_payload.go
Normal file
363
benchmarks/medium_payload.go
Normal file
|
@ -0,0 +1,363 @@
|
|||
package benchmark
|
||||
|
||||
import "github.com/francoispqt/gojay"
|
||||
|
||||
// Response from Clearbit API. Size: 2.4kb
|
||||
var MediumFixture = []byte(`{
|
||||
"person": {
|
||||
"id": "d50887ca-a6ce-4e59-b89f-14f0b5d03b03",
|
||||
"name": {
|
||||
"fullName": "Leonid Bugaev",
|
||||
"givenName": "Leonid",
|
||||
"familyName": "Bugaev"
|
||||
},
|
||||
"email": "leonsbox@gmail.com",
|
||||
"gender": "male",
|
||||
"location": "Saint Petersburg, Saint Petersburg, RU",
|
||||
"geo": {
|
||||
"city": "Saint Petersburg",
|
||||
"state": "Saint Petersburg",
|
||||
"country": "Russia",
|
||||
"lat": 59.9342802,
|
||||
"lng": 30.3350986
|
||||
},
|
||||
"bio": "Senior engineer at Granify.com",
|
||||
"site": "http://flickfaver.com",
|
||||
"avatar": "https://d1ts43dypk8bqh.cloudfront.net/v1/avatars/d50887ca-a6ce-4e59-b89f-14f0b5d03b03",
|
||||
"employment": {
|
||||
"name": "www.latera.ru",
|
||||
"title": "Software Engineer",
|
||||
"domain": "gmail.com"
|
||||
},
|
||||
"facebook": {
|
||||
"handle": "leonid.bugaev"
|
||||
},
|
||||
"github": {
|
||||
"handle": "buger",
|
||||
"id": 14009,
|
||||
"avatar": "https://avatars.githubusercontent.com/u/14009?v=3",
|
||||
"company": "Granify",
|
||||
"blog": "http://leonsbox.com",
|
||||
"followers": 95,
|
||||
"following": 10
|
||||
},
|
||||
"twitter": {
|
||||
"handle": "flickfaver",
|
||||
"id": 77004410,
|
||||
"bio": null,
|
||||
"followers": 2,
|
||||
"following": 1,
|
||||
"statuses": 5,
|
||||
"favorites": 0,
|
||||
"location": "",
|
||||
"site": "http://flickfaver.com",
|
||||
"avatar": null
|
||||
},
|
||||
"linkedin": {
|
||||
"handle": "in/leonidbugaev"
|
||||
},
|
||||
"googleplus": {
|
||||
"handle": null
|
||||
},
|
||||
"angellist": {
|
||||
"handle": "leonid-bugaev",
|
||||
"id": 61541,
|
||||
"bio": "Senior engineer at Granify.com",
|
||||
"blog": "http://buger.github.com",
|
||||
"site": "http://buger.github.com",
|
||||
"followers": 41,
|
||||
"avatar": "https://d1qb2nb5cznatu.cloudfront.net/users/61541-medium_jpg?1405474390"
|
||||
},
|
||||
"klout": {
|
||||
"handle": null,
|
||||
"score": null
|
||||
},
|
||||
"foursquare": {
|
||||
"handle": null
|
||||
},
|
||||
"aboutme": {
|
||||
"handle": "leonid.bugaev",
|
||||
"bio": null,
|
||||
"avatar": null
|
||||
},
|
||||
"gravatar": {
|
||||
"handle": "buger",
|
||||
"urls": [
|
||||
],
|
||||
"avatar": "http://1.gravatar.com/avatar/f7c8edd577d13b8930d5522f28123510",
|
||||
"avatars": [
|
||||
{
|
||||
"url": "http://1.gravatar.com/avatar/f7c8edd577d13b8930d5522f28123510",
|
||||
"type": "thumbnail"
|
||||
}
|
||||
]
|
||||
},
|
||||
"fuzzy": false
|
||||
},
|
||||
"company": null
|
||||
}`)
|
||||
|
||||
type CBAvatar struct {
|
||||
Url string
|
||||
}
|
||||
|
||||
func (m *CBAvatar) UnmarshalJSONObject(dec *gojay.Decoder, key string) error {
|
||||
switch key {
|
||||
case "avatars":
|
||||
return dec.AddString(&m.Url)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *CBAvatar) NKeys() int {
|
||||
return 1
|
||||
}
|
||||
|
||||
func (m *CBAvatar) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.AddStringKey("url", m.Url)
|
||||
}
|
||||
|
||||
func (m *CBAvatar) IsNil() bool {
|
||||
return m == nil
|
||||
}
|
||||
|
||||
type Avatars []*CBAvatar
|
||||
|
||||
func (t *Avatars) UnmarshalJSONArray(dec *gojay.Decoder) error {
|
||||
avatar := CBAvatar{}
|
||||
*t = append(*t, &avatar)
|
||||
return dec.AddObject(&avatar)
|
||||
}
|
||||
|
||||
func (m *Avatars) MarshalJSONArray(enc *gojay.Encoder) {
|
||||
for _, e := range *m {
|
||||
enc.AddObject(e)
|
||||
}
|
||||
}
|
||||
func (m *Avatars) IsNil() bool {
|
||||
return m == nil
|
||||
}
|
||||
|
||||
type CBGravatar struct {
|
||||
Avatars Avatars
|
||||
}
|
||||
|
||||
func (m *CBGravatar) UnmarshalJSONObject(dec *gojay.Decoder, key string) error {
|
||||
switch key {
|
||||
case "avatars":
|
||||
return dec.AddArray(&m.Avatars)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *CBGravatar) NKeys() int {
|
||||
return 1
|
||||
}
|
||||
|
||||
func (m *CBGravatar) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.AddArrayKey("avatars", &m.Avatars)
|
||||
}
|
||||
|
||||
func (m *CBGravatar) IsNil() bool {
|
||||
return m == nil
|
||||
}
|
||||
|
||||
type CBGithub struct {
|
||||
Followers int
|
||||
}
|
||||
|
||||
func (m *CBGithub) UnmarshalJSONObject(dec *gojay.Decoder, key string) error {
|
||||
switch key {
|
||||
case "followers":
|
||||
return dec.AddInt(&m.Followers)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CBGithub) NKeys() int {
|
||||
return 1
|
||||
}
|
||||
|
||||
func (m *CBGithub) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.AddIntKey("followers", m.Followers)
|
||||
}
|
||||
|
||||
func (m *CBGithub) IsNil() bool {
|
||||
return m == nil
|
||||
}
|
||||
|
||||
type CBName struct {
|
||||
FullName string `json:"fullName"`
|
||||
}
|
||||
|
||||
func (m *CBName) UnmarshalJSONObject(dec *gojay.Decoder, key string) error {
|
||||
switch key {
|
||||
case "fullName":
|
||||
return dec.AddString(&m.FullName)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CBName) NKeys() int {
|
||||
return 1
|
||||
}
|
||||
|
||||
func (m *CBName) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.AddStringKey("fullName", m.FullName)
|
||||
}
|
||||
|
||||
func (m *CBName) IsNil() bool {
|
||||
return m == nil
|
||||
}
|
||||
|
||||
type CBPerson struct {
|
||||
Name *CBName `json:"name"`
|
||||
Github *CBGithub `json:"github"`
|
||||
Gravatar *CBGravatar
|
||||
}
|
||||
|
||||
func (m *CBPerson) UnmarshalJSONObject(dec *gojay.Decoder, key string) error {
|
||||
switch key {
|
||||
case "name":
|
||||
m.Name = &CBName{}
|
||||
return dec.AddObject(m.Name)
|
||||
case "github":
|
||||
m.Github = &CBGithub{}
|
||||
return dec.AddObject(m.Github)
|
||||
case "gravatar":
|
||||
m.Gravatar = &CBGravatar{}
|
||||
return dec.AddObject(m.Gravatar)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *CBPerson) NKeys() int {
|
||||
return 3
|
||||
}
|
||||
|
||||
func (m *CBPerson) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.AddObjectKey("name", m.Name)
|
||||
enc.AddObjectKey("github", m.Github)
|
||||
enc.AddObjectKey("gravatar", m.Gravatar)
|
||||
}
|
||||
|
||||
func (m *CBPerson) IsNil() bool {
|
||||
return m == nil
|
||||
}
|
||||
|
||||
type MediumPayload struct {
|
||||
Person *CBPerson `json:"person"`
|
||||
Company string `json:"company"`
|
||||
}
|
||||
|
||||
//easyjson:json
|
||||
type MediumPayloadEasyJson struct {
|
||||
Person *CBPerson `json:"person"`
|
||||
Company string `json:"company"`
|
||||
}
|
||||
|
||||
func (m *MediumPayload) UnmarshalJSONObject(dec *gojay.Decoder, key string) error {
|
||||
switch key {
|
||||
case "person":
|
||||
m.Person = &CBPerson{}
|
||||
return dec.AddObject(m.Person)
|
||||
case "company":
|
||||
dec.AddString(&m.Company)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *MediumPayload) NKeys() int {
|
||||
return 2
|
||||
}
|
||||
|
||||
func (m *MediumPayload) MarshalJSONObject(enc *gojay.Encoder) {
|
||||
enc.AddObjectKey("person", m.Person)
|
||||
// enc.AddStringKey("company", m.Company)
|
||||
}
|
||||
|
||||
func (m *MediumPayload) IsNil() bool {
|
||||
return m == nil
|
||||
}
|
||||
|
||||
func NewMediumPayload() *MediumPayload {
|
||||
return &MediumPayload{
|
||||
Company: "test",
|
||||
Person: &CBPerson{
|
||||
Name: &CBName{
|
||||
FullName: "test",
|
||||
},
|
||||
Github: &CBGithub{
|
||||
Followers: 100,
|
||||
},
|
||||
Gravatar: &CBGravatar{
|
||||
Avatars: Avatars{
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func NewMediumPayloadEasyJson() *MediumPayloadEasyJson {
|
||||
return &MediumPayloadEasyJson{
|
||||
Company: "test",
|
||||
Person: &CBPerson{
|
||||
Name: &CBName{
|
||||
FullName: "test",
|
||||
},
|
||||
Github: &CBGithub{
|
||||
Followers: 100,
|
||||
},
|
||||
Gravatar: &CBGravatar{
|
||||
Avatars: Avatars{
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
&CBAvatar{
|
||||
Url: "http://test.com",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue