Packages
step_flow
1.7.2-rc4
1.9.0-rc2
1.9.0-rc1
1.9.0-rc0
1.8.2
1.8.1
1.8.1-rc8
1.8.1-rc7
1.8.1-rc6
1.8.1-rc5
1.8.1-rc4
1.8.1-rc3
1.8.1-rc2
1.8.1-rc1
1.8.1-rc0
1.8.0
1.8.0-rc3
1.8.0-rc2
1.8.0-rc1
1.8.0-rc0
1.7.3
1.7.3-rc4
1.7.3-rc3
1.7.3-rc2
1.7.3-rc1
1.7.3-rc0
1.7.2
1.7.2-rc4
1.7.2-rc3
1.7.2-rc2
1.7.2-rc1
1.7.2-rc0
1.7.1
1.7.0
1.7.0-rc1
1.7.0-rc0
1.6.1
1.6.1-rc1
1.6.1-rc0
1.6.0
1.6.0-rc9
1.6.0-rc8
1.6.0-rc7
1.6.0-rc6
1.6.0-rc5
1.6.0-rc4
1.6.0-rc3
1.6.0-rc20
1.6.0-rc2
1.6.0-rc19
1.6.0-rc18
1.6.0-rc17
1.6.0-rc16
1.6.0-rc15
1.6.0-rc14
1.6.0-rc13
1.6.0-rc12
1.6.0-rc11
1.6.0-rc10
1.6.0-rc1
1.5.0
1.5.0-rc1
1.4.2-rc2
1.4.2-rc1
1.4.1
1.4.1-rc1
1.4.0
1.4.0-rc4
1.4.0-rc3
1.4.0-rc2
1.4.0-rc1
1.3.1
1.3.0
1.3.0-rc
1.2.0
1.1.0
1.0.0
1.0.0-rc9
1.0.0-rc8
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc1
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.4
0.0.3
0.0.2
0.0.1
Step flow manager for Elixir applications
Current section
Files
Jump to
Current section
Files
lib/step_flow/web_controllers/workers.ex
defmodule StepFlow.WebController.Workers do
use StepFlow, :controller
use OpenApiSpex.ControllerSpecs
require Logger
alias StepFlow.Amqp.CommonEmitter
alias StepFlow.WebController.OpenApiSchemas
alias StepFlow.Workers.WorkerStatuses
@moduledoc false
tags ["Workers"]
security [%{"authorization" => %OpenApiSpex.SecurityScheme{type: "http", scheme: "bearer"}}]
action_fallback(StepFlow.WebController.Fallback)
operation :index,
summary: "List Workers",
description: "List Workers",
type: :object,
responses: [
ok: {"Workers", "application/json", OpenApiSchemas.Workers.Workers},
forbidden: "Forbidden"
]
def index(conn, params) do
Logger.debug("[#{__MODULE__}] List worker statuses request: #{inspect(params)}")
worker_statuses = WorkerStatuses.list_worker_statuses(params)
conn
|> put_view(StepFlow.WorkerStatusView)
|> render("index.json", worker_statuses)
end
operation :show,
summary: "Show worker",
description: "Show worker by instance id",
type: :object,
parameters: [
id: [
in: :path,
description: "Worker instance ID",
type: :string,
example: "abdcdefgh1234"
]
],
responses: [
ok: {"Worker", "application/json", OpenApiSchemas.Workers.Worker},
forbidden: "Forbidden",
not_found: "Not Found"
]
def show(conn, %{"id" => instance_id}) do
Logger.debug("[#{__MODULE__}] Show worker status request: #{inspect(instance_id)}")
case WorkerStatuses.get_worker_status(instance_id) do
nil ->
conn
|> send_resp(404, "No such a worker could be found. ")
worker_status ->
conn
|> put_view(StepFlow.WorkerStatusView)
|> render("worker_status.json", %{worker_status: worker_status})
end
end
operation :update,
summary: "Update worker",
description: "Update worker",
type: :object,
parameters: [
id: [
in: :path,
description: "Worker instance id",
type: :string,
example: "abdcdefgh1234"
]
],
request_body: {"Parameters", "application/json", OpenApiSchemas.Parameters.Parameters},
responses: [
ok: {"Worker", "application/json", OpenApiSchemas.Workers.Worker},
forbidden: "Forbidden",
not_found: "Not Found"
]
def update(conn, params) do
Logger.debug("[#{__MODULE__}] Put order message request: #{inspect(params)}")
instance_id = Map.get(params, "id")
case WorkerStatuses.get_worker_status(instance_id) do
nil ->
conn
|> send_resp(404, "No such worker could be found. ")
_worker_status ->
order_message =
Map.delete(params, "id")
|> Jason.encode!()
Logger.info(
"[#{__MODULE__}] Send order to worker #{inspect(instance_id)}: #{inspect(order_message)}"
)
CommonEmitter.publish(
"",
order_message,
[headers: [instance_id: instance_id]],
"direct_messaging"
)
conn
|> send_resp(204, "")
end
end
end