Skip to content

Instantly share code, notes, and snippets.

@javi830810
Created June 8, 2016 21:39
Show Gist options
  • Save javi830810/96dab4e988f513c307eedb9ac12d8d36 to your computer and use it in GitHub Desktop.
Save javi830810/96dab4e988f513c307eedb9ac12d8d36 to your computer and use it in GitHub Desktop.
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"flag"
"time"
)
type ultiProEvent struct {
Tenant string
EventType string
EventTime string
EventId int
Operation string
Payload interface{}
ClientAccessKey string
}
var eventId int
var lastTimeItWasCalled int64
var twentySeconds int64
var interval int
var batchSize int
var port string
func main() {
flag.IntVar(&batchSize, "batchSize", 10, "BatchSize")
flag.IntVar(&interval, "interval", 24, "Interval in seconds to return batches")
flag.StringVar(&port, "port", "1440", "Port to run the app")
flag.Parse()
lastTimeItWasCalled := time.Now().UnixNano()
twentySeconds := int64(1000000000 * interval)
http.HandleFunc("/api/events", func(w http.ResponseWriter, req *http.Request) {
if time.Now().UnixNano() - lastTimeItWasCalled > twentySeconds {
lastTimeItWasCalled = time.Now().UnixNano()
fmt.Println("got request", eventId)
events := []ultiProEvent{}
start := eventId
for i:=eventId; i < start + batchSize; i++ {
events = append(events, ultiProEvent{
Tenant: "pedro",
EventType: fmt.Sprintf("DED_TEST_%v", i%batchSize),
EventTime: "RIGHT NOW",
EventId: eventId,
Operation: "thingy",
Payload: map[string]string{"Blah": "Blah"},
ClientAccessKey: "yes",
})
eventId++
}
if err := json.NewEncoder(w).Encode(events); err != nil {
log.Printf("error %s\n", err)
}
} else{
return
}
})
if err := http.ListenAndServeTLS(":" + port, "server.pem", "server.key", nil); err != nil{
log.Fatal(err)
}
}
@javi830810
Copy link
Author

Build with: go build main.go

Run with: ./main -port=1440 -interval=10 -batchSize=10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment