fed-sx-m1: Step 8c-proj — GET /projections + /projections/{name} routes + 11 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 33s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 33s
This commit is contained in:
@@ -3,7 +3,9 @@
|
||||
welcome_body/0, capabilities_body/0,
|
||||
capabilities_path/0,
|
||||
match_prefix/2, actors_prefix/0, actor_doc_response/1,
|
||||
artifacts_prefix/0, artifact_response/1]).
|
||||
artifacts_prefix/0, artifact_response/1,
|
||||
projections_list_path/0, projections_prefix/0,
|
||||
projections_list_response/0, projection_response/1]).
|
||||
|
||||
%% HTTP request router per design §16.1.
|
||||
%%
|
||||
@@ -36,7 +38,11 @@ dispatch(<<71, 69, 84>>,
|
||||
<<47,46,119,101,108,108,45,107,110,111,119,110,
|
||||
47,115,120,45,99,97,112,97,98,105,108,105,116,105,101,115>>) ->
|
||||
ok_response(capabilities_body());
|
||||
%% GET /actors/{id} or /artifacts/{cid}
|
||||
%% GET /projections — list stub. Comes before the /projections/{name}
|
||||
%% prefix clause because the bare path has no trailing slash.
|
||||
dispatch(<<71, 69, 84>>, <<47,112,114,111,106,101,99,116,105,111,110,115>>) ->
|
||||
projections_list_response();
|
||||
%% GET /actors/{id} or /artifacts/{cid} or /projections/{name}
|
||||
dispatch(<<71, 69, 84>>, Path) ->
|
||||
case match_prefix(actors_prefix(), Path) of
|
||||
{ok, Id} when byte_size(Id) > 0 ->
|
||||
@@ -46,7 +52,12 @@ dispatch(<<71, 69, 84>>, Path) ->
|
||||
{ok, Cid} when byte_size(Cid) > 0 ->
|
||||
artifact_response(Cid);
|
||||
_ ->
|
||||
not_found_response()
|
||||
case match_prefix(projections_prefix(), Path) of
|
||||
{ok, Name} when byte_size(Name) > 0 ->
|
||||
projection_response(Name);
|
||||
_ ->
|
||||
not_found_response()
|
||||
end
|
||||
end
|
||||
end;
|
||||
dispatch(_, _) ->
|
||||
@@ -128,3 +139,25 @@ artifact_response(Cid) ->
|
||||
Pre = <<97,114,116,105,102,97,99,116,58,32>>,
|
||||
Body = <<Pre/binary, Cid/binary, 10>>,
|
||||
ok_response(Body).
|
||||
|
||||
%% "/projections" — 12 bytes (no trailing slash; the list endpoint)
|
||||
projections_list_path() ->
|
||||
<<47,112,114,111,106,101,99,116,105,111,110,115>>.
|
||||
|
||||
%% "/projections/" — 13 bytes (the per-projection prefix)
|
||||
projections_prefix() ->
|
||||
<<47,112,114,111,106,101,99,116,105,111,110,115,47>>.
|
||||
|
||||
%% Stub list response — real implementation queries the registry
|
||||
%% for active projections and serialises the name+CID list.
|
||||
projections_list_response() ->
|
||||
%% "projections: (empty)\n" — hand-spelled
|
||||
Body = <<112,114,111,106,101,99,116,105,111,110,115,58,32,
|
||||
40,101,109,112,116,121,41,10>>,
|
||||
ok_response(Body).
|
||||
|
||||
projection_response(Name) ->
|
||||
%% "projection: " — 12 bytes
|
||||
Pre = <<112,114,111,106,101,99,116,105,111,110,58,32>>,
|
||||
Body = <<Pre/binary, Name/binary, 10>>,
|
||||
ok_response(Body).
|
||||
|
||||
Reference in New Issue
Block a user