works
This commit is contained in:
parent
694a93b788
commit
526dcf6dcb
31
main.go
31
main.go
@ -6,6 +6,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Card represents the structure of a card in the API response.
|
// Card represents the structure of a card in the API response.
|
||||||
@ -159,8 +160,10 @@ func fetchCards(limit, cursor int) ([]*Card, error) {
|
|||||||
setHeaders(req)
|
setHeaders(req)
|
||||||
|
|
||||||
// Perform the HTTP request
|
// Perform the HTTP request
|
||||||
|
start := time.Now()
|
||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
|
duration := time.Since(start)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to perform request: %w", err)
|
return nil, fmt.Errorf("failed to perform request: %w", err)
|
||||||
}
|
}
|
||||||
@ -187,22 +190,26 @@ func fetchCards(limit, cursor int) ([]*Card, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Extract cards from the result
|
// Extract cards from the result
|
||||||
|
var cards []*Card
|
||||||
if len(result) > 0 {
|
if len(result) > 0 {
|
||||||
return result[0].Result.Data.JSON.Cards, nil
|
cards = result[0].Result.Data.JSON.Cards
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, nil
|
fmt.Printf("Cursor: %d, Limit: %d, Duration: %s, Status: %d, Cards: %d\n",
|
||||||
|
cursor, limit, duration, resp.StatusCode, len(cards))
|
||||||
|
|
||||||
|
return cards, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
// fetchAllCards fetches all cards by making multiple requests with different cursor values.
|
||||||
const limit = 100
|
func fetchAllCards(limit int) ([]*Card, error) {
|
||||||
var allCards []*Card
|
var allCards []*Card
|
||||||
cursor := 0
|
cursor := 0
|
||||||
|
|
||||||
for {
|
for {
|
||||||
cards, err := fetchCards(limit, cursor)
|
cards, err := fetchCards(limit, cursor)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logErrorAndExit(err)
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
allCards = append(allCards, cards...)
|
allCards = append(allCards, cards...)
|
||||||
@ -216,6 +223,17 @@ func main() {
|
|||||||
cursor += limit
|
cursor += limit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return allCards, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
const limit = 100
|
||||||
|
|
||||||
|
allCards, err := fetchAllCards(limit)
|
||||||
|
if err != nil {
|
||||||
|
logErrorAndExit(err)
|
||||||
|
}
|
||||||
|
|
||||||
// Write all cards to cards.json in the current working directory
|
// Write all cards to cards.json in the current working directory
|
||||||
file, err := os.Create("cards.json")
|
file, err := os.Create("cards.json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -233,7 +251,7 @@ func main() {
|
|||||||
logErrorAndExit(fmt.Errorf("failed to write to cards.json: %w", err))
|
logErrorAndExit(fmt.Errorf("failed to write to cards.json: %w", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("All cards have been written to cards.json")
|
fmt.Printf("All cards have been written to cards.json. Total cards: %d\n", len(allCards))
|
||||||
}
|
}
|
||||||
|
|
||||||
// setHeaders sets the necessary headers for the HTTP request.
|
// setHeaders sets the necessary headers for the HTTP request.
|
||||||
@ -249,3 +267,4 @@ func logErrorAndExit(err error) {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user