Skip to content

Commit 3e83163

Browse files
authored
chore: remove txi scoping support for new endpoints (#968)
1 parent 8694384 commit 3e83163

File tree

3 files changed

+41
-19
lines changed

3 files changed

+41
-19
lines changed

lib/ae_mdw_web/controllers/activity_controller.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ defmodule AeMdwWeb.ActivityController do
77
alias AeMdwWeb.Util
88
alias Plug.Conn
99

10-
plug(PaginatedPlug)
10+
plug(PaginatedPlug, txi_scope?: false)
1111
action_fallback(FallbackController)
1212

1313
@spec account_activities(Conn.t(), map()) :: Conn.t()

lib/ae_mdw_web/plugs/paginated_plug.ex

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ defmodule AeMdwWeb.Plugs.PaginatedPlug do
66
alias Phoenix.Controller
77
alias Plug.Conn
88

9-
@type opts() :: [order_by: [atom()] | Plug.opts()]
9+
@typep opt() ::
10+
{:order_by, [atom()]}
11+
| {:txi_scope?, boolean()}
12+
@type opts() :: [opt()]
1013

1114
@scope_types %{
1215
"gen" => :gen,
@@ -26,7 +29,9 @@ defmodule AeMdwWeb.Plugs.PaginatedPlug do
2629

2730
@spec call(Conn.t(), opts()) :: Conn.t()
2831
def call(%Conn{params: params, query_params: query_params} = conn, opts) do
29-
with {:ok, direction, scope} <- extract_direction_and_scope(params),
32+
txi_scope? = Keyword.get(opts, :txi_scope?, true)
33+
34+
with {:ok, direction, scope} <- extract_direction_and_scope(params, txi_scope?),
3035
{:ok, limit} <- extract_limit(params),
3136
{:ok, is_reversed?} <- extract_is_reversed(params),
3237
{:ok, order_by} <- extract_order_by(params, opts),
@@ -53,20 +58,23 @@ defmodule AeMdwWeb.Plugs.PaginatedPlug do
5358

5459
def call(conn, _opts), do: conn
5560

56-
defp extract_direction_and_scope(%{"range_or_dir" => "forward"}),
61+
defp extract_direction_and_scope(%{"range_or_dir" => "forward"}, _txi_scope?),
5762
do: {:ok, :forward, @default_scope}
5863

59-
defp extract_direction_and_scope(%{"range_or_dir" => "backward"}),
64+
defp extract_direction_and_scope(%{"range_or_dir" => "backward"}, _txi_scope?),
6065
do: {:ok, :backward, @default_scope}
6166

62-
defp extract_direction_and_scope(%{"range_or_dir" => range} = params) do
67+
defp extract_direction_and_scope(%{"range_or_dir" => range} = params, txi_scope?) do
6368
params
6469
|> Map.delete("range_or_dir")
6570
|> Map.put("range", range)
66-
|> extract_direction_and_scope()
71+
|> extract_direction_and_scope(txi_scope?)
6772
end
6873

69-
defp extract_direction_and_scope(%{"scope_type" => scope_type, "range" => range} = params)
74+
defp extract_direction_and_scope(
75+
%{"scope_type" => scope_type, "range" => range} = params,
76+
true = _txi_scope?
77+
)
7078
when scope_type in @scope_types_keys do
7179
scope_type = Map.fetch!(@scope_types, scope_type)
7280

@@ -89,35 +97,38 @@ defmodule AeMdwWeb.Plugs.PaginatedPlug do
8997
end
9098
end
9199

92-
defp extract_direction_and_scope(%{"scope_type" => scope_type}),
100+
defp extract_direction_and_scope(%{"scope_type" => "gen"} = params, false = _txi_scope?),
101+
do: extract_direction_and_scope(params, true)
102+
103+
defp extract_direction_and_scope(%{"scope_type" => scope_type}, _txi_scope?),
93104
do: {:error, "invalid scope: #{scope_type}"}
94105

95-
defp extract_direction_and_scope(%{"range" => _range} = params),
96-
do: extract_direction_and_scope(Map.put(params, "scope_type", "gen"))
106+
defp extract_direction_and_scope(%{"range" => _range} = params, txi_scope?),
107+
do: extract_direction_and_scope(Map.put(params, "scope_type", "gen"), txi_scope?)
97108

98-
defp extract_direction_and_scope(%{"scope" => scope} = params) do
109+
defp extract_direction_and_scope(%{"scope" => scope} = params, txi_scope?) do
99110
case String.split(scope, ":") do
100111
[scope_type, range] ->
101112
params
102113
|> Map.delete("scope")
103114
|> Map.merge(%{"scope_type" => scope_type, "range" => range})
104-
|> extract_direction_and_scope()
115+
|> extract_direction_and_scope(txi_scope?)
105116

106117
_invalid_scope ->
107118
{:error, "invalid scope: #{scope}"}
108119
end
109120
end
110121

111-
defp extract_direction_and_scope(%{"direction" => "forward"}),
122+
defp extract_direction_and_scope(%{"direction" => "forward"}, _txi_scope?),
112123
do: {:ok, :forward, @default_scope}
113124

114-
defp extract_direction_and_scope(%{"direction" => "backward"}),
125+
defp extract_direction_and_scope(%{"direction" => "backward"}, _txi_scope?),
115126
do: {:ok, :backward, @default_scope}
116127

117-
defp extract_direction_and_scope(%{"direction" => direction}),
128+
defp extract_direction_and_scope(%{"direction" => direction}, _txi_scope?),
118129
do: {:error, "invalid direction: #{direction}"}
119130

120-
defp extract_direction_and_scope(_params), do: {:ok, :backward, @default_scope}
131+
defp extract_direction_and_scope(_params, _txi_scope?), do: {:ok, :backward, @default_scope}
121132

122133
defp extract_range(range) when is_binary(range) do
123134
case String.split(range, "-") do

test/ae_mdw_web/controllers/activities_controller_test.exs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,7 @@ defmodule AeMdwWeb.ActivitiesControllerTest do
668668
refute is_nil(prev_url)
669669
end
670670

671-
test "when the account is invalid", %{conn: conn} do
671+
test "when the account is invalid, it returns an error", %{conn: conn} do
672672
invalid_account = "ak_foo"
673673
error_msg = "invalid id: #{invalid_account}"
674674

@@ -678,7 +678,7 @@ defmodule AeMdwWeb.ActivitiesControllerTest do
678678
|> json_response(400)
679679
end
680680

681-
test "when cursor is invalid", %{conn: conn} do
681+
test "when cursor is invalid, it returns an error", %{conn: conn} do
682682
account_pk = TS.address(0)
683683
account = Enc.encode(:account_pubkey, account_pk)
684684
invalid_cursor = "1290318-aa-bb"
@@ -689,6 +689,17 @@ defmodule AeMdwWeb.ActivitiesControllerTest do
689689
|> get("/v2/accounts/#{account}/activities", cursor: invalid_cursor)
690690
|> json_response(400)
691691
end
692+
693+
test "when scoping by txi, it returns an error", %{conn: conn} do
694+
account_pk = TS.address(0)
695+
account = Enc.encode(:account_pubkey, account_pk)
696+
error_msg = "invalid scope: txi"
697+
698+
assert %{"error" => ^error_msg} =
699+
conn
700+
|> get("/v2/accounts/#{account}/activities", scope: "txi:1-2")
701+
|> json_response(400)
702+
end
692703
end
693704

694705
defp empty_store, do: NullStore.new() |> MemStore.new()

0 commit comments

Comments
 (0)