enforce constraints on the settings, store settings in the image
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
defmodule LabelmakerWeb.Constants do
|
defmodule LabelmakerWeb.Constants do
|
||||||
@defaults %{
|
@defaults %{
|
||||||
"label" => "Labelmaker",
|
"label" => "64 character maximum",
|
||||||
"font" => "Helvetica",
|
"font" => "Helvetica",
|
||||||
"color" => "black",
|
"color" => "black",
|
||||||
"size" => "24"
|
"size" => "24"
|
||||||
@@ -22,16 +22,19 @@ defmodule LabelmakerWeb.Constants do
|
|||||||
|> Enum.reject(&String.starts_with?(&1, " Font: ."))
|
|> Enum.reject(&String.starts_with?(&1, " Font: ."))
|
||||||
|> Enum.map(&String.trim_leading(&1, " Font: "))
|
|> Enum.map(&String.trim_leading(&1, " Font: "))
|
||||||
|
|
||||||
|
@max_label_length 64
|
||||||
|
|
||||||
@sizes 8..72
|
@sizes 8..72
|
||||||
|> Enum.to_list()
|
|> Enum.to_list()
|
||||||
|> Enum.take_every(4)
|
|> Enum.take_every(4)
|
||||||
|> Enum.map(&Integer.to_string/1)
|
|> Enum.map(&Integer.to_string/1)
|
||||||
|
|
||||||
def defaults, do: @defaults
|
|
||||||
def permitted_keys, do: @permitted_keys
|
|
||||||
def colors, do: @colors
|
def colors, do: @colors
|
||||||
def color_count, do: @colors |> length()
|
def color_count, do: @colors |> length()
|
||||||
|
def defaults, do: @defaults
|
||||||
def fonts, do: @fonts
|
def fonts, do: @fonts
|
||||||
def font_count, do: @fonts |> length()
|
def font_count, do: @fonts |> length()
|
||||||
|
def max_label_length, do: @max_label_length
|
||||||
|
def permitted_keys, do: @permitted_keys
|
||||||
def sizes, do: @sizes
|
def sizes, do: @sizes
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,10 +6,23 @@ defmodule LabelmakerWeb.LabelController do
|
|||||||
File.mkdir_p!(@label_dir)
|
File.mkdir_p!(@label_dir)
|
||||||
|
|
||||||
def show(conn, params) do
|
def show(conn, params) do
|
||||||
|
params =
|
||||||
|
params
|
||||||
|
|> Map.take(Constants.permitted_keys())
|
||||||
|
|> Enum.filter(fn {k, v} ->
|
||||||
|
case k do
|
||||||
|
"color" -> v in Constants.colors()
|
||||||
|
"font" -> v in Constants.fonts()
|
||||||
|
"label" -> String.length(v) <= Constants.max_label_length()
|
||||||
|
"size" -> v in Constants.sizes()
|
||||||
|
_ -> true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|> Map.new()
|
||||||
|
|
||||||
options =
|
options =
|
||||||
Constants.defaults()
|
Constants.defaults()
|
||||||
|> Map.merge(params)
|
|> Map.merge(params)
|
||||||
|> Map.take(Constants.permitted_keys())
|
|
||||||
|
|
||||||
filename =
|
filename =
|
||||||
options
|
options
|
||||||
@@ -40,6 +53,9 @@ defmodule LabelmakerWeb.LabelController do
|
|||||||
"-font",
|
"-font",
|
||||||
options["font"],
|
options["font"],
|
||||||
"label:#{options["label"]}",
|
"label:#{options["label"]}",
|
||||||
|
"-set",
|
||||||
|
"comment",
|
||||||
|
inspect(options),
|
||||||
filepath
|
filepath
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user