Module: ZimbraRestApi::Helpers

Defined in:
lib/helpers.rb

Instance Method Summary collapse

Instance Method Details

#object_factory(resource) ⇒ Object



91
92
93
# File 'lib/helpers.rb', line 91

def object_factory(resource)
  "ZimbraRestApi::#{resource.camelize(true)}".constantize
end

#resource_add_grant(resource, id, params) ⇒ Object



62
63
64
65
66
67
68
69
70
71
# File 'lib/helpers.rb', line 62

def resource_add_grant(resource, id, params)
  object = object_factory(resource)
  result = object.find(id)
  return status 404 if result.nil?
  begin
    json result.add_grant(params)
  rescue Exception => e
    json({ errors: [ e.message ]})
  end
end

#resource_count(resource, params = {}) ⇒ Object



17
18
19
20
21
# File 'lib/helpers.rb', line 17

def resource_count(resource, params = {})
  object = object_factory(resource)
  params.merge!('max_results' => 0)
  json object.count(params)
end

#resource_create(resource, params) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/helpers.rb', line 30

def resource_create(resource, params)
  object = object_factory(resource)
  begin
    json object.create(params)
  rescue Zimbra::HandsoapErrors::SOAPFault => e
    json({ errors: [ e.message ]})
  end
end

#resource_delete(resource, id) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/helpers.rb', line 50

def resource_delete(resource, id)
  object = object_factory(resource)
  result = object.find(id)
  return status 404 if result.nil?
  begin
    result.delete
    status 200
  rescue Exception => e
    json({ errors: [ e.message ]})
  end
end

#resource_index(resource, params = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/helpers.rb', line 4

def resource_index(resource, params = {})
  object = object_factory(resource)
  begin
    result = object.all(params)
    return json({}) if result.nil?
    set_pagination_headers(result[:search_total], params)
    json(result[:results])
  rescue ZimbraRestApi::TO_MANY_RESULTS => e
    result = { 'errors' => { e.to_s => e.message } }
    json result
  end
end

#resource_revoke_grant(resource, id, params) ⇒ Object



73
74
75
76
77
78
79
80
81
82
# File 'lib/helpers.rb', line 73

def resource_revoke_grant(resource, id, params)
  object = object_factory(resource)
  result = object.find(id)
  return status 404 if result.nil?
  begin
    json result.revoke_grant(params)
  rescue Exception => e
    json({ errors: [ e.message ]})
  end
end

#resource_show(resource, id) ⇒ Object



23
24
25
26
27
28
# File 'lib/helpers.rb', line 23

def resource_show(resource, id)
  object = object_factory(resource)
  result = object.find(id)
  return json(result) if result
  status 404
end

#resource_update(resource, id, params) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/helpers.rb', line 39

def resource_update(resource, id, params)
  object = object_factory(resource)
  result = object.find(id)
  return status 404 if result.nil?
  begin
    json result.update_attributes(params)
  rescue Exception => e
    json({ errors: [ e.message ]})
  end
end

#set_pagination_headers(total, pagination) ⇒ Object



84
85
86
87
88
89
# File 'lib/helpers.rb', line 84

def set_pagination_headers(total, pagination)
  headers('X-Total' => total.to_s,
          'X-Page' => (pagination['page'] || 1).to_s,
          'X-Per-Page' => (pagination['per_page'] || 10).to_s
          )
end