Skip to content

Commit

Permalink
Merge pull request #312 from kortirso/issue_311
Browse files Browse the repository at this point in the history
IS-311 modify notifiers structure
  • Loading branch information
kortirso committed Jul 3, 2024
2 parents 6a2098d + e51fcde commit dc962a3
Show file tree
Hide file tree
Showing 67 changed files with 969 additions and 1,229 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

### Modified
- skip reseting invites email after accepting invite
- deliveries/notifiers structure

## [1.7.10] - 2024-06-16
### Added
Expand Down
10 changes: 4 additions & 6 deletions app/deliveries/admin_delivery.rb
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
# frozen_string_literal: true

class AdminDelivery < ApplicationDelivery
before_notify :ensure_mailer_enabled, on: :mailer
before_notify :ensure_webhook_enabled, on: :webhook
before_notify :ensure_slack_webhook_enabled, on: :slack_webhook
before_notify :ensure_discord_webhook_enabled, on: :discord_webhook
before_notify :ensure_slack_enabled, on: :slack
before_notify :ensure_discord_enabled, on: :discord
before_notify :ensure_telegram_enabled, on: :telegram

delivers :job_execution_report
delivers :feedback_created

private

def ensure_mailer_enabled = false
def ensure_webhook_enabled = false
def ensure_slack_webhook_enabled = false
def ensure_discord_webhook_enabled = false
def ensure_slack_enabled = false
def ensure_discord_enabled = false
def ensure_telegram_enabled = true
end
14 changes: 8 additions & 6 deletions app/deliveries/application_delivery.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,17 @@
class ApplicationDelivery < ActiveDelivery::Base
self.abstract_class = true

unregister_line :mailer

register_line :webhook, ActiveDelivery::Lines::Notifier,
resolver_pattern: 'Webhooks::%{delivery_name}Notifier'
resolver_pattern: '%{delivery_name}WebhookNotifier'

register_line :slack_webhook, ActiveDelivery::Lines::Notifier,
resolver_pattern: 'SlackWebhooks::%{delivery_name}Notifier'
register_line :slack, ActiveDelivery::Lines::Notifier,
resolver_pattern: '%{delivery_name}SlackNotifier'

register_line :discord_webhook, ActiveDelivery::Lines::Notifier,
resolver_pattern: 'DiscordWebhooks::%{delivery_name}Notifier'
register_line :discord, ActiveDelivery::Lines::Notifier,
resolver_pattern: '%{delivery_name}DiscordNotifier'

register_line :telegram, ActiveDelivery::Lines::Notifier,
resolver_pattern: 'Telegram::%{delivery_name}Notifier'
resolver_pattern: '%{delivery_name}TelegramNotifier'
end
11 changes: 4 additions & 7 deletions app/deliveries/company_delivery.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# frozen_string_literal: true

class CompanyDelivery < ApplicationDelivery
before_notify :ensure_mailer_enabled, on: :mailer
before_notify :ensure_webhook_enabled, on: :webhook
before_notify :ensure_slack_webhook_enabled, on: :slack_webhook
before_notify :ensure_discord_webhook_enabled, on: :discord_webhook
before_notify :ensure_slack_enabled, on: :slack
before_notify :ensure_discord_enabled, on: :discord
before_notify :ensure_telegram_enabled, on: :telegram

delivers :insights_report
Expand All @@ -13,23 +12,21 @@ class CompanyDelivery < ApplicationDelivery

private

def ensure_mailer_enabled = false

def ensure_webhook_enabled
return false if webhook_sources.exclude?(Webhook::CUSTOM)
return false if notification_sources.exclude?(Notification::CUSTOM)

true
end

def ensure_slack_webhook_enabled
def ensure_slack_enabled
return false if webhook_sources.exclude?(Webhook::SLACK)
return false if notification_sources.exclude?(Notification::SLACK)

true
end

def ensure_discord_webhook_enabled
def ensure_discord_enabled
return false if webhook_sources.exclude?(Webhook::DISCORD)
return false if notification_sources.exclude?(Notification::DISCORD)

