2024-07-01 14:48:52 +00:00
|
|
|
require "kemal"
|
2024-07-02 22:03:29 +00:00
|
|
|
require "../secrets.cr"
|
2024-07-01 14:48:52 +00:00
|
|
|
|
|
|
|
module Secrets
|
2024-07-02 22:03:29 +00:00
|
|
|
extend self
|
2024-07-01 14:48:52 +00:00
|
|
|
# TODO: sanitize all inputs
|
|
|
|
|
|
|
|
# Gets a secret in form {"name": "funko_name-secret_name", "value": "secret_value"}
|
|
|
|
post "/secrets/" do |env|
|
|
|
|
name = env.params.json["name"].as(String)
|
|
|
|
value = env.params.json["value"].as(String)
|
|
|
|
SECRETS[name] = value
|
|
|
|
Secrets.update_secrets
|
|
|
|
halt env, status_code: 201, response: "Created"
|
|
|
|
end
|
|
|
|
|
2024-07-02 18:32:31 +00:00
|
|
|
get "/secrets/" do |env|
|
|
|
|
halt env, status_code: 200, response: SECRETS.keys.to_json
|
|
|
|
end
|
|
|
|
|
2024-07-01 14:48:52 +00:00
|
|
|
# Deletes a secret from the disk and memory
|
|
|
|
delete "/secrets/:name/" do |env|
|
|
|
|
name = env.params.url["name"]
|
|
|
|
SECRETS.delete(name)
|
|
|
|
update_secrets
|
|
|
|
halt env, status_code: 204, response: "Deleted"
|
|
|
|
end
|
|
|
|
end
|
2024-07-02 18:32:31 +00:00
|
|
|
|
2024-07-02 18:32:57 +00:00
|
|
|
Secrets.load_secrets
|