Skip to content

Commit a722778

Browse files
Merge pull request #464 from permaweb/impr/require-codec
impr: `require-codec` replaces `accept-codec` forces codec for encoding
2 parents e3f2424 + 98e566f commit a722778

File tree

3 files changed

+14
-22
lines changed

3 files changed

+14
-22
lines changed

src/dev_scheduler.erl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -502,8 +502,8 @@ post_location(Msg1, RawReq, RawOpts) ->
502502
Codec =
503503
hb_ao:get_first(
504504
[
505-
{Msg1, <<"accept-codec">>},
506-
{OnlyCommitted, <<"accept-codec">>}
505+
{Msg1, <<"require-codec">>},
506+
{OnlyCommitted, <<"require-codec">>}
507507
],
508508
<<"httpsig@1.0">>,
509509
Opts
@@ -1701,7 +1701,7 @@ register_location_on_boot_test() ->
17011701
<<"path">> => <<"location">>,
17021702
<<"method">> => <<"POST">>,
17031703
<<"target">> => <<"self">>,
1704-
<<"accept-codec">> => <<"ans104@1.0">>,
1704+
<<"require-codec">> => <<"ans104@1.0">>,
17051705
<<"url">> => <<"https://hyperbeam-test-ignore.com">>,
17061706
<<"hook">> => #{
17071707
<<"result">> => <<"ignore">>,
@@ -1874,7 +1874,7 @@ register_scheduler_test() ->
18741874
<<"url">> => <<"https://hyperbeam-test-ignore.com">>,
18751875
<<"method">> => <<"POST">>,
18761876
<<"nonce">> => 1,
1877-
<<"accept-codec">> => <<"ans104@1.0">>
1877+
<<"require-codec">> => <<"ans104@1.0">>
18781878
}, Wallet),
18791879
{ok, Res} = hb_http:post(Node, Msg1, #{}),
18801880
?assertMatch(#{ <<"url">> := Location } when is_binary(Location), Res).

src/hb_examples.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ relay_schedule_ans104_test() ->
228228
<<"path">> => <<"location">>,
229229
<<"method">> => <<"POST">>,
230230
<<"target">> => <<"self">>,
231-
<<"accept-codec">> => <<"ans104@1.0">>,
231+
<<"require-codec">> => <<"ans104@1.0">>,
232232
<<"hook">> => #{
233233
<<"result">> => <<"ignore">>,
234234
<<"commit-request">> => true

src/hb_http.erl

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,8 @@ encode_reply(Status, TABMReq, Message, Opts) ->
733733
%% AO device format (`device@1.0').
734734
accept_to_codec(OriginalReq, Opts) ->
735735
accept_to_codec(OriginalReq, undefined, Opts).
736+
accept_to_codec(#{ <<"require-codec">> := RequiredCodec }, _Reply, Opts) ->
737+
mime_to_codec(RequiredCodec, Opts);
736738
accept_to_codec(_OriginalReq, #{ <<"content-type">> := _ }, _Opts) ->
737739
<<"httpsig@1.0">>;
738740
accept_to_codec(OriginalReq, _, Opts) ->
@@ -743,21 +745,7 @@ accept_to_codec(OriginalReq, _, Opts) ->
743745
{accept, Accept}
744746
}
745747
),
746-
AcceptCodec =
747-
hb_maps:get(
748-
<<"accept-codec">>,
749-
OriginalReq,
750-
mime_to_codec(Accept, Opts),
751-
Opts
752-
),
753-
case AcceptCodec of
754-
not_specified ->
755-
% We hold off until confirming that the codec is not directly in the
756-
% message before calling `hb_opts:get/3', as it is comparatively
757-
% expensive.
758-
default_codec(Opts);
759-
_ -> AcceptCodec
760-
end.
748+
mime_to_codec(Accept, Opts).
761749

762750
%% @doc Find a codec name from a mime-type.
763751
mime_to_codec(<<"application/", Mime/binary>>, Opts) ->
@@ -779,7 +767,11 @@ mime_to_codec(<<"application/", Mime/binary>>, Opts) ->
779767
Default
780768
end;
781769
mime_to_codec(<<"device/", Name/binary>>, _Opts) -> Name;
782-
mime_to_codec(_, Opts) -> default_codec(Opts).
770+
mime_to_codec(Device, Opts) ->
771+
case binary:match(Device, <<"@">>) of
772+
nomatch -> default_codec(Opts);
773+
_ -> Device
774+
end.
783775

784776
%% @doc Return the default codec for the given options.
785777
default_codec(Opts) ->
@@ -1146,7 +1138,7 @@ ans104_wasm_test() ->
11461138
Msg =
11471139
hb_message:commit(
11481140
#{
1149-
<<"accept-codec">> => <<"ans104@1.0">>,
1141+
<<"require-codec">> => <<"ans104@1.0">>,
11501142
<<"codec-device">> => <<"ans104@1.0">>,
11511143
<<"device">> => <<"wasm-64@1.0">>,
11521144
<<"function">> => <<"fac">>,

0 commit comments

Comments
 (0)