Class: Sipwizard::Account

Inherits:
Hashie::Trash
  • Object
show all
Defined in:
lib/sipwizard/account.rb

Constant Summary collapse

API_PATH_MAP =
{
  count: 'sipaccount/count',
  find:  'sipaccount/get',
  create: 'sipaccount/add',
  update: 'sipaccount/update',
  delete: 'sipaccount/delete'
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build_for_request(h) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/sipwizard/account.rb', line 38

def self.build_for_request(h)
   = self.new(h)
   = Hash[.map{ |k,v| ["#{k}".camelize, v] }]
  ['ID']                = .delete('Id')
  ['SIPDomain']         = .delete('Domain')
  ['SIPUsername']       = .delete('Username')
  ['SIPPassword']       = .delete('Password')
  ['IPAddressACL']      = .delete('IpAddressAcl')
  ['AvatarURL']         = .delete('AvatarUrl')
  ['NetworkID']         = .delete('NetworkId')
  ['SendNATKeepAlives'] = .delete('SendNatKeepAlives')

  .delete_if{ |_,v| v.nil? } #delete all the keys for which we dont have value
end

.count(params = {}) ⇒ Object



53
54
55
56
57
# File 'lib/sipwizard/account.rb', line 53

def self.count(params={})
  response = Connection.new.get(API_PATH_MAP[:count], params)

  response['Success'] ? response['Result'] : -1
end

.create(params) ⇒ Object

Raises:

  • (ArgumentError)


91
92
93
94
95
96
97
98
# File 'lib/sipwizard/account.rb', line 91

def self.create(params)
  payload = self.build_for_request(params)
  result = Connection.new.post(API_PATH_MAP[:create], payload)

  raise ArgumentError.new(result["Error"]) unless result['Success']

  result['Result'] #ID
end

.delete(id) ⇒ Object

Raises:

  • (ArgumentError)


100
101
102
103
104
105
106
# File 'lib/sipwizard/account.rb', line 100

def self.delete(id)
  result = Connection.new.get(API_PATH_MAP[:delete], {id: id})

  raise ArgumentError.new(result["Error"]) unless result['Success']

  result['Result'] #true | false
end

.find(id) ⇒ Object



63
64
65
66
67
68
69
70
# File 'lib/sipwizard/account.rb', line 63

def self.find(id)
  relation = self.where({ ID: id }).count(1)
  result = Connection.new.get(API_PATH_MAP[:find], relation.relation)

  return nil unless result['Success']

  self.new(result['Result'][0])
end

.first_by(args) ⇒ Object



72
73
74
75
76
77
78
79
# File 'lib/sipwizard/account.rb', line 72

def self.first_by(args)
  relation = self.where(args).count(1)
  result = Connection.new.get(API_PATH_MAP[:find], relation.relation)

  return nil unless result['Success']

  self.new(result['Result'][0])
end

.first_x_by(args) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'lib/sipwizard/account.rb', line 81

def self.first_x_by(args)
  count = args.delete(:count)
  relation = self.where(args).count(count)
  result = Connection.new.get(API_PATH_MAP[:find], relation.relation)

  return nil unless result['Success']

  result['Result'].map{ |r| self.new(r) }
end

.where(params) ⇒ Object



59
60
61
# File 'lib/sipwizard/account.rb', line 59

def self.where(params)
  Relation.new.where(params)
end

Instance Method Details

#deleteObject



116
117
118
# File 'lib/sipwizard/account.rb', line 116

def delete
  Account.delete(self.id)
end

#saveObject

Raises:

  • (ArgumentError)


108
109
110
111
112
113
114
# File 'lib/sipwizard/account.rb', line 108

def save
  payload = Account.build_for_request(self.to_hash)
  result = Connection.new.post(API_PATH_MAP[:update], payload)
  raise ArgumentError.new(result["Error"]) unless result['Success']

  result['Result'] #ID
end