Class: Nimbus::V4::BaseController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/mno_enterprise/nimbus/v4/base_controller.rb

Defined Under Namespace

Classes: ResponseCode

Constant Summary collapse

INTERNAL_ERROR =
ResponseCode.new('unknownError', 500)
RESOURCE_NOT_FOUND =
ResponseCode.new('notFound', 404)
PARENT_RESOURCE_NOT_FOUND =
ResponseCode.new('parentNotFound', 404)
AUTHENTICATION_ERROR =
ResponseCode.new('notAuthenticated', 401)
VALIDATION_ERROR =
ResponseCode.new('validationError', 400)
NO_ERROR =
ResponseCode.new('noError', 200)

Instance Method Summary collapse

Instance Method Details

#createObject

POST /api/nimbus/v4/<resources_name> Create new resource and return representation



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/controllers/mno_enterprise/nimbus/v4/base_controller.rb', line 48

def create
  unless params[:data]
    render_error VALIDATION_ERROR, 'Body does not contain the field: data'
    return false
  end

  attributes = params[:data].select { |k, v| params_create_whitelist.include?(k.to_sym) }

  @resource = build_resource(attributes)

  # Save resource or set error code and status
  unless @resource.save
    render_errors VALIDATION_ERROR, @resource.errors
    return
  end

  after_create_resource(@resource)

  render_response(@resource, 201)
end

#destroyObject

DELETE /api/nimbus/v4/<resources_name>/:id Delete a resource



99
100
101
102
103
104
105
106
107
108
109
# File 'app/controllers/mno_enterprise/nimbus/v4/base_controller.rb', line 99

def destroy
  @resource = get_resource(params[:id])
  # Check resource exists
  unless @resource
    render_error RESOURCE_NOT_FOUND, 'Resource not found: ' + params[:id]
    return
  end

  destroy_resource(@resource)
  render_response(@resource)
end

#indexObject

GET /api/nimbus/v4/<resources_name> Get all resources



28
29
30
# File 'app/controllers/mno_enterprise/nimbus/v4/base_controller.rb', line 28

def index
  render_response(get_resources)
end

#showObject

GET /api/nimbus/v4/:id Show specific resource



34
35
36
37
38
39
40
41
42
43
44
# File 'app/controllers/mno_enterprise/nimbus/v4/base_controller.rb', line 34

def show
  @resource = get_resource(params[:id])

  if @resource
    render_response(@resource)
    return
  else
    render_error RESOURCE_NOT_FOUND, 'Resource not found: ' + params[:id]
    return
  end
end

#updateObject

PUT /api/nimbus/v4/<resources_name>/:id Change, suspend or reactivate a resource Operation passed in body: “operation”:“suspend”



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'app/controllers/mno_enterprise/nimbus/v4/base_controller.rb', line 72

def update
  attributes = (params[:data] || {}).select { |k, v| params_update_whitelist.include?(k.to_sym) }

  @resource = get_resource(params[:id])

  # Check resource exists
  unless @resource
    render_error RESOURCE_NOT_FOUND, 'Resource not found: ' + params[:id]
    return false
  end

  if attributes.any?
    update_resource(@resource, attributes)
    unless @resource.save
      render_errors VALIDATION_ERROR, @resource.errors
      return false
    end
  end

  after_update_resource(@resource, attributes)

  render_response(@resource)
end