discourse_api 1.1.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +23 -10
  3. data/.rubocop.yml +1 -1
  4. data/.streerc +2 -0
  5. data/CHANGELOG.md +5 -0
  6. data/Gemfile +1 -1
  7. data/README.md +0 -4
  8. data/discourse_api.gemspec +7 -4
  9. data/examples/backups.rb +5 -5
  10. data/examples/badges.rb +5 -5
  11. data/examples/bookmark_topic.rb +5 -5
  12. data/examples/category.rb +10 -6
  13. data/examples/change_topic_status.rb +12 -11
  14. data/examples/create_private_message.rb +6 -6
  15. data/examples/create_topic.rb +9 -9
  16. data/examples/create_update_category.rb +13 -16
  17. data/examples/create_user.rb +12 -11
  18. data/examples/dashboard.rb +5 -5
  19. data/examples/disposable_invite_tokens.rb +9 -10
  20. data/examples/example.rb +5 -5
  21. data/examples/group_set_user_notification_level.rb +18 -19
  22. data/examples/groups.rb +7 -7
  23. data/examples/invite_users.rb +5 -5
  24. data/examples/manage_api_keys.rb +6 -11
  25. data/examples/notifications.rb +6 -6
  26. data/examples/polls.rb +12 -12
  27. data/examples/post_action.rb +5 -5
  28. data/examples/search.rb +5 -5
  29. data/examples/sent_private_messages.rb +6 -6
  30. data/examples/sso.rb +6 -6
  31. data/examples/topic_lists.rb +5 -5
  32. data/examples/update_user.rb +15 -7
  33. data/examples/upload_file.rb +7 -7
  34. data/lib/discourse_api/api/api_key.rb +1 -3
  35. data/lib/discourse_api/api/backups.rb +1 -1
  36. data/lib/discourse_api/api/badges.rb +21 -6
  37. data/lib/discourse_api/api/categories.rb +69 -37
  38. data/lib/discourse_api/api/dashboard.rb +2 -6
  39. data/lib/discourse_api/api/groups.rb +68 -73
  40. data/lib/discourse_api/api/invite.rb +30 -30
  41. data/lib/discourse_api/api/notifications.rb +2 -3
  42. data/lib/discourse_api/api/params.rb +4 -14
  43. data/lib/discourse_api/api/polls.rb +9 -12
  44. data/lib/discourse_api/api/posts.rb +5 -8
  45. data/lib/discourse_api/api/private_messages.rb +9 -8
  46. data/lib/discourse_api/api/search.rb +2 -2
  47. data/lib/discourse_api/api/topics.rb +20 -22
  48. data/lib/discourse_api/api/uploads.rb +7 -5
  49. data/lib/discourse_api/api/user_actions.rb +2 -2
  50. data/lib/discourse_api/api/users.rb +31 -23
  51. data/lib/discourse_api/client.rb +58 -56
  52. data/lib/discourse_api/example_helper.rb +2 -4
  53. data/lib/discourse_api/single_sign_on.rb +53 -57
  54. data/lib/discourse_api/version.rb +1 -1
  55. data/spec/discourse_api/api/api_key_spec.rb +39 -25
  56. data/spec/discourse_api/api/backups_spec.rb +8 -3
  57. data/spec/discourse_api/api/badges_spec.rb +17 -7
  58. data/spec/discourse_api/api/categories_spec.rb +95 -53
  59. data/spec/discourse_api/api/email_spec.rb +17 -7
  60. data/spec/discourse_api/api/groups_spec.rb +71 -52
  61. data/spec/discourse_api/api/invite_spec.rb +41 -21
  62. data/spec/discourse_api/api/notifications_spec.rb +8 -4
  63. data/spec/discourse_api/api/params_spec.rb +5 -3
  64. data/spec/discourse_api/api/polls_spec.rb +53 -44
  65. data/spec/discourse_api/api/posts_spec.rb +33 -16
  66. data/spec/discourse_api/api/private_messages_spec.rb +25 -12
  67. data/spec/discourse_api/api/search_spec.rb +8 -3
  68. data/spec/discourse_api/api/site_settings_spec.rb +2 -3
  69. data/spec/discourse_api/api/sso_spec.rb +29 -25
  70. data/spec/discourse_api/api/topics_spec.rb +100 -31
  71. data/spec/discourse_api/api/uploads_spec.rb +16 -7
  72. data/spec/discourse_api/api/user_actions_spec.rb +13 -3
  73. data/spec/discourse_api/api/users_spec.rb +137 -55
  74. data/spec/discourse_api/client_spec.rb +32 -32
  75. data/spec/discourse_api/single_sign_on_spec.rb +15 -15
  76. data/spec/fixtures/categories.json +1 -1
  77. data/spec/spec_helper.rb +10 -15
  78. metadata +55 -12
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
- require File.expand_path('../../lib/discourse_api', __FILE__)
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+ require File.expand_path("../../lib/discourse_api", __FILE__)
4
4
 
