/
patreon_admin_controller.rb
82 lines (56 loc) · 2.07 KB
/
patreon_admin_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# frozen_string_literal: true
require_dependency 'application_controller'
class ::Patreon::PatreonAdminController < Admin::AdminController
PLUGIN_NAME = 'discourse-patreon'.freeze
requires_plugin PLUGIN_NAME
before_action :patreon_enabled?
before_action :patreon_tokens_present?
def patreon_enabled?
raise Discourse::NotFound unless SiteSetting.patreon_enabled
end
def list
filters = PluginStore.get(PLUGIN_NAME, 'filters') || {}
rewards = ::Patreon::Reward.all
last_sync = ::Patreon.get("last_sync") || {}
groups = ::Group.all.pluck(:id)
valid_filters = filters.select { |k| groups.include?(k.to_i) }
render json: { filters: valid_filters, rewards: rewards, last_sync_at: last_sync["at"] }
end
def rewards
rewards = ::Patreon::Reward.all
render json: rewards
end
def is_number?(string)
true if Float(string) rescue false
end
def edit
return render json: { message: "Error" }, status: 500 if params[:rewards_ids].nil? || !is_number?(params[:group_id])
filters = PluginStore.get(PLUGIN_NAME, 'filters') || {}
filters[params[:group_id]] = params[:rewards_ids]
PluginStore.set(PLUGIN_NAME, 'filters', filters)
render json: success_json
end
def delete
return render json: { message: "Error" }, status: 500 unless is_number?(params[:group_id])
filters = PluginStore.get(PLUGIN_NAME, 'filters')
filters.delete(params[:group_id])
PluginStore.set(PLUGIN_NAME, 'filters', filters)
render json: success_json
end
def sync_groups
begin
Patreon::Patron.sync_groups
render json: success_json
rescue => e
render json: { message: e.message }, status: 500
end
end
def update_data
Jobs.enqueue(:patreon_sync_patrons_to_groups)
render json: success_json
end
def patreon_tokens_present?
raise Discourse::SiteSettingMissing.new("patreon_creator_access_token") if SiteSetting.patreon_creator_access_token.blank?
raise Discourse::SiteSettingMissing.new("patreon_creator_refresh_token") if SiteSetting.patreon_creator_refresh_token.blank?
end
end