class Openfire::Api

Public Class Methods

new(endpoint_url, access_token) click to toggle source
# File lib/openfire/api.rb, line 3
def initialize(endpoint_url, access_token)
  @endpoint_url = endpoint_url
  @access_token = access_token
end

Public Instance Methods

add_user_to_chatroom(room_name, role, username_or_jid, params={}) click to toggle source
# File lib/openfire/api.rb, line 126
def add_user_to_chatroom(room_name, role, username_or_jid, params={})
  request = web_request('POST', "/chatrooms/#{room_name}/#{role}/#{username_or_jid}", params, default_headers)
  (request[:status_code] == 201)
end
add_user_to_group(username, groupname) click to toggle source
# File lib/openfire/api.rb, line 49
def add_user_to_group(username, groupname)
  request = web_request('POST', "/users/#{username}/groups/#{groupname}", { }, default_headers)
  (request[:status_code] == 201)
end
add_user_to_groups(username, groupnames) click to toggle source
# File lib/openfire/api.rb, line 54
def add_user_to_groups(username, groupnames)
  payload = { groupname: groupnames }.to_json
  request = web_request('POST', "/users/#{username}/groups", payload, default_headers)
  (request[:status_code] == 201)
end
close_user_sessions(username) click to toggle source
# File lib/openfire/api.rb, line 219
def close_user_sessions(username)
  request = web_request('DELETE', "/sessions/#{username}", { }, default_headers)
  (request[:status_code] == 200)
end
create_chatroom(room_data={}) click to toggle source
# File lib/openfire/api.rb, line 111
def create_chatroom(room_data={})
  request = web_request('POST', '/chatrooms', room_data.to_json, default_headers)
  (request[:status_code] == 201)
end
create_group(group_data) click to toggle source
# File lib/openfire/api.rb, line 184
def create_group(group_data)
  request = web_request('POST', '/groups', group_data.to_json, default_headers)
  (request[:status_code] == 201)
end
create_system_property(property_name, value) click to toggle source
# File lib/openfire/api.rb, line 146
def create_system_property(property_name, value)
  payload = {
    '@key' => property_name,
    '@value' => value
  }.to_json
  request = web_request('POST', '/system/properties', payload, default_headers)
  (request[:status_code] == 201)
end
create_user(user_data={}) click to toggle source
# File lib/openfire/api.rb, line 18
def create_user(user_data={})
  request = web_request('POST', '/users', user_data.to_json, default_headers)
  (request[:status_code] == 201)
end
create_user_roster(username, roster_data={}) click to toggle source
# File lib/openfire/api.rb, line 76
def create_user_roster(username, roster_data={})
  request = web_request('POST', "/users/#{username}/roster", roster_data.to_json, default_headers)
  (request[:status_code] == 201)
end
delete_chatroom(room_name) click to toggle source
# File lib/openfire/api.rb, line 116
def delete_chatroom(room_name)
  request = web_request('DELETE', "/chatrooms/#{room_name}", { }, default_headers)
  (request[:status_code] == 200)
end
delete_group(groupname) click to toggle source
# File lib/openfire/api.rb, line 194
def delete_group(groupname)
  request = web_request('DELETE', "/groups/#{groupname}", { }, default_headers)
  (request[:status_code] == 200)
end
delete_system_property(property_name) click to toggle source
# File lib/openfire/api.rb, line 155
def delete_system_property(property_name)
  request = web_request('DELETE', "/system/properties/#{property_name}", { }, default_headers)
  (request[:status_code] == 200)
end
delete_user(username) click to toggle source
# File lib/openfire/api.rb, line 28
def delete_user(username)
  request = web_request('DELETE', "/users/#{username}", { }, default_headers)
  (request[:status_code] == 200)
end
delete_user_from_chatroom(room_name, role, username_or_jid, params={}) click to toggle source
# File lib/openfire/api.rb, line 131
def delete_user_from_chatroom(room_name, role, username_or_jid, params={})
  request = web_request('DELETE', "/chatrooms/#{room_name}/#{role}/#{username_or_jid}", params, default_headers)
  (request[:status_code] == 200)