5
5
  config = DiscourseApi::ExampleHelper.load_yml
6
6
 
7
- client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
8
- client.api_key = config['api_key'] || "YOUR_API_KEY"
9
- client.api_username = config['api_username'] || "YOUR_USERNAME"
7
+ client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000")
8
+ client.api_key = config["api_key"] || "YOUR_API_KEY"
9
+ client.api_username = config["api_username"] || "YOUR_USERNAME"
10
10
 
11
11
  # watch an entire category
12
12
  client.category_set_user_notification_level(1, notification_level: 3)
@@ -15,4 +15,4 @@ client.category_set_user_notification_level(1, notification_level: 3)
15
15
  client.topic_set_user_notification_level(1, notification_level: 0)
16
16
 
17
17
  # get user notifications
18
- client.notifications(username: 'discourse')
18
+ client.notifications(username: "discourse")
data/examples/polls.rb CHANGED
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
4
- require File.expand_path('../../lib/discourse_api', __FILE__)
3
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
4
+ require File.expand_path("../../lib/discourse_api", __FILE__)
5
5
 
6
6
  config = DiscourseApi::ExampleHelper.load_yml
7
7
 
8
- client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
9
- client.api_key = config['api_key'] || "YOUR_API_KEY"
10
- client.api_username = config['api_username'] || "YOUR_USERNAME"
8
+ client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000")
9
+ client.api_key = config["api_key"] || "YOUR_API_KEY"
10
+ client.api_username = config["api_username"] || "YOUR_USERNAME"
11
11
 
12
- options = ['8b4736b1ae3dfb5a28088530f036f9e5']
13
- poll_option_votes = client.poll_vote post_id: 5, poll_name: 'poll', options: options
14
- puts poll_option_votes.body['vote']
12
+ options = ["8b4736b1ae3dfb5a28088530f036f9e5"]
13
+ poll_option_votes = client.poll_vote post_id: 5, poll_name: "poll", options: options
14
+ puts poll_option_votes.body["vote"]
15
15
 
16
- poll_option_votes = client.toggle_poll_status(post_id: 5, poll_name: 'poll', status: 'closed')
17
- puts poll_option_votes[:body]['poll']['status']
16
+ poll_option_votes = client.toggle_poll_status(post_id: 5, poll_name: "poll", status: "closed")
17
+ puts poll_option_votes[:body]["poll"]["status"]
18
18
 
19
- poll_option_votes = client.poll_voters(post_id: 5, poll_name: 'poll')
20
- puts poll_option_votes['voters']
19
+ poll_option_votes = client.poll_voters(post_id: 5, poll_name: "poll")
20
+ puts poll_option_votes["voters"]
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
- require File.expand_path('../../lib/discourse_api', __FILE__)
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+ require File.expand_path("../../lib/discourse_api", __FILE__)
4
4
 
5
5
  config = DiscourseApi::ExampleHelper.load_yml
6
6
 
