Sha256: 32e127d755924c0423e13fb31eaeaed309638295aec76282db4faf829c03b9c7

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require 'net/https'

module Thredded
  class PushoverNotifier
    VERSION = '0.1.0'

    def initialize(pushover_app_token, root_url)
      @pushover_app_token = pushover_app_token
      @root_url = root_url
    end

    def key
      'pushover'
    end

    def human_name
      I18n.t('pushover_notifier.by_pushover')
    end

    def new_post(post, users)
      require 'thredded/pushover_notifier/content_helper'
      helper = Thredded::PushoverNotifier::ContentHelper.new(@root_url, post)
      args = [helper.message_for_new_topic_post, helper.title_for_new_topic_post, helper.post_url]
      users.map(&:pushover_user_key).each do |user_key|
        send_message(user_key, *args) if user_key.present?
      end
    end

    def new_private_post; end

    def send_message(user_key, message, title, url)
      pushover_url = URI.parse('https://api.pushover.net/1/messages.json')
      req = Net::HTTP::Post.new(pushover_url.path)
      data = {
        token: @pushover_app_token,
        user: user_key,
        message: message,
        title: title,
        url: url,
        url_title: 'View topic'
      }
      req.set_form_data(data)
      res = Net::HTTP.new(pushover_url.host, pushover_url.port)
      res.use_ssl = true
      res.verify_mode = OpenSSL::SSL::VERIFY_PEER
      res.start { |http| http.request(req) }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
thredded-pushover-notifier-0.1.0 lib/thredded/pushover_notifier.rb