Skip to content

Commit

Permalink
Fix bugcrowd pagination parsing sw33tLie#17
Browse files Browse the repository at this point in the history
  • Loading branch information
sw33tLie committed Apr 18, 2022
1 parent 563622d commit a3c764d
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions pkg/platforms/bugcrowd/bugcrowd.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,20 +108,22 @@ func Login(email string, password string) string {
}

func GetProgramHandles(sessionToken string, bbpOnly bool, pvtOnly bool) []string {
allProgramsCount := 0
currentProgramIndex := 0
totalPages := 0
pageIndex := 1

listEndpointURL := "https://bugcrowd.com/programs.json?"
if pvtOnly {
listEndpointURL = listEndpointURL + "accepted_invite[]=true&"
}
if bbpOnly {
listEndpointURL = listEndpointURL + "vdp[]=false&"
}
listEndpointURL = listEndpointURL + "hidden[]=false&sort[]=invited-desc&sort[]=promoted-desc&offset[]="
listEndpointURL = listEndpointURL + "hidden[]=false&sort[]=invited-desc&sort[]=promoted-desc&page[]="
paths := []string{}

for {
req, err := http.NewRequest("GET", listEndpointURL+strconv.Itoa(currentProgramIndex), nil)

req, err := http.NewRequest("GET", listEndpointURL+strconv.Itoa(pageIndex), nil)
if err != nil {
log.Fatal(err)
}
Expand All @@ -138,19 +140,21 @@ func GetProgramHandles(sessionToken string, bbpOnly bool, pvtOnly bool) []string

body, _ := ioutil.ReadAll(resp.Body)

if allProgramsCount == 0 {
allProgramsCount = int(gjson.Get(string(body), "meta.totalHits").Int())
if totalPages == 0 {
totalPages = int(gjson.Get(string(body), "meta.totalPages").Int())
}

chunkData := gjson.Get(string(body), "programs.#.program_url")
for i := 0; i < len(chunkData.Array()); i++ {
paths = append(paths, chunkData.Array()[i].Str)
}
currentProgramIndex += 25

if allProgramsCount <= currentProgramIndex {
pageIndex++

if pageIndex > totalPages {
break
}

}

return paths
Expand Down

0 comments on commit a3c764d

Please sign in to comment.