func main() {
	rand.Seed(time.Now().UnixNano()) // takes the current time in nanoseconds as the seed

	var pub = os.Getenv("AWSPUB")
	var secret = os.Getenv("AWSSecret")
	auth := aws.Auth{AccessKey: pub, SecretKey: secret}
	K := kinesis.New(auth, aws.USEast)
	var wg sync.WaitGroup
	for i := 0; i < 10; i++ {
		problemMap := make(map[string]int)
		problemMap["Num1"] = rand.Intn(100)
		problemMap["Num2"] = rand.Intn(100)
		jsonData, jsonErr := json.Marshal(problemMap)
		if jsonErr != nil {
			log.Println("Error:", jsonErr)
			continue
		}
		wg.Add(1)
		go func() {
			defer wg.Done()
			_, err2 := K.PutRecord("math-problems", "math-p", jsonData, "", "")
			log.Println("[", problemMap["Num1"], ",", problemMap["Num2"], "] ...sent!")
			if err2 != nil {
				log.Println("Error:", err2)
			}
		}()
		wg.Wait()
	}
}
func main() {
	pub, secret, _ := getSettings()
	auth := aws.Auth{AccessKey: pub, SecretKey: secret}
	K := kinesis.New(auth, aws.USEast)
	tm := topicMessage{}
	tm.TopicID = 1
	tm.Message = "THIS IS THIS MESSAGE PAYLOAD THAT WILL GO TO THE USER!!!!!"

	jsonData, jsonErr := json.Marshal(&tm)
	if jsonErr != nil {
		log.Println("Error:", jsonErr)
		return
	}

	_, err := K.PutRecord("topic-message", "topic-msg", jsonData, "", "")
	if err != nil {
		log.Println("Error:", err)
	}
	log.Println("Done!")

}
func main() {
	var errIP error
	if lambdaIP, errIP = getlambdaIP(); errIP != nil {
		log.Println(errIP)
		return
	}
	pub, secret, sg, _ := getSettings()
	auth := aws.Auth{AccessKey: pub, SecretKey: secret}
	K := kinesis.New(auth, aws.USEast)
	for k, v := range os.Args {
		log.Println(k, v)
	}
	log.Println("-----")
	if len(os.Args) > 1 {
		rawData := os.Args[1]

		var kpayload KinesisPayload
		err := json.Unmarshal([]byte(rawData), &kpayload)
		if err != nil {
			log.Println("Error Kinesisis Payload:", err)
		}
		for _, v := range kpayload.Records {
			log.Println("Record:", v)
			var tm topicMessage
			sDec, errDec := base64.StdEncoding.DecodeString(v.Kinesis.Data)
			if errDec != nil {
				log.Println("Error:", errDec)
			} else {
				log.Println(string(sDec))
				errJSON := json.Unmarshal(sDec, &tm)
				if errJSON != nil {
					log.Println("Error:", errJSON)
					return
				}
				AddIPToGroup(pub, secret, sg)
				pageCount := getDevicesByTopicIDPageCount(tm.TopicID)
				RemoveIPFromGroup(pub, secret, sg)
				publishMessage("Count: 1st page sent")
				for i := 0; i < pageCount; i++ {
					tpm := topicPageMessage{}
					tpm.Message = tm.Message
					tpm.TopicID = tm.TopicID
					tpm.PageNum = i + 1
					if i+1 == pageCount {
						tpm.LastPage = true
						log.Println("LastPage is", i+1)
					}
					jsonData, jsonErr := json.Marshal(&tpm)
					if jsonErr != nil {
						log.Println("Error:", jsonErr)
						break
					}
					_, err := K.PutRecord("topic-message-page", "topic-page", jsonData, "", "")
					if tpm.LastPage {
						publishMessage(fmt.Sprintf("Count: Last Page Sent: %v", pageCount))
					}
					if err != nil {
						log.Println("Error:", err)
					}
					log.Println("Sent...", tpm)
				}
				log.Println("All done!")
			}
		}
		return

	}
	log.Println("Error: os.Args was 1 length.")
}