Skip to content

Commit 9c0bb1c

Browse files
committed
Add repository check for direct hexdocs:search messages
1 parent d9de155 commit 9c0bb1c

File tree

2 files changed

+37
-14
lines changed

2 files changed

+37
-14
lines changed

lib/hexdocs/queue.ex

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ defmodule Hexdocs.Queue do
111111
process_upload(key, repository, package, version, body, start)
112112

113113
:search ->
114-
process_search(key, package, version, body, start)
114+
process_search(key, repository, package, version, body, start)
115115
end
116116

117117
:error ->
@@ -166,21 +166,25 @@ defmodule Hexdocs.Queue do
166166
end
167167
end
168168

169-
defp process_search(key, package, version, body, start) do
170-
version =
171-
case Version.parse(version) do
172-
{:ok, version} -> version
173-
:error when package in @special_package_names -> version
174-
end
169+
defp process_search(key, repository, package, version, body, start) do
170+
if repository != "hexpm" do
171+
Logger.warning("SKIPPING SEARCH INDEX #{key} (repository is not hexpm)")
172+
else
173+
version =
174+
case Version.parse(version) do
175+
{:ok, version} -> version
176+
:error when package in @special_package_names -> version
177+
end
175178

176-
case Hexdocs.Tar.unpack(body, package: package, version: version) do
177-
{:ok, files} ->
178-
update_search_index(key, package, version, files)
179-
elapsed = System.os_time(:millisecond) - start
180-
Logger.info("FINISHED INDEXING DOCS #{key} #{elapsed}ms")
179+
case Hexdocs.Tar.unpack(body, package: package, version: version) do
180+
{:ok, files} ->
181+
update_search_index(key, package, version, files)
182+
elapsed = System.os_time(:millisecond) - start
183+
Logger.info("FINISHED INDEXING DOCS #{key} #{elapsed}ms")
181184

182-
{:error, reason} ->
183-
Logger.error("Failed unpack #{package} #{version}: #{reason}")
185+
{:error, reason} ->
186+
Logger.error("Failed unpack #{package} #{version}: #{reason}")
187+
end
184188
end
185189
end
186190

test/hexdocs/queue_test.exs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,25 @@ defmodule Hexdocs.QueueTest do
417417
ref = Broadway.test_message(Hexdocs.Queue, search_message("invalid/key/#{test}"))
418418
assert_receive {:ack, ^ref, [_], []}
419419
end
420+
421+
@tag :capture_log
422+
test "does not index private packages", %{test: test} do
423+
key = "repos/private_org/docs/#{test}-1.0.0.tar.gz"
424+
425+
tar =
426+
Hexdocs.Tar.create([
427+
{"index.html", "contents"},
428+
{"dist/search_data-ABC123.js",
429+
"""
430+
searchData={"items":[{"type":"module","title":"Example","doc":"example text","ref":"Example.html"}]}
431+
"""}
432+
])
433+
434+
Store.put!(:repo_bucket, key, tar)
435+
436+
ref = Broadway.test_message(Hexdocs.Queue, search_message(key))
437+
assert_receive {:ack, ^ref, [_], []}
438+
end
420439
end
421440

422441
describe "delete object" do

0 commit comments

Comments
 (0)