7
- client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
8
- client.api_key = config['api_key'] || "YOUR_API_KEY"
9
- client.api_username = config['api_username'] || "YOUR_USERNAME"
7
+ client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000")
8
+ client.api_key = config["api_key"] || "YOUR_API_KEY"
9
+ client.api_username = config["api_username"] || "YOUR_USERNAME"
10
10
 
11
11
  # Post Action Type IDs
12
12
  # 1 - Bookmark
data/examples/search.rb CHANGED
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
- require File.expand_path('../../lib/discourse_api', __FILE__)
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+ require File.expand_path("../../lib/discourse_api", __FILE__)
4
4
 
5
5
  config = DiscourseApi::ExampleHelper.load_yml
6
6
 
7
- client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
8
- client.api_key = config['api_key'] || "YOUR_API_KEY"
9
- client.api_username = config['api_username'] || "YOUR_USERNAME"
7
+ client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000")
8
+ client.api_key = config["api_key"] || "YOUR_API_KEY"
9
+ client.api_username = config["api_username"] || "YOUR_USERNAME"
10
10
 
11
11
  # search for term
12
12
  puts client.search("discourse")
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
- require File.expand_path('../../lib/discourse_api', __FILE__)
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+ require File.expand_path("../../lib/discourse_api", __FILE__)
4
4
 
5
5
  config = DiscourseApi::ExampleHelper.load_yml
6
6
 
7
- client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
8
- client.api_key = config['api_key'] || "YOUR_API_KEY"
9
- client.api_username = config['api_username'] || "YOUR_USERNAME"
7
+ client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000")
8
+ client.api_key = config["api_key"] || "YOUR_API_KEY"
9
+ client.api_username = config["api_username"] || "YOUR_USERNAME"
10
10
 
11
- client.sent_private_messages('test_user')
11
+ client.sent_private_messages("test_user")
data/examples/sso.rb CHANGED
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
- require File.expand_path('../../lib/discourse_api', __FILE__)
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+ require File.expand_path("../../lib/discourse_api", __FILE__)
4
4
 
5
5
  config = DiscourseApi::ExampleHelper.load_yml
6
6
 
7
- client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
8
- client.api_key = config['api_key'] || "YOUR_API_KEY"
9
- client.api_username = config['api_username'] || "YOUR_USERNAME"
7
+ client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000")
8
+ client.api_key = config["api_key"] || "YOUR_API_KEY"
9
+ client.api_username = config["api_username"] || "YOUR_USERNAME"
10
10
 
11
11
  client.sync_sso(
12
12
  sso_secret: "discourse_sso_rocks",
13
13
  name: "Test Name",
14
14
  username: "test_name",
15
15
  email: "name@example.com",
16
- external_id: "2"
16
+ external_id: "2",
17
17
  )
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
- require File.expand_path('../../lib/discourse_api', __FILE__)
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+ require File.expand_path("../../lib/discourse_api", __FILE__)
4
4
 
5
5
  config = DiscourseApi::ExampleHelper.load_yml
6
6
 
7
- client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
8
- client.api_key = config['api_key'] || "YOUR_API_KEY"
9
- client.api_username = config['api_username'] || "YOUR_USERNAME"
7
+ client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000")
8
+ client.api_key = config["api_key"] || "YOUR_API_KEY"
9
+ client.api_username = config["api_username"] || "YOUR_USERNAME"
10
10
 
11
11
  # get latest topics
12
12
  puts client.latest_topics({})
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
- require File.expand_path('../../lib/discourse_api', __FILE__)
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+ require File.expand_path("../../lib/discourse_api", __FILE__)
4
4
 
5
5
  config = DiscourseApi::ExampleHelper.load_yml
6
6
 
7
- client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
8
- client.api_key = config['api_key'] || "YOUR_API_KEY"
9
- client.api_username = config['api_username'] || "YOUR_USERNAME"
7
+ client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000")
8
+ client.api_key = config["api_key"] || "YOUR_API_KEY"
9
+ client.api_username = config["api_username"] || "YOUR_USERNAME"
10
10
 
