Class: YesWeHack::Programs

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

Overview

YesWeHack Sync Programs

Class Method Summary collapse

Class Method Details

.get_programs_infos(page_id, jwt) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/scopes_extractor/platforms/yeswehack/programs.rb', line 16

def self.get_programs_infos(page_id, jwt)
  response = HttpClient.get("https://api.yeswehack.com/programs?page=#{page_id}", jwt)
  return unless response&.code == 200

  json_body = JSON.parse(response.body)
  { nb_pages: json_body['pagination']['nb_pages'], programs: json_body['items'] }
end

.parse_programs(programs_infos, options, results, jwt) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/scopes_extractor/platforms/yeswehack/programs.rb', line 24

def self.parse_programs(programs_infos, options, results, jwt)
  programs_infos[:programs].each do |program|
    next if program['disabled']
    next if program['vdp'] && options[:skip_vdp]

    results[program['title']] = program_info(program)
    results[program['title']]['scopes'] = Scopes.sync(program_info(program), jwt)
  end
end

.program_info(program) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/scopes_extractor/platforms/yeswehack/programs.rb', line 34

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

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



8
9
10
11
12
13
14
# File 'lib/scopes_extractor/platforms/yeswehack/programs.rb', line 8

def self.sync(results, options, jwt, page_id = 1)
  programs_infos = get_programs_infos(page_id, jwt)
  return unless programs_infos

  parse_programs(programs_infos, options, results, jwt)
  sync(results, options, jwt, page_id + 1) unless page_id == programs_infos[:nb_pages]
end