end
delete_user_from_group(username, groupname) click to toggle source
# File lib/openfire/api.rb, line 60
def delete_user_from_group(username, groupname)
  request = web_request('DELETE', "/users/#{username}/groups/#{groupname}", { }, default_headers)
  (request[:status_code] == 200)
end
delete_user_from_groups(username, groupnames) click to toggle source
# File lib/openfire/api.rb, line 65
def delete_user_from_groups(username, groupnames)
  payload = { groupname: groupnames }.to_json
  request = web_request('DELETE', "/users/#{username}/groups", payload, default_headers)
  (request[:status_code] == 200)
end
delete_user_roster(username, jid) click to toggle source
# File lib/openfire/api.rb, line 81
def delete_user_roster(username, jid)
  request = web_request('DELETE', "/users/#{username}/roster/#{jid}", { }, default_headers)
  (request[:status_code] == 200)
end
get_chatroom(room_name) click to toggle source
# File lib/openfire/api.rb, line 96
def get_chatroom(room_name)
  request = web_request('GET', "/chatrooms/#{room_name}", { }, default_headers)
  Openfire::ChatRoom.new(request[:body])
end
get_chatroom_occupants(room_name) click to toggle source
# File lib/openfire/api.rb, line 106
def get_chatroom_occupants(room_name)
  request = web_request('GET', "/chatrooms/#{room_name}/occupants", { }, default_headers)
  request[:body]
end
get_chatroom_participants(room_name) click to toggle source
# File lib/openfire/api.rb, line 101
def get_chatroom_participants(room_name)
  request = web_request('GET', "/chatrooms/#{room_name}/participants", { }, default_headers)
  request[:body]
end
get_chatrooms(filters={}) click to toggle source
# File lib/openfire/api.rb, line 91
def get_chatrooms(filters={})
  request = web_request('GET', '/chatrooms', filters, default_headers)
  request[:body]['chatroom'].map { |x| Openfire::ChatRoom.new(x) }
end
get_concurrent_sessions_count() click to toggle source
# File lib/openfire/api.rb, line 169
def get_concurrent_sessions_count
  request = web_request('GET', '/system/statistics/sessions', { }, default_headers)
  Openfire::SessionsCount.new(request[:body])
end
get_group(groupname) click to toggle source
# File lib/openfire/api.rb, line 179
def get_group(groupname)
  request = web_request('GET', "/groups/#{groupname}", { }, default_headers)
  Openfire::Group.new(request[:body])
end
get_groups() click to toggle source
# File lib/openfire/api.rb, line 174
def get_groups
  request = web_request('GET', '/groups', { }, default_headers)
  request[:body]['group'].map { |x| Openfire::Group.new(x) }
end
get_sessions() click to toggle source
# File lib/openfire/api.rb, line 199
def get_sessions
  request = web_request('GET', '/sessions', { }, default_headers)
  data = request[:body]['session']
  if data.is_a?(Array)
    data.map { |x| Openfire::Session.new(x) }
  else
    [Openfire::Session.new(data)]
  end
end
get_system_properties() click to toggle source
# File lib/openfire/api.rb, line 136
def get_system_properties
  request = web_request('GET', '/system/properties', { }, default_headers)
  request[:body]['property'].map { |x| Openfire::SystemProperty.new(x) }
end
get_system_property(property_name) click to toggle source
# File lib/openfire/api.rb, line 141
def get_system_property(property_name)
  request = web_request('GET', "/system/properties/#{property_name}", { }, default_headers)
  Openfire::SystemProperty.new(request[:body])
end
get_user(username) click to toggle source
# File lib/openfire/api.rb, line 13
def get_user(username)
  request = web_request('GET', "/users/#{username}", { }, default_headers)
  Openfire::User.new(request[:body])
end
get_user_groups(username) click to toggle source
# File lib/openfire/api.rb, line 43
def get_user_groups(username)
  request = web_request('GET', "/users/#{username}/groups", { }, default_headers)
  body = request[:body]['groupname']
  body.is_a?(Array) ? body : [body]
