39 lines
785 B
Elixir
39 lines
785 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)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def item(items) do
|
||
|
vars = _helper("item", items)
|
||
|
|
||
|
if {:ok, response} = post("GetPublishedFileDetails/v1", vars) do
|
||
|
Jason.decode(response.body)
|
||
|
end
|
||
|
end
|
||
|
end
|