Class: Decidim::SpamDetection::ApiProxy
- Inherits:
-
Object
- Object
- Decidim::SpamDetection::ApiProxy
- Defined in:
- lib/decidim/spam_detection/api_proxy.rb
Constant Summary collapse
- URL =
URI(Decidim::SpamDetection.spam_detection_api_url)
- AUTH_TOKEN =
Decidim::SpamDetection.spam_detection_api_auth_token
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(data_array, batch_size) ⇒ ApiProxy
constructor
A new instance of ApiProxy.
- #send_request_in_batch ⇒ Object
- #send_request_to_api(data) ⇒ Object
Constructor Details
#initialize(data_array, batch_size) ⇒ ApiProxy
Returns a new instance of ApiProxy.
12 13 14 15 16 |
# File 'lib/decidim/spam_detection/api_proxy.rb', line 12 def initialize(data_array, batch_size) @data_array = data_array @batch_size = batch_size @retries = [3, 5, 10] end |
Class Method Details
.request(data_array, batch_size = 1000) ⇒ Object
18 19 20 |
# File 'lib/decidim/spam_detection/api_proxy.rb', line 18 def self.request(data_array, batch_size = 1000) new(data_array, batch_size).send_request_in_batch end |
.use_ssl?(url) ⇒ Boolean
48 49 50 |
# File 'lib/decidim/spam_detection/api_proxy.rb', line 48 def self.use_ssl?(url) url.scheme == "https" end |
Instance Method Details
#send_request_in_batch ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/decidim/spam_detection/api_proxy.rb', line 22 def send_request_in_batch responses = [] @data_array.each_slice(@batch_size) do |subdata_array| responses << JSON.parse(send_request_to_api(subdata_array)) end responses.flatten end |
#send_request_to_api(data) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/decidim/spam_detection/api_proxy.rb', line 31 def send_request_to_api(data) http = Net::HTTP.new(URL.host, URL.port) request = Net::HTTP::Post.new(URL) request["Content-Type"] = "application/json" request["AUTH_TOKEN"] = AUTH_TOKEN request.body = JSON.dump(data) http.use_ssl = true if self.class.use_ssl?(URL) response = http.request(request) response.read_body rescue Net::ReadTimeout raise Net::ReadTimeout if @retries.empty? sleep @retries.first @retries.shift retry end |