class OneAndOne::Role

Attributes

id[RW]
specs[RW]

Public Class Methods

new(test: false) click to toggle source
# File lib/1and1/role.rb, line 11
def initialize(test: false)
  @id = nil
  @specs = nil

  # Check if hitting mock api or live api
  if test
    @connection = Excon.new($base_url, :mock => true)
  else
    @connection = Excon.new($base_url)
  end

end

Public Instance Methods

add_users(role_id: @id, users: nil) click to toggle source
# File lib/1and1/role.rb, line 272
def add_users(role_id: @id, users: nil)

  # If user passed in role ID, reassign
  @id = role_id

  # Create POST body
  new_users = {
    'users' => users
  }

  # Stringify the POST body
  string_body = new_users.to_json

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}/users")

  # Perform request
  response = @connection.request(:method => :post,
    :path => path,
    :headers => $header,
    :body => string_body)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
clone(role_id: @id, name: nil) click to toggle source
# File lib/1and1/role.rb, line 347
def clone(role_id: @id, name: nil)

  # If user passed in role ID, reassign
  @id = role_id

  # Build POST body
  new_role = {
    'name' => name
  }

  # Stringify the POST body
  string_body = new_role.to_json

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}/clone")

  # Perform request
  response = @connection.request(:method => :post,
    :path => path,
    :headers => $header,
    :body => string_body)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
create(name: nil) click to toggle source
# File lib/1and1/role.rb, line 57
def create(name: nil)

  # Build POST body
  new_role = {
    'name' => name
  }

  # Clean out null keys in POST body
  body = OneAndOne.clean_hash(new_role)

  # Stringify the POST body
  string_body = body.to_json

  # Build URL
  path = OneAndOne.build_url('/roles')

  # Perform request
  response = @connection.request(:method => :post,
    :path => path,
    :headers => $header,
    :body => string_body)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  json = JSON.parse(response.body)

  # Save new role ID to Role instance
  @id = json['id']
  @specs = json

  # If all good, return JSON
  json

end
delete(role_id: @id) click to toggle source
# File lib/1and1/role.rb, line 153
def delete(role_id: @id)

  # If user passed in role ID, reassign
  @id = role_id

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}")

  # Perform request
  response = @connection.request(:method => :delete,
    :path => path,
    :headers => $header)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
get(role_id: @id) click to toggle source
# File lib/1and1/role.rb, line 95
def get(role_id: @id)

  # If user passed in role ID, reassign
  @id = role_id

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}")

  # Perform request
  response = @connection.request(:method => :get,
    :path => path,
    :headers => $header)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
get_user(role_id: @id, user_id: nil) click to toggle source
# File lib/1and1/role.rb, line 303
def get_user(role_id: @id, user_id: nil)

  # If user passed in role ID, reassign
  @id = role_id

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}/users/#{user_id}")

  # Perform request
  response = @connection.request(:method => :get,
    :path => path,
    :headers => $header)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
list(page: nil, per_page: nil, sort: nil, q: nil, fields: nil) click to toggle source
# File lib/1and1/role.rb, line 25
def list(page: nil, per_page: nil, sort: nil, q: nil, fields: nil)

  # Build hash for query parameters
  keyword_args = {
    :page => page,
    :per_page => per_page,
    :sort => sort,
    :q => q,
    :fields => fields
  }

  # Clean out null query parameters
  params = OneAndOne.clean_hash(keyword_args)

  # Build URL
  path = OneAndOne.build_url('/roles')

  # Perform request
  response = @connection.request(:method => :get,
    :path => path,
    :headers => $header,
    :query => params)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
modify(role_id: @id, name: nil, description: nil, state: nil) click to toggle source
# File lib/1and1/role.rb, line 117
def modify(role_id: @id, name: nil, description: nil, state: nil)

  # If user passed in role ID, reassign
  @id = role_id

  # Build PUT body
  new_role = {
    'name' => name,
    'description' => description,
    'state' => state
  }

  # Clean out null keys in PUT body
  body = OneAndOne.clean_hash(new_role)

  # Stringify the PUT body
  string_body = body.to_json

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}")

  # Perform request
  response = @connection.request(:method => :put,
    :path => path,
    :headers => $header,
    :body => string_body)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
modify_permissions(role_id: @id, servers: nil, images: nil, shared_storages: nil, firewalls: nil, load_balancers: nil, ips: nil, private_networks: nil, vpns: nil, monitoring_centers: nil, monitoring_policies: nil, backups: nil, logs: nil, users: nil, roles: nil, usages: nil, interactive_invoices: nil) click to toggle source
# File lib/1and1/role.rb, line 197
def modify_permissions(role_id: @id, servers: nil, images: nil,
  shared_storages: nil, firewalls: nil, load_balancers: nil, ips: nil,
  private_networks: nil, vpns: nil, monitoring_centers: nil,
  monitoring_policies: nil, backups: nil, logs: nil, users: nil,
  roles: nil, usages: nil, interactive_invoices: nil)

  # If user passed in role ID, reassign
  @id = role_id

  # Build PUT body
  new_perms = {
    'servers' => servers,
    'images' => images,
    'sharedstorages' => shared_storages,
    'firewalls' => firewalls,
    'loadbalancers' => load_balancers,
    'ips' => ips,
    'privatenetwork' => private_networks,
    'vpn' => vpns,
    'monitoringcenter' => monitoring_centers,
    'monitoringpolicies' => monitoring_policies,
    'backups' => backups,
    'logs' => logs,
    'users' => users,
    'roles' => roles,
    'usages' => usages,
    'interactiveinvoice' => interactive_invoices
  }

  # Clean out null keys in PUT body
  body = OneAndOne.clean_hash(new_perms)

  # Stringify the PUT body
  string_body = body.to_json

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}/permissions")

  # Perform request
  response = @connection.request(:method => :put,
    :path => path,
    :headers => $header,
    :body => string_body)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
permissions(role_id: @id) click to toggle source
# File lib/1and1/role.rb, line 175
def permissions(role_id: @id)

  # If user passed in role ID, reassign
  @id = role_id

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}/permissions")

  # Perform request
  response = @connection.request(:method => :get,
    :path => path,
    :headers => $header)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
remove_user(role_id: @id, user_id: nil) click to toggle source
# File lib/1and1/role.rb, line 325
def remove_user(role_id: @id, user_id: nil)

  # If user passed in role ID, reassign
  @id = role_id

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}/users/#{user_id}")

  # Perform request
  response = @connection.request(:method => :delete,
    :path => path,
    :headers => $header)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end
users(role_id: @id) click to toggle source
# File lib/1and1/role.rb, line 250
def users(role_id: @id)

  # If user passed in role ID, reassign
  @id = role_id

  # Build URL
  path = OneAndOne.build_url("/roles/#{@id}/users")

  # Perform request
  response = @connection.request(:method => :get,
    :path => path,
    :headers => $header)

  # Check response status
  OneAndOne.check_response(response.body, response.status)

  #JSON-ify the response string
  JSON.parse(response.body)

end