Welcome to mirror list, hosted at ThFree Co, Russian Federation.

spam_params.rb « spam « services « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: fef5355c7f313e40b30cbd3643579b52142c0c9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 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