40 lines
820 B
Elixir
40 lines
820 B
Elixir
defmodule IRemoteStorage do
|
|
use Tesla
|
|
|
|
plug(SteamAPI, "ISteamRemoteStorage")
|
|
plug(Tesla.Middleware.FormUrlencoded)
|
|
|
|
def _helper(c, i) do
|
|
num = Enum.count(i)
|
|
|
|
m =
|
|
i
|
|
|> Enum.with_index()
|
|
|> Enum.map(fn {x, y} ->
|
|
%{"publishedfileids[#{y}]" => x}
|
|
end)
|
|
|> Enum.reduce(fn x, xs ->
|
|
Map.merge(x, xs)
|
|
end)
|
|
|
|
Map.merge(%{"#{c}count" => num}, m)
|
|
end
|
|
|
|
def collection(collections) do
|
|
vars = _helper("collection", collections)
|
|
|
|
if {:ok, response} = post("GetCollectionDetails/v1", vars) do
|
|
Jason.decode(response.body, %{keys: :atoms})
|
|
end
|
|
end
|
|
|
|
def item(items) do
|
|
vars = _helper("item", items)
|
|
|
|
if {:ok, response} = post("GetPublishedFileDetails/v1", vars) do
|
|
Jason.decode(response.body, %{keys: :atoms})
|
|
end
|
|
end
|
|
|
|
end
|