lib/eventbrite_sdk/report.rb
module EventbriteSDK
class Report
STRING_KEYS = %i[
start_date
end_date
date_facet
event_status
timezone
group_by
].freeze
VALID_REPORTS = %i[attendees sales].freeze
def initialize
@query = {}
end
def event_ids(*ids)
@query[:event_ids] = ids.join(',')
self
end
def filter_by(filters)
@query[:filter_by] = filters.to_json
self
end
STRING_KEYS.each do |method|
define_method(method) do |value|
@query[method] = value
self
end
end
def query
@query.dup # Don't allow mutation
end
def retrieve(type = nil, sdk = EventbriteSDK)
unless VALID_REPORTS.include?(type)
raise ArgumentError, "`:type` is not of #{VALID_REPORTS}"
end
sdk.get(url: "reports/#{type}", query: query)
end
end
end