Skip to content

Commit 343a440

Browse files
committed
Merge branch 'master' of git://github.com/hexpm/diff
2 parents 78f04c8 + 8f969bf commit 343a440

File tree

5 files changed

+72
-0
lines changed

5 files changed

+72
-0
lines changed

assets/css/app.css

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,32 @@ input.search-input:focus {
281281
padding: 0 90px;
282282
}
283283

284+
table.package-list tr:nth-child(even) {
285+
background-color: rgba(255, 255, 255, 0.06);
286+
}
287+
288+
table.package-list th{
289+
text-align: left;
290+
border-bottom: none;
291+
}
292+
293+
table.package-list td {
294+
text-align: left;
295+
padding: 1.2rem 1.5rem;
296+
}
297+
298+
table.package-list th:first-child {
299+
padding-left: 1.5rem;
300+
}
301+
302+
table.package-list td:last-child {
303+
text-align: right;
304+
}
305+
306+
table.package-list .button {
307+
margin-bottom: 0;
308+
}
309+
284310
@media only screen
285311
and (min-device-width: 320px)
286312
and (max-device-width: 480px) {

lib/diff_web/controllers/page_controller.ex

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,19 @@ defmodule DiffWeb.PageController do
55

66
@chunk_size 64 * 1024
77

8+
def diffs(conn, %{"diffs" => diffs}) do
9+
diffs =
10+
diffs
11+
|> Enum.map(&parse_diff/1)
12+
|> Enum.reject(&is_nil/1)
13+
14+
conn
15+
|> assign(:diffs, diffs)
16+
|> render()
17+
end
18+
19+
def diffs(conn, _params), do: render_error(conn, 400)
20+
821
def diff(conn, %{"package" => package, "versions" => versions}) do
922
case parse_versions(versions) do
1023
{:ok, from, to} ->
@@ -193,4 +206,13 @@ defmodule DiffWeb.PageController do
193206
random_string = Base.encode16(:crypto.strong_rand_bytes(4))
194207
Path.join([System.tmp_dir!(), "diff", prefix <> random_string])
195208
end
209+
210+
defp parse_diff(diff) do
211+
case String.split(diff, ":", trim: true) do
212+
[app, from, to] -> {app, from, to, build_url(app, from, to)}
213+
_ -> nil
214+
end
215+
end
216+
217+
defp build_url(app, from, to), do: "/diff/#{app}/#{from}..#{to}"
196218
end

lib/diff_web/router.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ defmodule DiffWeb.Router do
1616

1717
live "/", SearchLiveView
1818
get "/diff/:package/:versions", PageController, :diff
19+
get "/diffs", PageController, :diffs
1920
end
2021
end
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<div class="message-container">
2+
<table class="package-list">
3+
<tr><th>Package Name</th><th>From</th><th>To</th><th></th></tr>
4+
<%= for {app, from, to, link} <- @diffs do %>
5+
<tr><td><%= app %></td><td><%= from %></td><td><%= to %></td><td><a href="<%= link %>" class="button diff-button">View Diff</a></td></tr>
6+
<% end %>
7+
</table>
8+
</div>

test/diff_web/controllers/page_controller_test.exs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,19 @@ defmodule DiffWeb.PageControllerTest do
2626
assert html_response(conn, 200) =~ diff
2727
end
2828
end
29+
30+
describe "GET /diffs" do
31+
setup :verify_on_exit!
32+
33+
test "does not accept an empty list of diffs", %{conn: conn} do
34+
conn = get(conn, "/diffs")
35+
assert html_response(conn, 400) =~ "Bad request"
36+
end
37+
38+
test "shows all diffs in list", %{conn: conn} do
39+
diff = "/diff/phoenix/1.4.5..1.4.9"
40+
conn = get(conn, "diffs?diffs[]=phoenix:1.4.5:1.4.9")
41+
assert html_response(conn, 200) =~ diff
42+
end
43+
end
2944
end

0 commit comments

Comments
 (0)