2016-08-26 10:47:10 +08:00
|
|
|
module Jobs
|
|
|
|
class PushNotification < Jobs::Base
|
|
|
|
def execute(args)
|
|
|
|
notification = args["payload"]
|
2016-08-26 11:45:56 +08:00
|
|
|
notification["url"] = UrlHelper.absolute_without_cdn(notification["post_url"])
|
2016-08-26 10:47:10 +08:00
|
|
|
notification.delete("post_url")
|
|
|
|
|
|
|
|
payload = {
|
|
|
|
secret_key: SiteSetting.push_api_secret_key,
|
|
|
|
url: Discourse.base_url,
|
|
|
|
title: SiteSetting.title,
|
|
|
|
description: SiteSetting.site_description,
|
|
|
|
}
|
|
|
|
|
|
|
|
clients = args["clients"]
|
|
|
|
clients.group_by{|r| r[1]}.each do |push_url, group|
|
|
|
|
notifications = group.map do |client_id, _|
|
|
|
|
notification.merge({
|
|
|
|
client_id: client_id
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2016-09-04 13:50:53 +08:00
|
|
|
RestClient.send :post, push_url, payload.merge({notifications: notifications}).to_json, content_type: :json, accept: :json
|
|
|
|
|
2016-08-26 10:47:10 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|