From 1730fb05fd696c3a1ce6e9a5c19d6fbc0c9644a3 Mon Sep 17 00:00:00 2001 From: Alexander Meindl Date: Tue, 24 Aug 2021 18:01:48 +0200 Subject: [PATCH] Move asynchron delivery job to default Rails directory --- app/jobs/messenger_deliver_job.rb | 25 +++++++++++++++++++++++++ app/models/messenger.rb | 26 +------------------------- 2 files changed, 26 insertions(+), 25 deletions(-) create mode 100644 app/jobs/messenger_deliver_job.rb diff --git a/app/jobs/messenger_deliver_job.rb b/app/jobs/messenger_deliver_job.rb new file mode 100644 index 0000000..34ff0d0 --- /dev/null +++ b/app/jobs/messenger_deliver_job.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'net/http' +require 'uri' + +class MessengerDeliverJob < ActiveJob::Base + queue_as :default + + def perform(url, params) + uri = URI url + http_options = { use_ssl: uri.scheme == 'https' } + http_options[:verify_mode] = OpenSSL::SSL::VERIFY_NONE unless RedmineMessenger.setting? :messenger_verify_ssl + begin + req = Net::HTTP::Post.new uri + req.set_form_data payload: params.to_json + Net::HTTP.start uri.hostname, uri.port, http_options do |http| + response = http.request req + Rails.logger.warn response.inspect unless [Net::HTTPSuccess, Net::HTTPRedirection, Net::HTTPOK].include? response + end + rescue StandardError => e + Rails.logger.warn "cannot connect to #{url}" + Rails.logger.warn e + end + end +end diff --git a/app/models/messenger.rb b/app/models/messenger.rb index 5c5784f..921c705 100644 --- a/app/models/messenger.rb +++ b/app/models/messenger.rb @@ -1,8 +1,5 @@ # frozen_string_literal: true -require 'net/http' -require 'uri' - class Messenger include Redmine::I18n @@ -48,7 +45,7 @@ class Messenger channels.each do |channel| params[:channel] = channel - DeliverMessageJob.perform_later url, params + MessengerDeliverJob.perform_later url, params end end @@ -291,25 +288,4 @@ class Messenger [] end end - - class DeliverMessageJob < ActiveJob::Base - queue_as :default - - def perform(url, params) - uri = URI url - http_options = { use_ssl: uri.scheme == 'https' } - http_options[:verify_mode] = OpenSSL::SSL::VERIFY_NONE unless RedmineMessenger.setting? :messenger_verify_ssl - begin - req = Net::HTTP::Post.new uri - req.set_form_data payload: params.to_json - Net::HTTP.start uri.hostname, uri.port, http_options do |http| - response = http.request req - Rails.logger.warn response.inspect unless [Net::HTTPSuccess, Net::HTTPRedirection, Net::HTTPOK].include? response - end - rescue StandardError => e - Rails.logger.warn "cannot connect to #{url}" - Rails.logger.warn e - end - end - end end