• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

camatcode / basenji / f99a53d32dd7a2c0ab9fe7d09a5367c1fce48a87

16 Jul 2025 11:59PM UTC coverage: 58.437%. First build
f99a53d32dd7a2c0ab9fe7d09a5367c1fce48a87

Pull #49

github

camatcode
fix: EPIPE error on github envs
Pull Request #49: perf: performance improvements

27 of 57 new or added lines in 10 files covered. (47.37%)

942 of 1612 relevant lines covered (58.44%)

347.29 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

81.82
/lib/basenji_web/controllers/api/comics_controller.ex
1
defmodule BasenjiWeb.ComicsController do
2
  @moduledoc false
3
  use BasenjiWeb, :controller
4

5
  alias Basenji.Comics
6
  alias Basenji.ImageProcessor
7
  alias BasenjiWeb.API.Utils
8

9
  def get_page(conn, params) do
10
    id = params["id"]
4✔
11
    page = params["page"]
4✔
12

13
    with {:ok, page_num} <- Utils.safe_to_int(page) do
×
14
      Utils.get_comic_page_from_cache(id, page_num)
4✔
15
    end
16
    |> case do
4✔
17
      {:ok, binary, mime} ->
18
        length = byte_size(binary)
4✔
19

20
        conn
21
        |> merge_resp_headers([{"access-control-allow-origin", "*"}])
22
        |> merge_resp_headers([{"content-type", mime}])
23
        |> merge_resp_headers([{"content-length", "#{length}"}])
4✔
24
        |> send_resp(200, binary)
4✔
25

26
      error ->
27
        Utils.bad_request_handler(conn, error)
×
28
    end
29
  end
30

31
  def get_preview(conn, params) do
32
    id = params["id"]
1✔
33

34
    get_comic_preview(id)
35
    |> case do
1✔
36
      {:ok, binary} ->
37
        length = byte_size(binary)
1✔
38

39
        conn
40
        |> merge_resp_headers([{"access-control-allow-origin", "*"}])
41
        |> merge_resp_headers([{"content-type", "image/jpeg"}])
42
        |> merge_resp_headers([{"content-length", "#{length}"}])
1✔
43
        |> send_resp(200, binary)
1✔
44

45
      error ->
46
        Utils.bad_request_handler(conn, error)
×
47
    end
48
  end
49

50
  defp get_comic_preview(id) do
51
    with {:ok, comic} <- Comics.get_comic(id) do
1✔
52
      if comic.image_preview do
1✔
NEW
53
        {:ok, comic.image_preview}
×
54
      else
55
        make_preview(comic)
1✔
56
      end
57
    end
58
  end
59

60
  defp make_preview(comic) do
61
    {:ok, bytes, _mime} = Utils.get_comic_page_from_cache(comic, 1)
1✔
62
    {:ok, preview_bytes} = ImageProcessor.get_image_preview(bytes, 600, 600)
1✔
63
    Comics.update_comic(comic, %{image_preview: preview_bytes})
1✔
64
    {:ok, preview_bytes}
65
  end
66
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc