Class: Bugcrowd::Programs

Inherits:
Object
  • Object
show all
Defined in:
lib/scopes_extractor/platforms/bugcrowd/programs.rb

Overview

Bugcrowd Sync Programs

Class Method Summary collapse

Class Method Details

.parse_programs(programs, options, results, cookie) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/scopes_extractor/platforms/bugcrowd/programs.rb', line 20

def self.parse_programs(programs, options, results, cookie)
  programs.each do |program|
    next if program['status'] == 4 # Disabled
    next if program['min_rewards'].nil? && options[:skip_vdp]

    results[program['name']] = program_info(program)
    results[program['name']]['scopes'] = Scopes.sync(program_info(program), cookie)
  end
end

.program_info(program) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/scopes_extractor/platforms/bugcrowd/programs.rb', line 30

def self.program_info(program)
  {
    slug: program['code'],
    enabled: true,
    private: false
  }
end

.sync(results, options, cookie, page_id = 1) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/scopes_extractor/platforms/bugcrowd/programs.rb', line 8

def self.sync(results, options, cookie, page_id = 1)
  response = HttpClient.get(
    "https://bugcrowd.com/programs.json?page[]=#{page_id}&waitlistable[]=false&joinable[]=false", cookie
  )
  return unless response&.code == 200

  body = JSON.parse(response.body)
  parse_programs(body['programs'], options, results, cookie)

  sync(results, options, cookie, page_id + 1) unless page_id == body['meta']['totalPages']
end