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

camatcode / basenji / 86eb394777b2a14e273500308061729e50e910e2

16 Jul 2025 11:43PM UTC coverage: 55.458%. First build
86eb394777b2a14e273500308061729e50e910e2

Pull #49

github

camatcode
perf: clean up
Pull Request #49: perf: performance improvements

18 of 46 new or added lines in 10 files covered. (39.13%)

884 of 1594 relevant lines covered (55.46%)

314.9 hits per line

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

50.0
/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"]
1✔
11
    page = params["page"]
1✔
12

13
    with {:ok, page_num} <- Utils.safe_to_int(page) do
×
14
      Utils.get_comic_page_from_cache(id, page_num)
1✔
15
    end
16
    |> case do
1✔
17
      {:ok, binary, mime} ->
18
        length = byte_size(binary)
×
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}"}])
×
24
        |> send_resp(200, binary)
×
25

26
      error ->
27
        Utils.bad_request_handler(conn, error)
1✔
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)
×
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}"}])
×
43
        |> send_resp(200, binary)
×
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✔
NEW
62
    {:ok, preview_bytes} = ImageProcessor.get_image_preview(bytes, 600, 600)
×
NEW
63
    Comics.update_comic(comic, %{image_preview: preview_bytes})
×
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