Class: Etna::Clients::LocalMagmaClient

Inherits:
Object
  • Object
show all
Defined in:
lib/etna/clients/magma/client.rb

Overview

May only be used from within magma app.

Instance Method Summary collapse

Instance Method Details

#fake_request(request) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/etna/clients/magma/client.rb', line 20

def fake_request(request)
  Rack::Request.new({
    'rack.request.params' => request.as_json,
    'etna.logger' => self.logger,
    'etna.user' => user,
    'etna.request_id' => 'local',
  })
end

#loggerObject



10
11
12
# File 'lib/etna/clients/magma/client.rb', line 10

def logger
  ::Magma.instance.logger
end

#parse_json_response(response) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/etna/clients/magma/client.rb', line 29

def parse_json_response(response)
  status, headers, body = response
  body = body.join('')
  if status < 200 || status >= 300
    raise Etna::Error.new(body, status)
  end

  JSON.parse(body)
end

#retrieve(retrieval_request = RetrievalRequest.new) ⇒ Object



39
40
41
42
# File 'lib/etna/clients/magma/client.rb', line 39

def retrieve(retrieval_request = RetrievalRequest.new)
  controller = ::RetrieveController.new(fake_request(retrieval_request), nil)
  Magma::RetrievalResponse.new(parse_json_response(controller.action))
end

#update_model(update_model_request = UpdateModelRequest.new) ⇒ Object



44
45
46
47
# File 'lib/etna/clients/magma/client.rb', line 44

def update_model(update_model_request = UpdateModelRequest.new)
  controller = ::UpdateModelController.new(fake_request(update_model_request), nil)
  Magma::UpdateModelResponse.new(parse_json_response(controller.action))
end

#userObject



14
15
16
17
18
# File 'lib/etna/clients/magma/client.rb', line 14

def user
  permissions = Etna::Permissions.new([])
  permissions.add_permission(Etna::Permission.new('A', 'administration'))
  @user ||= Etna::User.new({name: 'Admin', email: '[email protected]', perm: permissions.to_string})
end