11
11
  # update username from "robin" to "batman"
12
12
  puts client.update_username("robin", "batman")
@@ -15,11 +15,19 @@ puts client.update_user("batman", name: "Bruce Wayne")
15
15
  # update email of user whose username is "batman"
16
16
  puts client.update_email("batman", "batman@gotham.com")
17
17
  # update avatar of user whose username is "batman"
18
- puts client.update_avatar(username: "batman", url: "http://meta-discourse.r.worldssl.net/uploads/default/2497/724a6ef2e79d2bc7.png")
18
+ puts client.update_avatar(
19
+ username: "batman",
20
+ url: "http://meta-discourse.r.worldssl.net/uploads/default/2497/724a6ef2e79d2bc7.png",
21
+ )
19
22
  # update trust level of user whose id is "102"
20
23
  puts client.update_trust_level(user_id: 102, level: 2)
21
24
  # update user bio, location or website
22
- puts client.update_user("batman", bio_raw: "I am Batman.", location: "Gotham", website: "https://en.wikipedia.org/wiki/Batman")
25
+ puts client.update_user(
26
+ "batman",
27
+ bio_raw: "I am Batman.",
28
+ location: "Gotham",
29
+ website: "https://en.wikipedia.org/wiki/Batman",
30
+ )
23
31
 
24
32
  # log out everywhere and refresh browser of user whose id is "2"
25
33
  puts client.log_out(2)
@@ -1,16 +1,16 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
- require File.expand_path('../../lib/discourse_api', __FILE__)
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+ require File.expand_path("../../lib/discourse_api", __FILE__)
4
4
 
5
5
  config = DiscourseApi::ExampleHelper.load_yml
6
6
 
7
- client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
8
- client.api_key = config['api_key'] || "YOUR_API_KEY"
9
- client.api_username = config['api_username'] || "YOUR_USERNAME"
7
+ client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000")
8
+ client.api_key = config["api_key"] || "YOUR_API_KEY"
9
+ client.api_username = config["api_username"] || "YOUR_USERNAME"
10
10
 
11
11
  # Upload a file
12
- file = Faraday::UploadIO.new('grumpy_cat.pdf', "application/pdf")
12
+ file = Faraday::UploadIO.new("grumpy_cat.pdf", "application/pdf")
13
13
  client.upload_file(file: file)
14
14
 
15
15
  # Upload a file via URL
16
- client.upload_file(url: 'https://giphy.com/grumpy_cat.gif')
16
+ client.upload_file(url: "https://giphy.com/grumpy_cat.gif")
@@ -8,9 +8,7 @@ module DiscourseApi
8
8
  end
9
9
 
10
10
  def create_api_key(args)
11
- args = API.params(args)
12
- .required(:key)
13
- .to_h
11
+ args = API.params(args).required(:key).to_h
14
12
  post("/admin/api/keys", args)
15
13
  end
16
14
 
@@ -18,7 +18,7 @@ module DiscourseApi
18
18
  def download_backup(file_name, destination)
19
19
  response = get("/admin/backups/#{file_name}")
20
20
  # write file
21
- File.open("#{destination}/#{file_name}", 'wb') { |fp| fp.write(response.body) }
21
+ File.open("#{destination}/#{file_name}", "wb") { |fp| fp.write(response.body) }
22
22
  end
23
23
  end
24
24
  end
@@ -9,7 +9,7 @@ module DiscourseApi
9
9
 
10
10
  def user_badges(username)
11
11
  response = get("/user-badges/#{username}.json")
12
- response.body['badges']
12
+ response.body["badges"]
13
13
  end
14
14
 
15
15
  def grant_user_badge(params = {})
@@ -17,11 +17,26 @@ module DiscourseApi
17
17
  end
18
18
 
19
19
  def create_badge(params = {})
