package main import ( "bitbucket.org/skobkin/point-tools-crawler/point" "bitbucket.org/skobkin/point-tools-crawler/point_tools" "flag" "fmt" "log" "strconv" "time" ) func main() { var login, password string flag.StringVar(&login, "l", "", "Account login") flag.StringVar(&password, "p", "", "Account password") flag.Parse() if len(login) < 1 || len(password) < 1 { fmt.Println("Login and password must be defined") return } pointClient := point.NewClient("https://point.im/api/") pointToolsClient := point_tools.NewClient("http://point-tools.local:8000/api/crawler/", "test_token") _, loginErr := pointClient.Login(login, password) if loginErr != nil { fmt.Printf("Login error %s", loginErr) return } else { fmt.Printf("Successfully authenticated!\n") } page, reqErr := pointClient.GetRecentAllPostsPage() if reqErr != nil { log.Fatal(reqErr) return } fmt.Printf("1 page requested\n") if len(page.Posts) > 0 { fmt.Println("Last uid", strconv.Itoa(page.Posts[len(page.Posts)-1].Uid)) } sendResp, sendErr := pointToolsClient.SendPage(page) if sendErr != nil { log.Fatal(sendErr) } if point_tools.STATUS_SUCCESS != sendResp.Status || false == sendResp.Data.Continue { fmt.Println("API rejected next page request") fmt.Println("Exiting.") return } pageNumber := 1 for page.HasNext { pageNumber++ page, reqErr = pointClient.GetNextAllPostsPage(page) if reqErr != nil { log.Fatal(reqErr) return } fmt.Printf("%d page requested", pageNumber) if len(page.Posts) > 0 { fmt.Printf(", last uid %d", page.Posts[len(page.Posts)-1].Uid) } fmt.Printf(" -> %d posts\n", len(page.Posts)) sendResp, sendErr := pointToolsClient.SendPage(page) if sendErr != nil { log.Fatal(sendErr) } if point_tools.STATUS_SUCCESS != sendResp.Status || false == sendResp.Data.Continue { fmt.Println("API rejected next page request") break } time.Sleep(time.Second) } fmt.Println("Exiting.") }