Module: Legion::API::Routes::Fleet

Defined in:
lib/legion/api/fleet.rb

Defined Under Namespace

Modules: FleetHelpers

Class Method Summary collapse

Class Method Details

.registered(app) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/legion/api/fleet.rb', line 7

def self.registered(app)
  app.helpers FleetHelpers

  app.get '/api/fleet/status' do
    json_response(fleet_status)
  end

  app.get '/api/fleet/pending' do
    items = fleet_pending_approvals
    json_response(items)
  end

  app.post '/api/fleet/approve' do
    body = parse_request_body
    id = body[:id]
    halt 400, json_error('missing_id', 'id is required', status_code: 400) unless id

    result = fleet_approve(id.to_i)
    if result[:success]
      json_response(result)
    else
      json_error('approve_failed', result[:error].to_s, status_code: 422)
    end
  end

  app.get '/api/fleet/sources' do
    sources = Legion::Settings.dig(:fleet, :sources) || []
    json_response({ sources: sources })
  end

  app.post '/api/fleet/sources' do
    body = parse_request_body
    source = body[:source]
    halt 400, json_error('missing_source', 'source is required', status_code: 400) unless source

    result = fleet_add_source(body)
    if result[:success]
      json_response(result, status_code: 201)
    else
      json_error('add_source_failed', result[:error].to_s, status_code: 422)
    end
  end
end