20
- args = API.params(params)
21
- .required(:name, :badge_type_id)
22
- .optional(:description, :allow_title, :multiple_grant, :icon, :listable,
23
- :target_posts, :query, :enabled, :auto_revoke, :badge_grouping_id,
24
- :trigger, :show_posts, :image, :long_description)
20
+ args =
21
+ API
22
+ .params(params)
23
+ .required(:name, :badge_type_id)
24
+ .optional(
25
+ :description,
26
+ :allow_title,
27
+ :multiple_grant,
28
+ :icon,
29
+ :listable,
30
+ :target_posts,
31
+ :query,
32
+ :enabled,
33
+ :auto_revoke,
34
+ :badge_grouping_id,
35
+ :trigger,
36
+ :show_posts,
37
+ :image,
38
+ :long_description,
39
+ )
25
40
  post("/admin/badges.json", args)
26
41
  end
27
42
  end
@@ -6,71 +6,105 @@ module DiscourseApi
6
6
  # :permissions is a hash with the group name and permission_type which is
7
7
  # an integer 1 = Full 2 = Create Post 3 = Read Only
8
8
  def create_category(args = {})
9
- args = API.params(args)
10
- .required(:name, :color, :text_color)
11
- .optional(:slug, :permissions, :auto_close_hours, :auto_close_based_on_last_post, :position, :email_in,
12
- :email_in_allow_strangers, :logo_url, :background_url, :allow_badges, :topic_template, :custom_fields, :description,
13
- :reviewable_by_group_name, :show_subcategory_list, :subcategory_list_style,
14
- :allowed_tags, :allowed_tag_groups, :required_tag_group_name)
15
- .default(parent_category_id: nil)
9
+ args =
10
+ API
11
+ .params(args)
12
+ .required(:name, :color, :text_color)
13
+ .optional(
14
+ :slug,
15
+ :permissions,
16
+ :auto_close_hours,
17
+ :auto_close_based_on_last_post,
18
+ :position,
19
+ :email_in,
20
+ :email_in_allow_strangers,
21
+ :logo_url,
22
+ :background_url,
23
+ :allow_badges,
24
+ :topic_template,
25
+ :custom_fields,
26
+ :description,
27
+ :reviewable_by_group_name,
28
+ :show_subcategory_list,
29
+ :subcategory_list_style,
30
+ :allowed_tags,
31
+ :allowed_tag_groups,
32
+ :required_tag_group_name,
33
+ )
34
+ .default(parent_category_id: nil)
16
35
  response = post("/categories", args)
17
- response['category']
36
+ response["category"]
18
37
  end
19
38
 
20
39
  def update_category(args = {})
21
40
  category_id = args[:id]
22
- args = API.params(args)
23
- .required(:id, :name, :color, :text_color)
24
- .optional(:slug, :permissions, :auto_close_hours, :auto_close_based_on_last_post, :position, :email_in,
25
- :email_in_allow_strangers, :logo_url, :background_url, :allow_badges, :topic_template, :custom_fields, :description,
26
- :reviewable_by_group_name, :show_subcategory_list, :subcategory_list_style,
27
- :allowed_tags, :allowed_tag_groups, :required_tag_group_name)
28
- .default(parent_category_id: nil)
41
+ args =
42
+ API
43
+ .params(args)
44
+ .required(:id, :name, :color, :text_color)
45
+ .optional(
46
+ :slug,
47
+ :permissions,
48
+ :auto_close_hours,
49
+ :auto_close_based_on_last_post,
50
+ :position,
51
+ :email_in,
52
+ :email_in_allow_strangers,
53
+ :logo_url,
54
+ :background_url,
55
+ :allow_badges,
56
+ :topic_template,
57
+ :custom_fields,
58
+ :description,
59
+ :reviewable_by_group_name,
60
+ :show_subcategory_list,
61
+ :subcategory_list_style,
62
+ :allowed_tags,
63
+ :allowed_tag_groups,
64
+ :required_tag_group_name,
65
+ )
66
+ .default(parent_category_id: nil)
29
67
  response = put("/categories/#{category_id}", args)
