/* github.com/buger/jsonparser */ func BenchmarkJsonParserLarge(b *testing.B) { for i := 0; i < b.N; i++ { jsonparser.ArrayEach(largeFixture, func(value []byte, dataType jsonparser.ValueType, offset int, err error) { jsonparser.Get(value, "username") nothing() }, "users") jsonparser.ArrayEach(largeFixture, func(value []byte, dataType jsonparser.ValueType, offset int, err error) { jsonparser.GetInt(value, "id") jsonparser.Get(value, "slug") nothing() }, "topics", "topics") } }
/* github.com/buger/jsonparser */ func BenchmarkJsonParserSmall(b *testing.B) { for i := 0; i < b.N; i++ { jsonparser.Get(smallFixture, "uuid") jsonparser.GetInt(smallFixture, "tz") jsonparser.Get(smallFixture, "ua") jsonparser.GetInt(smallFixture, "st") nothing() } }
func TestEchoPostJSONData(t *testing.T) { r := New() r.POST("/json"). SetJSON(D{ "a": 1, "b": 2, }). Run(framework.EchoEngine(), func(r HTTPResponse, rq HTTPRequest) { data := []byte(r.Body.String()) a, _ := jsonparser.GetInt(data, "a") b, _ := jsonparser.GetInt(data, "b") assert.Equal(t, 1, int(a)) assert.Equal(t, 2, int(b)) assert.Equal(t, http.StatusOK, r.Code) }) }
func TestGinOptions(t *testing.T) { r := New() r.OPTIONS("/options"). SetJSON(D{ "a": 1, "b": 2, }). Run(framework.GinEngine(), func(r HTTPResponse, rq HTTPRequest) { data := []byte(r.Body.String()) a, _ := jsonparser.GetInt(data, "a") b, _ := jsonparser.GetInt(data, "b") assert.Equal(t, 1, int(a)) assert.Equal(t, 2, int(b)) assert.Equal(t, http.StatusOK, r.Code) }) }
/* github.com/buger/jsonparser */ func BenchmarkJsonParserMedium(b *testing.B) { for i := 0; i < b.N; i++ { jsonparser.Get(mediumFixture, "person", "name", "fullName") jsonparser.GetInt(mediumFixture, "person", "github", "followers") jsonparser.Get(mediumFixture, "company") jsonparser.ArrayEach(mediumFixture, func(value []byte, dataType jsonparser.ValueType, offset int, err error) { jsonparser.Get(value, "url") nothing() }, "person", "gravatar", "avatars") } }
func facebookWorker(u utils.Utils, req *request) { start := time.Now() urls := strings.Join(req.Urls, ",") url := prepareFbGraphUrl(u, urls) utils.Verbosef(u, "Calling http.Client.Get(%s)", url) resp, err := u.HttpClient().Get(url) if err != nil { req.Error = err return } defer resp.Body.Close() respBody, err := ioutil.ReadAll(resp.Body) if err != nil { req.Error = err return } req.Response = respBody u.Debugf("facebookWorker(urls=%s) took %s", urls, time.Since(start)) for _, url := range req.Urls { var res result if respUrl, _, _, err := jsonparser.Get(respBody, url); err != nil { res.Error = err res.Response = respBody } else { res.Response = respUrl if shareCount, err := jsonparser.GetInt(respUrl, "share", "share_count"); err != nil { // it's alright, for new urls Facebook does not return share.share_count at all res.Count = COUNT_INITIAL_VALUE } else { res.Count = shareCount } } req.Results[url] = res } return }
func twitterLegacy(u utils.Utils, url string) result { var res result start := time.Now() oscUrl := "http://opensharecount.com/count.json?url=" + neturl.QueryEscape(url) utils.Verbosef(u, "Calling http.Client.Get(%s)", oscUrl) resp, err := u.HttpClient().Get(oscUrl) if err != nil { res.Error = err return res } defer resp.Body.Close() respBody, err := ioutil.ReadAll(resp.Body) if err != nil { res.Error = err return res } res.Response = respBody u.Debugf("twitterLegacy(url=%s) took %s", url, time.Since(start)) if count, err := jsonparser.GetInt(respBody, "count"); err != nil { res.Error = err return res } else { if count == 0 { if oscError, err := jsonparser.GetString(respBody, "error"); err != nil { res.Error = errors.New(oscError) return res } } res.Count = count } return res }