class HackerOne::Client::Program
Public Class Methods
find(program_handle_we_want)
click to toggle source
# File lib/hackerone/client/program.rb, line 12 def self.find(program_handle_we_want) my_programs.find do |program| program.handle == program_handle_we_want end end
new(program)
click to toggle source
# File lib/hackerone/client/program.rb, line 18 def initialize(program) @program = program end
Private Class Methods
my_programs()
click to toggle source
# File lib/hackerone/client/program.rb, line 109 def self.my_programs @my_programs ||= begin response = HackerOne::Client::Api.hackerone_api_connection.get do |req| req.url "me/programs" end data = HackerOne::Client::Api.parse_response(response) data.map { |program| self.new(program) } end end
Public Instance Methods
attributes()
click to toggle source
# File lib/hackerone/client/program.rb, line 34 def attributes OpenStruct.new(@program[:attributes]) end
balance()
click to toggle source
# File lib/hackerone/client/program.rb, line 79 def balance response_body = make_get_request( "programs/#{id}/billing/balance" ) BillingBalance.new(response_body).balance end
common_responses(page_number: 1, page_size: 100)
click to toggle source
# File lib/hackerone/client/program.rb, line 64 def common_responses(page_number: 1, page_size: 100) make_get_request( "programs/#{id}/common_responses", params: { page: { number: page_number, size: page_size } } ) end
find_group(groupname)
click to toggle source
# File lib/hackerone/client/program.rb, line 50 def find_group(groupname) groups.find { |group| group.name == groupname } end
find_member(username)
click to toggle source
# File lib/hackerone/client/program.rb, line 46 def find_member(username) members.find { |member| member.user.username == username } end
group?(groupname)
click to toggle source
# File lib/hackerone/client/program.rb, line 42 def group?(groupname) find_group(groupname).present? end
id()
click to toggle source
# File lib/hackerone/client/program.rb, line 22 def id @program[:id] end
incremental_activities(updated_at_after: nil, page_size: 25)
click to toggle source
# File lib/hackerone/client/program.rb, line 26 def incremental_activities(updated_at_after: nil, page_size: 25) HackerOne::Client::Incremental::Activities.new( self, updated_at_after: updated_at_after, page_size: page_size ) end
member?(username)
click to toggle source
# File lib/hackerone/client/program.rb, line 38 def member?(username) find_member(username).present? end
swag(page_number: 1, page_size: 100)
click to toggle source
# File lib/hackerone/client/program.rb, line 71 def swag(page_number: 1, page_size: 100) response_body = make_get_request( "programs/#{id}/swag", params: { page: { number: page_number, size: page_size } } ) response_body.map { |r| Swag.new(r, self) } end
update_policy(policy:)
click to toggle source
# File lib/hackerone/client/program.rb, line 54 def update_policy(policy:) body = { type: "program-policy", attributes: { policy: policy } } make_put_request("programs/#{id}/policy", request_body: body) end
Private Instance Methods
groups()
click to toggle source
# File lib/hackerone/client/program.rb, line 92 def groups @groups ||= relationships.groups[:data].map { |group_data| Group.new(group_data) } end
members()
click to toggle source
# File lib/hackerone/client/program.rb, line 88 def members @members ||= relationships.members[:data].map { |member_data| Member.new(member_data) } end
relationships()
click to toggle source
# File lib/hackerone/client/program.rb, line 96 def relationships # Relationships are only included in the /programs/:id call, # which is why we need to do a separate call here. @relationships ||= begin response = HackerOne::Client::Api.hackerone_api_connection.get do |req| req.url "programs/#{id}" end data = HackerOne::Client::Api.parse_response(response) OpenStruct.new(data[:relationships]) end end