Module: JsonCrudApi::Crud

Included in:
API
Defined in:
lib/json-crud-api/crud.rb

Instance Method Summary collapse

Instance Method Details

#crud_delete(key) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/json-crud-api/crud.rb', line 46

def crud_delete(key)
  service = settings.services[key]
  presenter = settings.presenters[key]
  return fail_forbidden unless service.user_authorized_for? :delete
  return fail_not_found unless service.delete params["id"]
  204
end

#crud_get(key) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/json-crud-api/crud.rb', line 15

def crud_get(key)
  service = settings.services[key]
  presenter = settings.presenters[key]
  return fail_forbidden unless service.user_authorized_for? :get
  entity = service.get(params["id"])
  return fail_not_found if entity.nil?

  JSON.fast_generate presenter.render(entity, :get)
end

#crud_get_all(key) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/json-crud-api/crud.rb', line 5

def crud_get_all(key)
  service = settings.services[key]
  presenter = settings.presenters[key]
  return fail_forbidden unless service.user_authorized_for? :get_all
  entities = service.get_all
  return fail_not_found if entities.nil?

  JSON.fast_generate presenter.render(entities, :get_all)
end

#crud_post(key) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/json-crud-api/crud.rb', line 25

def crud_post(key)
  service = settings.services[key]
  presenter = settings.presenters[key]
  return fail_forbidden unless service.user_authorized_for? :create
  post_data = presenter.parse @payload, :post
  return fail_with_errors unless service.valid_for? post_data, :create, self
  entity = service.create post_data 
  JSON.fast_generate presenter.render(entity, :post)
end

#crud_put(key) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/json-crud-api/crud.rb', line 35

def crud_put(key)
  service = settings.services[key]
  presenter = settings.presenters[key]
  return fail_forbidden unless service.user_authorized_for? :update
  put_data = presenter.parse @payload, :put
  return fail_with_errors unless service.valid_for? put_data, :update, self
  return fail_not_found unless service.update params["id"], put_data
  entity = service.get params["id"]
  JSON.fast_generate presenter.render(entity, :put)
end