You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.4 KiB

package track
import (
"context"
"errors"
"github.com/carlmjohnson/requests"
)
const Key = "ce71hxnz-6fms-4dg3-nux8-qluff9ymmqjb"
func CreateTrack(req CreateTrackRequest) (CreateTrackReply, error) {
url := "http://api.51Tracking.com/v4/trackings/create"
var reply CreateTrackReply
var errBody ErrBody
err := requests.URL(url).Header("Tracking-Api-Key", Key).BodyJSON(CreateTrackRequest{
TrackingNumber: req.TrackingNumber,
CourierCode: req.CourierCode,
}).ToJSON(&reply).AddValidator(
requests.ValidatorHandler(
requests.DefaultValidator,
requests.ToJSON(&errBody),
)).Fetch(context.Background())
if errBody.Meta.Code != 200 {
return reply, errors.New(errBody.Meta.Message)
}
if err != nil {
return reply, err
}
return reply, nil
}
func GetTrack(trackNum string) (GetTrackReply, error) {
url := `http://api.51Tracking.com/v4/trackings/get?tracking_numbers=` + trackNum
var reply GetTrackReply
err := requests.URL(url).Header("Tracking-Api-Key", Key).ToJSON(&reply).Fetch(context.Background())
if err != nil {
return reply, err
}
return reply, nil
}
func ListCouriers() (ListCouriersReply, error) {
var couriers ListCouriersReply
url := `http://api.51Tracking.com/v4/couriers/all`
err := requests.URL(url).Header("Tracking-Api-Key", Key).ToJSON(&couriers).Fetch(context.Background())
if err != nil {
return couriers, err
}
return couriers, nil
}