class RingCentralSdk::REST::Cache::Extensions

Extensions cache is a local store that can retrieve all extensions for use locally

Attributes

account_id[RW]
client[RW]
extensions_hash[R]
extensions_num2id[R]
last_retrieved[R]

Public Class Methods

new(client) click to toggle source
# File lib/ringcentral_sdk/rest/cache/extensions.rb, line 16
def initialize(client)
  @client = client
  @account_id = '~'
  flush
end

Public Instance Methods

flush() click to toggle source
# File lib/ringcentral_sdk/rest/cache/extensions.rb, line 22
def flush
  @extensions_hash = {}
  @extensions_num2id = {}
  @last_retrieved = -1
end
get_department_members(department_id) click to toggle source
# File lib/ringcentral_sdk/rest/cache/extensions.rb, line 94
def get_department_members(department_id)
  department_id = department_id.to_s unless department_id.is_a? String
  if department_id !~ /^[0-9]+$/
    raise 'department_id parameter must be a positive integer'
  end

  members = []

  res = @client.http.get do |req|
    req.url "account/#{account_id}/department/#{department_id}/members"
  end

  if res.body.key? 'records'
    res.body['records'].each do |extension|
      if extension.key? 'id'
        member = get_extension_by_id extension['id']
        members.push member unless member.nil?
      end
    end
  end

  members
end
get_extension_by_id(extension_id) click to toggle source
# File lib/ringcentral_sdk/rest/cache/extensions.rb, line 75
def get_extension_by_id(extension_id)
  extension_id = extension_id.to_s unless extension_id.is_a? String
  return @extensions_hash[extension_id] if @extensions_hash.key? extension_id
  nil
end
get_extension_by_number(extension_number) click to toggle source
# File lib/ringcentral_sdk/rest/cache/extensions.rb, line 81
def get_extension_by_number(extension_number)
  unless extension_number.is_a? String
    extension_number = extension_number.to_s
  end
  if @extensions_num2id.key?(extension_number)
    extension_id = @extensions_num2id[extension_number]
    if @extensions_hash.key?(extension_id)
      return @extensions_hash[extension_id]
    end
  end
  nil
end
inflate_num2id() click to toggle source
# File lib/ringcentral_sdk/rest/cache/extensions.rb, line 64
def inflate_num2id
  num2id = {}
  @extensions_hash.each do |_, v|
    if v.key?('id') && v['id'] > 0 && v.key?('extensionNumber') && !v['extensionNumber'].empty?
      num2id[v['extensionNumber']] = v['id'].to_s
    end
  end
  @extensions_num2id = num2id
  num2id
end
load_extensions(api_extensions) click to toggle source
# File lib/ringcentral_sdk/rest/cache/extensions.rb, line 52
def load_extensions(api_extensions)
  api_extensions.each do |extension|
    if extension.key?('id') && extension['id'] > 0
      @extensions_hash[extension['id'].to_s] = extension
    end
  end
end
retrieve(params = {}, retrieve_all = true) click to toggle source
# File lib/ringcentral_sdk/rest/cache/extensions.rb, line 28
def retrieve(params = {}, retrieve_all = true)
  @last_retrieved = Time.now.to_i
  uri = URI.parse "account/#{@account_id}/extension"
  uri.query = URI.encode_www_form(params) unless params.empty?
  res = @client.http.get do |req|
    req.url uri.to_s
    if retrieve_all
      req.params['page'] = 1
      req.params['perPage'] = 1000
    end
  end
  load_extensions(res.body['records'])
  if retrieve_all
    while res.body.key?('navigation') && res.body['navigation'].key?('nextPage')
      res = @client.http.get do |req|
        req.url res.body['navigation']['nextPage']['uri']
      end
      load_extensions(res.body['records'])
    end
  end
  inflate_num2id
  @extensions_hash
end
retrieve_all() click to toggle source
# File lib/ringcentral_sdk/rest/cache/extensions.rb, line 60
def retrieve_all
  retrieve({}, true)
end