github.com/kayoticsully/syncthing@v0.8.9-0.20140724133906-c45a2fdc03f8/cmd/stevents/main.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "flag" 6 "fmt" 7 "log" 8 "net/http" 9 "os" 10 "time" 11 ) 12 13 type event struct { 14 ID int `json:"id"` 15 Type string `json:"type"` 16 Time time.Time `json:"time"` 17 Data map[string]interface{} `json:"data"` 18 } 19 20 func main() { 21 log.SetOutput(os.Stdout) 22 log.SetFlags(0) 23 24 target := flag.String("target", "localhost:8080", "Target Syncthing instance") 25 apikey := flag.String("apikey", "", "Syncthing API key") 26 flag.Parse() 27 28 if *apikey == "" { 29 log.Fatal("Must give -apikey argument") 30 } 31 32 since := 0 33 for { 34 req, err := http.NewRequest("GET", fmt.Sprintf("http://%s/rest/events?since=%d", *target, since), nil) 35 if err != nil { 36 log.Fatal(err) 37 } 38 req.Header.Set("X-API-Key", *apikey) 39 res, err := http.DefaultClient.Do(req) 40 if err != nil { 41 log.Fatal(err) 42 } 43 44 var events []event 45 err = json.NewDecoder(res.Body).Decode(&events) 46 if err != nil { 47 log.Fatal(err) 48 } 49 res.Body.Close() 50 51 for _, event := range events { 52 bs, _ := json.MarshalIndent(event, "", " ") 53 log.Printf("%s", bs) 54 since = event.ID 55 } 56 } 57 }