fix nested function depth in parse_tunneled_header
This commit is contained in:
parent
839d26a976
commit
cb1838d4a9
1 changed files with 26 additions and 23 deletions
|
|
@ -1146,35 +1146,38 @@ defmodule Parser do
|
||||||
defp parse_tunneled_header(header) do
|
defp parse_tunneled_header(header) do
|
||||||
case String.split(header, ">", parts: 2) do
|
case String.split(header, ">", parts: 2) do
|
||||||
[sender, path] ->
|
[sender, path] ->
|
||||||
case parse_callsign(sender) do
|
parse_sender_and_path(sender, path)
|
||||||
{:ok, callsign_parts} ->
|
|
||||||
base_callsign = List.first(callsign_parts)
|
|
||||||
ssid = extract_ssid(List.last(callsign_parts))
|
|
||||||
|
|
||||||
case split_path_for_tunnel(path) do
|
|
||||||
{:ok, [destination, digi_path]} ->
|
|
||||||
{:ok,
|
|
||||||
%{
|
|
||||||
sender: sender,
|
|
||||||
base_callsign: base_callsign,
|
|
||||||
ssid: ssid,
|
|
||||||
destination: destination,
|
|
||||||
digi_path: digi_path
|
|
||||||
}}
|
|
||||||
|
|
||||||
{:error, reason} ->
|
|
||||||
{:error, "Invalid path: #{reason}"}
|
|
||||||
end
|
|
||||||
|
|
||||||
{:error, reason} ->
|
|
||||||
{:error, "Invalid callsign: #{reason}"}
|
|
||||||
end
|
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
{:error, "Invalid header format"}
|
{:error, "Invalid header format"}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp parse_sender_and_path(sender, path) do
|
||||||
|
case parse_callsign(sender) do
|
||||||
|
{:ok, callsign_parts} ->
|
||||||
|
base_callsign = List.first(callsign_parts)
|
||||||
|
ssid = extract_ssid(List.last(callsign_parts))
|
||||||
|
|
||||||
|
case split_path_for_tunnel(path) do
|
||||||
|
{:ok, [destination, digi_path]} ->
|
||||||
|
{:ok,
|
||||||
|
%{
|
||||||
|
sender: sender,
|
||||||
|
base_callsign: base_callsign,
|
||||||
|
ssid: ssid,
|
||||||
|
destination: destination,
|
||||||
|
digi_path: digi_path
|
||||||
|
}}
|
||||||
|
|
||||||
|
{:error, reason} ->
|
||||||
|
{:error, "Invalid path: #{reason}"}
|
||||||
|
end
|
||||||
|
|
||||||
|
{:error, reason} ->
|
||||||
|
{:error, "Invalid callsign: #{reason}"}
|
||||||
|
end
|
||||||
|
|
||||||
defp extract_ssid(nil), do: nil
|
defp extract_ssid(nil), do: nil
|
||||||
|
|
||||||
defp extract_ssid(s) when is_binary(s), do: s
|
defp extract_ssid(s) when is_binary(s), do: s
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue