Packages

ClamAV client implementation in pure Gleam

Current section

Files

Jump to
clamav_client src common@internal.erl
Raw

src/common@internal.erl

-module(common@internal).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([execute_command/3]).
-file("/home/runner/work/gleam-clamav/gleam-clamav/src/common/internal.gleam", 8).
-spec execute_command(
client_options:clam_av_client_options(),
binary(),
fun((mug:socket()) -> {ok, GOE} | {error, mug:error()})
) -> {ok, GOE} | {error, mug:error()}.
execute_command(Options, Command, Callback) ->
(erlang:element(4, erlang:element(6, Options)))(
<<"Executing command "/utf8, Command/binary>>
),
common@tcp:connect(
Options,
fun(Socket) ->
Command_bytes = begin
_pipe = (<<"z"/utf8, Command/binary>>),
_pipe@1 = gleam_stdlib:identity(_pipe),
gleam@bit_array:append(_pipe@1, <<0:8/little>>)
end,
common@tcp:send_bytes(
Socket,
Command_bytes,
Options,
fun() ->
(erlang:element(4, erlang:element(6, Options)))(
<<"Command accepted"/utf8>>
),
Callback(Socket)
end
)
end
).