Skip to content

Commit 6025f02

Browse files
committed
Save whole env passed to a stream in recorded asciicast file
1 parent dabdcec commit 6025f02

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

lib/asciinema/streaming/stream_server.ex

+9-9
Original file line numberDiff line numberDiff line change
@@ -347,11 +347,7 @@ defmodule Asciinema.Streaming.StreamServer do
347347
file = File.open!(path, [:write, :utf8])
348348
state = %{state | path: path, file: file}
349349
timestamp = Timex.to_unix(Timex.now())
350-
351-
env =
352-
%{"TERM" => query["term"], "SHELL" => query["shell"]}
353-
|> Enum.filter(fn {_k, v} -> v != nil and v != "" end)
354-
|> Enum.into(%{})
350+
env = drop_empty(query["env"] || %{})
355351

356352
write_asciicast_v2_header(file, cols, rows, timestamp, env, theme)
357353

@@ -364,16 +360,14 @@ defmodule Asciinema.Streaming.StreamServer do
364360

365361
defp write_asciicast_v2_header(file, cols, rows, timestamp, env, theme) do
366362
header =
367-
%{
363+
drop_empty(%{
368364
version: 2,
369365
width: cols,
370366
height: rows,
371367
timestamp: timestamp,
372368
env: env,
373369
theme: asciicast_theme(theme)
374-
}
375-
|> Enum.filter(fn {_k, v} -> v != nil and v != %{} end)
376-
|> Enum.into(%{})
370+
})
377371

378372
:ok = IO.write(file, Jason.encode!(header) <> "\n")
379373
end
@@ -387,6 +381,12 @@ defmodule Asciinema.Streaming.StreamServer do
387381
:ok = IO.write(file, event <> "\n")
388382
end
389383

384+
defp drop_empty(map) when is_map(map) do
385+
map
386+
|> Enum.filter(fn {_k, v} -> v != nil and v != "" and v != %{} end)
387+
|> Enum.into(%{})
388+
end
389+
390390
defp in_sync?(state, last_event_id),
391391
do: last_event_id != 0 and last_event_id == state.last_event_id
392392

lib/asciinema_web/stream_producer_socket.ex

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ defmodule AsciinemaWeb.StreamProducerSocket do
1717
params = %{
1818
token: req.bindings[:producer_token],
1919
user_agent: req.headers["user-agent"],
20-
query: URI.decode_query(req.qs),
20+
query: Plug.Conn.Query.decode(req.qs),
2121
parser: nil
2222
}
2323

@@ -42,6 +42,7 @@ defmodule AsciinemaWeb.StreamProducerSocket do
4242
@impl true
4343
def websocket_init(params) do
4444
%{token: token, parser: parser, user_agent: user_agent, query: query} = params
45+
Logger.debug("producer: query: #{inspect(query)}")
4546

4647
case Streaming.find_stream_by_producer_token(token) do
4748
nil ->

0 commit comments

Comments
 (0)