akkounts/app/services/ejabberd_api_client.rb
Râu Cao 8b3243af6b
All checks were successful
continuous-integration/drone/push Build is passing
Sort API methods alphabetically
2025-05-15 12:19:09 +04:00

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