2021-10-21 17:07:43 -06:00
|
|
|
defmodule Instance do
|
|
|
|
defstruct [
|
|
|
|
instance_type: nil,
|
2021-10-21 21:15:58 -06:00
|
|
|
instance_test: nil,
|
2021-10-21 17:07:43 -06:00
|
|
|
instance_list: []
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
defmodule Instances do
|
2021-10-21 21:15:58 -06:00
|
|
|
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
|
|
|
|
|
2021-10-21 17:07:43 -06:00
|
|
|
def update(filename) do
|
|
|
|
{:ok, file} = File.read(filename)
|
|
|
|
{:ok, json} = Poison.decode(file, as: [%Instance{}])
|
2021-10-21 21:15:58 -06:00
|
|
|
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)
|
2021-10-21 17:07:43 -06:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
Instances.update("instances.json")
|