Created
June 8, 2016 21:39
-
-
Save javi830810/96dab4e988f513c307eedb9ac12d8d36 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Build with: go build main.go
Run with: ./main -port=1440 -interval=10 -batchSize=10