Skip to content

Instantly share code, notes, and snippets.

@odeke-em
Created August 22, 2017 10:51
Show Gist options
  • Save odeke-em/37c40e25d7db319ace5973610b6a7bab to your computer and use it in GitHub Desktop.
Save odeke-em/37c40e25d7db319ace5973610b6a7bab to your computer and use it in GitHub Desktop.
Uber Driver API implemented in Go

Go get it

go get -u -v github.com/orijtech/uber/v1

Requirements

You just need to have a serialized OAuth2.0 JSON configuration file saved in in $HOME/.uber/credentials.json

Running them

For each file, just do:

go run <fileName.go>

e.g

go run driverProfile.go
package main
import (
"fmt"
"log"
"os"
"time"
"github.com/orijtech/uber/v1"
)
func main() {
client, err := uber.NewClientFromOAuth2File(os.ExpandEnv("$HOME/.uber/credentials.json"))
if err != nil {
log.Fatal(err)
}
prof, err := client.DriverProfile()
if err != nil {
log.Fatal(err)
}
fmt.Printf("Rating: %.2f\nFirst Name: %s\nLast Name: %s\n",
prof.Rating, prof.FirstName, prof.LastName)
}
package main
import (
"fmt"
"log"
"os"
"time"
"github.com/orijtech/uber/v1"
)
func main() {
client, err := uber.NewClientFromOAuth2File(os.ExpandEnv("$HOME/.uber/credentials.json"))
if err != nil {
log.Fatal(err)
}
aWeekAgo := time.Now().Add(-1 * time.Hour * 7 * 24)
yesterday := time.Now().Add(-1 * time.Hour * 24)
payments, err := client.ListDriverPayments(&uber.DriverInfoQuery{
StartDate: &aWeekAgo,
EndDate: &yesterday,
})
if err != nil {
log.Fatal(err)
}
for page := range payments.Pages {
if page.Err != nil {
fmt.Printf("%d err: %v\n", page.PageNumber, page.Err)
continue
}
for i, payment := range page.Payments {
fmt.Printf("\t%d:: %#v\n", i, payment)
}
fmt.Println()
}
}
package main
import (
"fmt"
"log"
"os"
"time"
"github.com/orijtech/uber/v1"
)
func main() {
client, err := uber.NewClientFromOAuth2File(os.ExpandEnv("$HOME/.uber/credentials.json"))
if err != nil {
log.Fatal(err)
}
aWeekAgo := time.Now().Add(-1 * time.Hour * 7 * 24)
yesterday := time.Now().Add(-1 * time.Hour * 24)
trips, err := client.ListDriverTrips(&uber.DriverInfoQuery{
StartDate: &aWeekAgo,
EndDate: &yesterday,
MaxPageNumber: 2,
Offset: 4,
})
if err != nil {
log.Fatal(err)
}
for page := range trips.Pages {
if page.Err != nil {
fmt.Printf("%d err: %v\n", page.PageNumber, page.Err)
continue
}
for i, trip := range page.Trips {
fmt.Printf("\t%d:: DriverID: %q\nFare: %.2f\n%#v\n", i, trip.DriverID, trip.Fare, trip)
}
fmt.Println()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment