AtlatestRepositorysigil-discourse
sigil-discourse / tree / src / discoursegroups.sgl
1
;;; (discourse groups) - Group management.2
;;;3
;;; Functions for listing, creating, and managing Discourse groups4
;;; and their members.6
(define-library (discourse groups)7
(import (sigil core)8
(sigil string)9
(discourse client))11
(export discourse-list-groups12
discourse-get-group13
discourse-create-group14
discourse-delete-group15
discourse-add-group-members16
discourse-remove-group-members17
discourse-list-group-members)19
(begin21
;;; List all groups.22
(define (discourse-list-groups base-url api-key username)23
(discourse-get/json api-key username24
(discourse-url base-url "groups.json")))26
;;; Get a group by name.27
(define (discourse-get-group base-url api-key username group-name)28
(discourse-get/json api-key username29
(discourse-url base-url "groups" (string-append group-name ".json"))))31
;;; Create a new group (admin endpoint).32
(define (discourse-create-group base-url api-key username group-name)33
(discourse-post/json api-key username34
(discourse-url base-url "admin" "groups.json")35
#{ group: #{ name: group-name } }))37
;;; Delete a group (admin endpoint).38
(define (discourse-delete-group base-url api-key username group-id)39
(discourse-delete api-key username40
(discourse-url base-url "admin" "groups" (string-append (number->string group-id) ".json"))))42
;;; Add members to a group.43
;;;44
;;; usernames is a comma-separated string.45
(define (discourse-add-group-members base-url api-key username group-id usernames)46
(discourse-put/json api-key username47
(discourse-url base-url "groups" (number->string group-id) "members.json")48
#{ usernames: usernames }))50
;;; Remove members from a group.51
;;;52
;;; usernames is a comma-separated string.53
(define (discourse-remove-group-members base-url api-key username group-id usernames)54
(discourse-delete/json api-key username55
(discourse-url base-url "groups" (number->string group-id) "members.json")56
#{ usernames: usernames }))58
;;; List members of a group.59
(define (discourse-list-group-members base-url api-key username group-name)60
(discourse-get/json api-key username61
(discourse-url base-url "groups" group-name "members.json")))63
))