30
- response['body']['category'] if response['body']
68
+ response["body"]["category"] if response["body"]
31
69
  end
32
70
 
33
71
  def delete_category(id)
34
72
  response = delete("/categories/#{id}")
35
- response[:body]['success']
73
+ response[:body]["success"]
36
74
  end
37
75
 
38
76
  def categories(params = {})
39
- categories_full(params)['category_list']['categories']
77
+ categories_full(params)["category_list"]["categories"]
40
78
  end
41
79
 
42
80
  def categories_full(params = {})
43
- response = get('/categories.json', params)
81
+ response = get("/categories.json", params)
44
82
  response[:body]
45
83
  end
46
84
 
47
85
  def category_latest_topics(args = {})
48
86
  response = category_latest_topics_full(args)
49
- if response['errors']
50
- response['errors']
87
+ if response["errors"]
88
+ response["errors"]
51
89
  else
52
- response['topic_list']['topics']
90
+ response["topic_list"]["topics"]
53
91
  end
54
92
  end
55
93
 
56
94
  def category_latest_topics_full(args = {})
57
- params = API.params(args)
58
- .required(:category_slug)
59
- .optional(:page).to_h
95
+ params = API.params(args).required(:category_slug).optional(:page).to_h
60
96
  url = "/c/#{params[:category_slug]}/l/latest.json"
61
- if params.include?(:page)
62
- url = "#{url}?page=#{params[:page]}"
63
- end
97
+ url = "#{url}?page=#{params[:page]}" if params.include?(:page)
64
98
  response = get(url)
65
99
  response[:body]
66
100
  end
67
101
 
68
102
  def category_top_topics(category_slug)
69
103
  response = category_top_topics_full(category_slug)
70
- if response['errors']
71
- response['errors']
104
+ if response["errors"]
105
+ response["errors"]
72
106
  else
73
- response['topic_list']['topics']
107
+ response["topic_list"]["topics"]
74
108
  end
75
109
  end
76
110
 
@@ -81,7 +115,7 @@ module DiscourseApi
81
115
 
82
116
  def category_new_topics(category_slug)
83
117
  response = category_new_topics_full(category_slug)
84
- response['topic_list']['topics']
118
+ response["topic_list"]["topics"]
85
119
  end
86
120
 
87
121
  def category_new_topics_full(category_slug)
@@ -91,20 +125,18 @@ module DiscourseApi
91
125
 
92
126
  def category(id)
93
127
  response = get("/c/#{id}/show")
94
- response[:body]['category']
128
+ response[:body]["category"]
95
129
  end
96
130
 
97
131
  # TODO: Deprecated. Remove after 20210727
98
132
  def category_set_user_notification(args = {})
99
133
  category_id = args[:id]
100
- args = API.params(args)
101
- .required(:notification_level)
134
+ args = API.params(args).required(:notification_level)
102
135
  post("/category/#{category_id}/notifications", args)
103
136
  end
104
137
 
105
138
  def category_set_user_notification_level(category_id, params)
106
- params = API.params(params)
107
- .required(:notification_level)
139
+ params = API.params(params).required(:notification_level)
108
140
  post("/category/#{category_id}/notifications", params)
109
141
  end
110
142
  end
@@ -9,16 +9,12 @@ module DiscourseApi
9
9
 
10
10
  def get_dashboard_stats_totals
11
11
  stats = get_dashboard_stats
12
- global_reports = stats['global_reports']
12
+ global_reports = stats["global_reports"]
13
13
  users = global_reports[1]
14
14
  topics = global_reports[3]
15
15
  posts = global_reports[4]
16
16
 
17
- {
18
- 'users' => users['total'],
19
- 'topics' => topics['total'],
20
- 'posts' => posts['total'],
21
- }
17
+ { "users" => users["total"], "topics" => topics["total"], "posts" => posts["total"] }
22
18
  end
23
19
  end
24
20
  end