Skip to content

Commit f42af12

Browse files
authored
Merge pull request #10 from r8/fix-crash-on-nil
Fix crashing when URL is empty or nil.
2 parents 098b2b7 + cf96d60 commit f42af12

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Change Log
22

33
## [Unreleased]
4-
### Added
4+
### Fixed
5+
- Fix crashing when URL is empty or nil.
56

67
### Changed
78

lib/oembed.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,16 @@ defmodule OEmbed do
4242
{:ok, result} = OEmbed.for("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
4343
```
4444
"""
45-
def for(url) do
45+
def for(_url = ""), do: {:error, "Empty URL"}
46+
def for(url) when is_binary(url) do
4647
case Enum.find(get_providers(), fn(provider) -> provider.provides?(url) end) do
4748
nil ->
4849
{:error, "oEmbed not found"}
4950
provider ->
5051
provider.get(url)
5152
end
5253
end
54+
def for(_), do: {:error, "Empty URL"}
5355

5456
defp get_providers do
5557
@core_providers

test/oembed_test.exs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,22 @@ defmodule OEmbedTest do
55
alias OEmbed.Video
66
alias OEmbed.Rich
77

8+
test "gets error response for nil" do
9+
{:error, _} = OEmbed.for(nil)
10+
end
11+
12+
test "gets error response for empty string" do
13+
{:error, _} = OEmbed.for("")
14+
end
15+
816
test "gets video oembed for valid youtube url" do
917
use_cassette "youtube_valid" do
1018
{:ok, %Video{} = oembed} = OEmbed.for("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
1119
assert oembed.html =~ "<iframe"
1220
end
1321
end
1422

15-
test "gets error respone for invalid youtube url" do
23+
test "gets error response for invalid youtube url" do
1624
use_cassette "youtube_invalid" do
1725
{:error, _} = OEmbed.for("https://www.youtube.com/watch?v=invalid_url")
1826
end
@@ -32,7 +40,7 @@ defmodule OEmbedTest do
3240
end
3341
end
3442

35-
test "gets error respone for invalid instagram url" do
43+
test "gets error response for invalid instagram url" do
3644
use_cassette "instagram_invalid" do
3745
{:error, _} = OEmbed.for("https://www.instagram.com/p/invalid_url/")
3846
end
@@ -45,7 +53,7 @@ defmodule OEmbedTest do
4553
end
4654
end
4755

48-
test "gets error respone for invalid pinterest url" do
56+
test "gets error response for invalid pinterest url" do
4957
use_cassette "pinterest_pin_invalid" do
5058
{:error, _} = OEmbed.for("https://www.pinterest.com/pin/invalid_url/")
5159
end

0 commit comments

Comments
 (0)