53 lines
1.1 KiB
Ruby
53 lines
1.1 KiB
Ruby
class EjabberdApiClient
|
|
def initialize
|
|
@base_url = Setting.ejabberd_api_url
|
|
end
|
|
|
|
def post(endpoint, payload)
|
|
res = Faraday.post("#{@base_url}/#{endpoint}", payload.to_json,
|
|
"Content-Type" => "application/json")
|
|
|
|
if res.status != 200
|
|
Rails.logger.error "[ejabberd] API request failed:"
|
|
Rails.logger.error res.body
|
|
#TODO Send custom event to Sentry
|
|
end
|
|
end
|
|
|
|
#
|
|
# API endpoints
|
|
#
|
|
|
|
def add_rosteritem(payload)
|
|
post "add_rosteritem", payload
|
|
end
|
|
|
|
def get_vcard2(user, name, subname)
|
|
payload = {
|
|
user: user.cn, host: user.ou,
|
|
name: name, subname: subname
|
|
}
|
|
post "get_vcard2", payload
|
|
end
|
|
|
|
def private_get(user, element_name, namespace)
|
|
payload = {
|
|
user: user.cn, host: user.ou,
|
|
element: element_name, ns: namespace
|
|
}
|
|
post "private_get", payload
|
|
end
|
|
|
|
def private_set(user, content)
|
|
payload = {
|
|
user: user.cn, host: user.ou,
|
|
element: content
|
|
}
|
|
post "private_set", payload
|
|
end
|
|
|
|
def send_message(payload)
|
|
post "send_message", payload
|
|
end
|
|
end
|