Packages
exosql
0.2.75
0.2.88
0.2.87
0.2.86
0.2.85
0.2.84
0.2.83
0.2.82
0.2.81
0.2.80
0.2.79
0.2.78
0.2.77
0.2.76
0.2.75
0.2.74
0.2.73
0.2.72
0.2.71
0.2.70
0.2.69
0.2.68
0.2.67
0.2.65
0.2.64
0.2.63
0.2.62
0.2.60
0.2.59
0.2.58
0.2.57
0.2.56
0.2.55
0.2.54
0.2.53
0.2.51
0.2.50
0.2.49
0.2.48
0.2.47
0.2.46
0.2.45
0.2.44
0.2.43
0.2.42
0.2.41
0.2.40
0.2.39
0.2.38
0.2.37
0.2.36
0.2.35
0.2.33
0.2.32
0.2.31
0.2.30
0.2.29
0.2.28
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
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.1
0.1.0
Universal SQL engine for Elixir. This library implements the SQL logic to perform queries on user provided databases using a simple interface based on Foreign Data Wrappers from PostgreSQL.
Current section
Files
Jump to
Current section
Files
lib/extractors/http.ex
require Logger
defmodule ExoSQL.HTTP do
@moduledoc """
Example Extractor that performs HTTP requests
This is a virtual extractor that requires an `url` to operate with.
"""
def schema(_db) do
{:ok, ["request"]}
end
def schema(_db, "request"), do: {:ok, %{columns: ["url", "status_code", "body"]}}
def execute(_db, "request", quals, _columns) do
# Logger.debug("Get request #{inspect quals} #{inspect columns}")
urls =
Enum.find_value(quals, [], fn
{"url", "IN", urls} -> urls
_other -> false
end)
rows =
Enum.map(urls, fn url ->
res = HTTPoison.get(url)
case res do
{:ok, res} ->
[url, res.status_code, res.body]
{:error, error} ->
[url, 0, IO.inspect(error.reason)]
end
end)
{:ok,
%{
columns: ["url", "status_code", "body"],
rows: rows
}}
end
end