Current section
Files
Jump to
Current section
Files
lib/impl/data.ex
defmodule Dealcloud.Impl.Data do
alias Dealcloud.Impl
@moduledoc false
def url(p = %{config: config}) do
%{p | url: "#{config.site}/#{config.data_url}"}
end
def get(paths, params, config, dataProcessor \\ &process_data/2) do
%Dealcloud.Impl{
requestType: :get,
params: params,
config: config,
url: ([config.site, config.data_url] ++ paths) |> Impl.url()
}
|> Impl.make_request(dataProcessor)
end
def post(paths, body, params, config, dataProcessor \\ &process_data/2) do
%Dealcloud.Impl{
requestType: :post,
params: params,
body: body,
config: config,
url: ([config.site, config.data_url] ++ paths) |> Impl.url()
}
|> Impl.make_request(dataProcessor)
end
def put(paths, body, params, config, dataProcessor \\ &process_data/2) do
%Dealcloud.Impl{
requestType: :put,
params: params,
body: body,
config: config,
url: ([config.site, config.data_url] ++ paths) |> Impl.url()
}
|> Impl.make_request(dataProcessor)
end
def patch(paths, body, params, config, dataProcessor \\ &process_data/2) do
%Dealcloud.Impl{
requestType: :patch,
params: params,
body: body,
config: config,
url: ([config.site, config.data_url] ++ paths) |> Impl.url()
}
|> Impl.make_request(dataProcessor)
end
def delete(paths, config, dataProcessor \\ &process_data/2) do
%Dealcloud.Impl{
requestType: :delete,
params: %{},
body: nil,
config: config,
url: ([config.site, config.data_url] ++ paths) |> Impl.url()
}
|> Impl.make_request(dataProcessor)
end
defp process_data(%{"rows" => rows}, p) when rows == [], do: p.data
defp process_data(%{"rows" => rows}, p = %{data: data, params: params}) do
%{p | params: %{params | skip: p.params.skip + params.limit}, data: data ++ rows}
|> Dealcloud.Impl.make_request(&process_data/2)
end
defp process_data(body, _p), do: body
end