resty

package module
v0.0.0-...-fc1fc15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 11, 2022 License: Apache-2.0 Imports: 4 Imported by: 0

README

Go2sky with go-resty(v2.2.0)

Installation

go get -u github.com/powerapm/go2sky-plugins/resty

Usage

package main

import (
	"log"

	"github.com/powerapm/go2sky"
	"github.com/powerapm/go2sky-plugins/resty"
	"github.com/powerapm/go2sky/reporter"
)

func main() {
	// Use gRPC reporter for production
	re, err := reporter.NewLogReporter()
	if err != nil {
		log.Fatalf("new reporter error %v \n", err)
	}
	defer re.Close()

	tracer, err := go2sky.NewTracer("gin-server", go2sky.WithReporter(re))
	if err != nil {
		log.Fatalf("create tracer error %v \n", err)
	}

	// create resty client
	client := resty.NewGoResty(tracer)
	// do something
}

See more

Documentation

Overview

Package resty (go-resty) is a plugin that can be used to trace GO Resty framework.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewGoResty

func NewGoResty(tracer *go2sky.Tracer, options ...http.ClientOption) *resty.Client

NewGoResty returns a resty Client with tracer

Example
package main

import (
	"fmt"
	"log"
	"net/http"
	"net/http/httptest"
	"time"

	"github.com/powerapm/go2sky"
	httpPlugin "github.com/powerapm/go2sky/plugins/http"
	"github.com/powerapm/go2sky/reporter"
)

func main() {
	// Use log reporter for production
	r, err := reporter.NewLogReporter()
	if err != nil {
		log.Fatalf("new reporter error %v \n", err)
	}
	defer r.Close()

	tracer, err := go2sky.NewTracer("example", go2sky.WithReporter(r))
	if err != nil {
		log.Fatalf("create tracer error %v \n", err)
	}

	sm, err := httpPlugin.NewServerMiddleware(tracer)
	if err != nil {
		log.Fatalf("create server middleware error %v \n", err)
	}

	// create test server
	ts := httptest.NewServer(sm(endFunc()))
	defer ts.Close()

	// create resty client
	client := NewGoResty(tracer)
	resp, err := client.R().Get(fmt.Sprintf("%s/end", ts.URL))

	if err != nil {
		log.Fatalf("unable to do http request: %+v\n", err)
	}

	_ = resp.RawResponse.Body.Close()

	time.Sleep(time.Second)
}

func endFunc() http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		log.Printf("end func called with method: %s\n", r.Method)
		time.Sleep(50 * time.Millisecond)
	}
}
Output:

Types

This section is empty.

Directories

Path Synopsis
test

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL