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
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
|
|
}
|
|
|