# frozen_string_literal: true module Spam ## # This class is a Parameter Object (https://refactoring.com/catalog/introduceParameterObject.html) # which acts as an container abstraction for multiple parameter values related to spam and # captcha processing for a request. # # Values contained are: # # api: A boolean flag indicating if the request was submitted via the REST or GraphQL API # captcha_response: The response resulting from the user solving a captcha. Currently it is # a scalar reCAPTCHA response string, but it can be expanded to an object in the future to # support other captcha implementations such as FriendlyCaptcha. # spam_log_id: The id of a SpamLog record. class SpamParams attr_reader :api, :captcha_response, :spam_log_id def initialize(api:, captcha_response:, spam_log_id:) @api = api.present? @captcha_response = captcha_response @spam_log_id = spam_log_id end def ==(other) other.class == self.class && other.api == self.api && other.captcha_response == self.captcha_response && other.spam_log_id == self.spam_log_id end end end