/kargo

Kargo determines the carrier of a tracking number barcode and checks if that tracking number is valid

Primary LanguageGoGNU General Public License v3.0GPL-3.0

LogoKargo

GoDoc Build Status Coverage Status

Kargo determines carrier of the tracking number barcode and checks if that tracking number barcode is valid by matching the format and calculating checksum validity. Feel free to create pull requests and issues.

Package supports

  • UPS
  • FedEx Express
  • FedEx Ground "96"
  • USPS IMpb
  • USPS UPU S10
  • USPS 20

But more on the way

  • DHL

Install

go get github.com/unicod3/kargo

Usage and Examples

Kargo's usage is pretty straight forward, supply a tracking number and get the Package struct

package main

import (
	"fmt"
	"github.com/unicod3/kargo"
)

func main() {
	pkg, err := kargo.Identify("1Z999AA10123456784")
	if err != nil {
		fmt.Println(err)
	}

	var trackingNumber string = pkg.TrackingNumber
	var carrier string = pkg.Carrier
	var isValid bool = pkg.IsValid
	fmt.Printf("Tracking Number: %v, Carrier: %v, Is Valid: %t",
		trackingNumber, carrier, isValid)
}

Output: Tracking Number: 1Z999AA10123456784, Carrier: UPS, Is Valid: true

For more examples please check out the test files.

Running the tests

You can run tests with standard test tool of Go:

go test -v 

Changelog

Version 1.1.2

  • Added support for USPS; IMpb, UPU S10, 20 character barcodes
  • Removed the unnecessary prefix from filenames
  • Improved the tests

Version 1.0.1

  • Fix stringutils package dependency issue

Version 1.0.0

  • Initial release

License

GNU General Public License v3.0 - see LICENSE for more details