Expand Down
34 changes: 34 additions & 0 deletions app/notifiers/admin_telegram_notifier.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# frozen_string_literal: true

class AdminTelegramNotifier < CompanyNotifier
self.driver = proc do |data|
Pullmetry::Container['api.telegram.client'].send_message(
bot_secret: Rails.application.credentials.dig(:telegram_oauth, Rails.env.to_sym, :bot_secret),
chat_id: data[:chat_id],
text: data[:body]
)
end

def job_execution_report
notification(
chat_id: Rails.application.credentials[:reports_telegram_chat_id],
body: "#{params[:job_name]} is run at #{DateTime.now}"
)
end

def feedback_created
notification(
chat_id: Rails.application.credentials[:reports_telegram_chat_id],
body: feedback_created_payload(params[:id])
)
end

private

def feedback_created_payload(id)
feedback = Feedback.find_by(id: id)
return '' unless feedback

"User - #{feedback.user_id}\nFeedback created - #{feedback.title}\n#{feedback.description}"
end
end
14 changes: 14 additions & 0 deletions app/notifiers/company_discord_notifier.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# frozen_string_literal: true

class CompanyDiscordNotifier < CompanyNotifier
self.driver = proc do |data|
Pullmetry::Container['api.discord.client'].send_message(
path: data[:path],
body: data[:body]
)
end

def insights_report = report(Webhook::DISCORD)
def repository_insights_report = report(Webhook::DISCORD)
def long_time_review_report = report(Webhook::DISCORD)
end
29 changes: 29 additions & 0 deletions app/notifiers/company_notifier.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# frozen_string_literal: true

class CompanyNotifier < AbstractNotifier::Base
include Deps[company_payload: 'notifiers.payloads.company']

private

def report(source)
path = webhook_path(source)
url = URI(path)

notification(
**company_payload.call(
type: source,
path: path,
url: url,
insightable: insightable,
notification_name: notification_name
)
)
end

def insightable = params[:insightable]

def webhook_path(source)
webhook = insightable.all_webhooks.where(source: source).order(webhookable_type: :asc).first
URI(webhook.url).path
end
end
14 changes: 14 additions & 0 deletions app/notifiers/company_slack_notifier.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# frozen_string_literal: true

class CompanySlackNotifier < CompanyNotifier
self.driver = proc do |data|
Pullmetry::Container['api.slack.client'].send_message(
path: data[:path],
body: data[:body]
)
end

def insights_report = report(Webhook::SLACK)
def repository_insights_report = report(Webhook::SLACK)
def long_time_review_report = report(Webhook::SLACK)
end
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
# frozen_string_literal: true

class TelegramNotifier < AbstractNotifier::Base
class CompanyTelegramNotifier < CompanyNotifier
self.driver = proc do |data|
Pullmetry::Container['api.telegram.client'].send_message(
bot_secret: Rails.application.credentials.dig(:telegram_oauth, Rails.env.to_sym, :bot_secret),
chat_id: data[:chat_id],
text: data[:body]
)
end

def insights_report = report(Webhook::TELEGRAM)
def repository_insights_report = report(Webhook::TELEGRAM)
def long_time_review_report = report(Webhook::TELEGRAM)
end
16 changes: 16 additions & 0 deletions app/notifiers/company_webhook_notifier.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# frozen_string_literal: true

class CompanyWebhookNotifier < CompanyNotifier
self.driver = proc do |data|
url = URI(data[:path])

Webhooks::Client.new(url: url.origin).send_message(
path: url.path,
body: data[:body]
)
end

def insights_report = report(Webhook::CUSTOM)
def repository_insights_report = report(Webhook::CUSTOM)
def long_time_review_report = report(Webhook::CUSTOM)
end
11 changes: 0 additions & 11 deletions app/notifiers/concerns/companiable.rb

This file was deleted.

10 changes: 0 additions & 10 deletions app/notifiers/discord_webhook_notifier.rb

This file was deleted.

52 changes: 0 additions & 52 deletions app/notifiers/discord_webhooks/company/insights_report_payload.rb

This file was deleted.

This file was deleted.

Loading

0 comments on commit dc962a3

Please sign in to comment.