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  }