end
get_user_roster(username) click to toggle source
# File lib/openfire/api.rb, line 71
def get_user_roster(username)
  request = web_request('GET', "/users/#{username}/roster", { }, default_headers)
  Openfire::UserRoster.new(request[:body])
end
get_user_sessions(username) click to toggle source
# File lib/openfire/api.rb, line 209
def get_user_sessions(username)
  request = web_request('GET', "/sessions/#{username}", { }, default_headers)
  data = request[:body]['session']
  if data.is_a?(Array)
    data.map { |x| Openfire::Session.new(x) }
  else
    [Openfire::Session.new(data)]
  end
end
get_users(filters={}) click to toggle source
# File lib/openfire/api.rb, line 8
def get_users(filters={})
  request = web_request('GET', '/users', filters, default_headers)
  request[:body]['user'].map { |x| Openfire::User.new(x) }
end
lock_user(username) click to toggle source
# File lib/openfire/api.rb, line 33
def lock_user(username)
  request = web_request('POST', "/lockouts/#{username}", { }, default_headers)
  (request[:status_code] == 200)
end
send_broadcast_message(message_text) click to toggle source
# File lib/openfire/api.rb, line 224
def send_broadcast_message(message_text)
  payload = { body: message_text }.to_json
  request = web_request('POST', '/messages/users', payload, default_headers)
  (request[:status_code] == 201)
end
unlock_user(username) click to toggle source
# File lib/openfire/api.rb, line 38
def unlock_user(username)
  request = web_request('DELETE', "/lockouts/#{username}", { }, default_headers)
  (request[:status_code] == 200)
end
update_chatroom(room_name, room_data={}) click to toggle source
# File lib/openfire/api.rb, line 121
def update_chatroom(room_name, room_data={})
  request = web_request('PUT', "/chatrooms/#{room_name}", room_data.to_json, default_headers)
  (request[:status_code] == 200)
end
update_group(groupname, group_data={}) click to toggle source
# File lib/openfire/api.rb, line 189
def update_group(groupname, group_data={})
  request = web_request('PUT', "/groups/#{groupname}", group_data.to_json, default_headers)
  (request[:status_code] == 200)
end
update_system_property(property_name, value) click to toggle source
# File lib/openfire/api.rb, line 160
def update_system_property(property_name, value)
  payload = {
    '@key' => property_name,
    '@value' => value
  }.to_json
  request = web_request('PUT', "/system/properties/#{property_name}", payload, default_headers)
  (request[:status_code] == 200)
end
update_user(username, user_data={}) click to toggle source
# File lib/openfire/api.rb, line 23
def update_user(username, user_data={})
  request = web_request('PUT', "/users/#{username}", user_data.to_json, default_headers)
  (request[:status_code] == 200)
end
update_user_roster(username, jid, roster_data={}) click to toggle source
# File lib/openfire/api.rb, line 86
def update_user_roster(username, jid, roster_data={})
  request = web_request('PUT', "/users/#{username}/roster/#{jid}", roster_data.to_json, default_headers)
  (request[:status_code] == 200)
end

Private Instance Methods

default_headers() click to toggle source
# File lib/openfire/api.rb, line 232
def default_headers
  {
    content_type: :json,
    accept: :json,
    authorization: @access_token
  }
end
parse_response(response) click to toggle source
# File lib/openfire/api.rb, line 253
def parse_response(response)
  result = {
    headers: response.headers,
    body: (JSON.parse(response.body) rescue response.body),
    status_code: response.code
  }

  result
end
web_request(uri_method, action, params={}, headers={}) click to toggle source
# File lib/openfire/api.rb, line 240
def web_request(uri_method, action, params={}, headers={})
  begin
    parse_response(RestClient::Request.execute({
      method: uri_method,
      url: "#{@endpoint_url}#{action}",
      payload: params,
      headers: headers
    }))
  rescue => e
    parse_response(e.response)
  end
end