Module: DiscourseApi::API::Groups
- Included in:
- Client
- Defined in:
- lib/discourse_api/api/groups.rb
Instance Method Summary collapse
- #create_group(args) ⇒ Object
- #delete_group(group_id) ⇒ Object
- #group(group_name) ⇒ Object
- #group_add(group_id, users) ⇒ Object
- #group_add_owners(group_id, args) ⇒ Object
- #group_members(group_name, params = {}) ⇒ Object
- #group_remove(group_id, users) ⇒ Object
- #group_remove_owners(group_id, args) ⇒ Object
- #group_set_user_notification_level(group, user_id, notification_level) ⇒ Object
- #groups(args = {}) ⇒ Object
- #update_group(group_id, args) ⇒ Object
Instance Method Details
#create_group(args) ⇒ Object
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 |
# File 'lib/discourse_api/api/groups.rb', line 5 def create_group(args) args = API.params(args) .required(:name) .default(visibility_level: 0) .optional(:mentionable_level, :messageable_level, :automatic_membership_email_domains, :automatic_membership_retroactive, :title, :primary_group, :grant_trust_level, :incoming_email, :flair_url, :flair_bg_color, :flair_color, :bio_raw, :members_visibility_level, :public_admission, :public_exit, :allow_membership_requests, :full_name, :default_notification_level, :usernames, :owner_usernames, :membership_request_template) .to_h post("/admin/groups", group: args) end |
#delete_group(group_id) ⇒ Object
126 127 128 |
# File 'lib/discourse_api/api/groups.rb', line 126 def delete_group(group_id) delete("/admin/groups/#{group_id}.json") end |
#group(group_name) ⇒ Object
87 88 89 90 |
# File 'lib/discourse_api/api/groups.rb', line 87 def group(group_name) response = get("/groups/#{group_name}.json") response.body end |
#group_add(group_id, users) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/discourse_api/api/groups.rb', line 92 def group_add(group_id, users) users.keys.each do |key| # Accept arrays and convert to comma-delimited string. if users[key].respond_to? :join users[key] = users[key].join(",") end # Accept non-plural user_id or username, but send pluralized version in the request. if key.to_s[-1] != 's' users["#{key}s"] = users[key] users.delete(key) end end put("/admin/groups/#{group_id}/members.json", users) end |
#group_add_owners(group_id, args) ⇒ Object
60 61 62 63 64 65 |
# File 'lib/discourse_api/api/groups.rb', line 60 def group_add_owners(group_id, args) args = API.params(args) .required(:usernames) .to_h put("/admin/groups/#{group_id}/owners.json", group: args) end |
#group_members(group_name, params = {}) ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/discourse_api/api/groups.rb', line 130 def group_members(group_name, params = {}) = params params = API.params(params) .optional(:offset, :limit) .default(offset: 0, limit: 100) .to_h response = get("/groups/#{group_name}/members.json", params) if [:all] == true response.body else response.body['members'] end end |
#group_remove(group_id, users) ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/discourse_api/api/groups.rb', line 109 def group_remove(group_id, users) users.keys.each do |key| # Accept arrays and convert to comma-delimited string. if users[key].respond_to? :join users[key] = users[key].join(",") end # Accept non-plural user_id or username, but send pluralized version in the request. if key.to_s[-1] != 's' users["#{key}s"] = users[key] users.delete(key) end end delete("/admin/groups/#{group_id}/members.json", users) end |
#group_remove_owners(group_id, args) ⇒ Object
67 68 69 70 71 72 |
# File 'lib/discourse_api/api/groups.rb', line 67 def group_remove_owners(group_id, args) args = API.params(args) .required(:usernames) .to_h delete("/admin/groups/#{group_id}/owners.json", group: args) end |
#group_set_user_notification_level(group, user_id, notification_level) ⇒ Object
145 146 147 |
# File 'lib/discourse_api/api/groups.rb', line 145 def group_set_user_notification_level(group, user_id, notification_level) post("/groups/#{group}/notifications?user_id=#{user_id}¬ification_level=#{notification_level}") end |
#groups(args = {}) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/discourse_api/api/groups.rb', line 74 def groups(args = {}) params = API.params(args) .optional(:page) .to_h url = "/groups.json" if params.include?(:page) url += "?page=#{params[:page]}" end response = get(url) response.body end |
#update_group(group_id, args) ⇒ Object
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 |
# File 'lib/discourse_api/api/groups.rb', line 34 def update_group(group_id, args) args = API.params(args) .default(visibility_level: 0) .optional(:mentionable_level, :messageable_level, :name, :automatic_membership_email_domains, :title, :primary_group, :grant_trust_level, :incoming_email, :flair_url, :flair_bg_color, :flair_color, :bio_raw, :visibility_level, :public_admission, :public_exit, :allow_membership_requests, :full_name, :default_notification_level, :membership_request_template) .to_h put("/groups/#{group_id}", group: args) end |