farside/update.exs
Ben Busby b0953f0777
Validate status code for all service instances
Updated to filter out all instances that either time out (I believe
default timeout for HTTPoison is 5s) or return a non-200 status code.
2021-10-21 21:15:58 -06:00

34 lines
753 B
Elixir

defmodule Instance do
defstruct [
instance_type: nil,
instance_test: nil,
instance_list: []
]
end
defmodule Instances do
def request(url) do
case HTTPoison.get(url) do
{:ok, %HTTPoison.Response{status_code: 200}} ->
# TODO: Add validation of results, not just status code
:good
_ ->
:bad
end
end
def update(filename) do
{:ok, file} = File.read(filename)
{:ok, json} = Poison.decode(file, as: [%Instance{}])
for service <- json do
result = Enum.filter(service.instance_list, fn(url) ->
request(url <> service.instance_test) == :good
end)
# TODO: Output result to redis
IO.inspect(result)
end
end
end
Instances.update("instances.json")