shoutcast_status 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/shoutcast_status.rb +8 -4
- data/test/shoutcast_status_test.rb +9 -0
- metadata +2 -2
data/lib/shoutcast_status.rb
CHANGED
@@ -2,7 +2,8 @@ require "open-uri"
|
|
2
2
|
require "johnson"
|
3
3
|
|
4
4
|
class ShoutcastStatus
|
5
|
-
|
5
|
+
DEFAULT_ENDPOINT = "http://%s/cast/"
|
6
|
+
DEFAULT_INFO_PATH = "js.php/%s/streaminfo"
|
6
7
|
|
7
8
|
DUMMY_CALLBACK = <<-END
|
8
9
|
function cc_streaminfo_get_callback(details){
|
@@ -12,12 +13,15 @@ class ShoutcastStatus
|
|
12
13
|
|
13
14
|
# Create a ShoutcastStatus instance for a given station.
|
14
15
|
# If one parameter is given, it is taken as the url to the now playing JSONP
|
15
|
-
# callback. If two parameters are given, they are interpreted
|
16
|
-
# host and station name; the information URL will be inferred
|
16
|
+
# callback or the playlist. If two parameters are given, they are interpreted
|
17
|
+
# as the station host and station name; the information URL will be inferred
|
18
|
+
# from this.
|
17
19
|
#
|
18
20
|
def initialize(url_or_host, station=nil)
|
19
21
|
if station
|
20
|
-
@info_url =
|
22
|
+
@info_url = (DEFAULT_ENDPOINT % url_or_host) + (DEFAULT_INFO_PATH % station)
|
23
|
+
elsif m = url_or_host.match(%r{^(.*?/)tunein.php/([^/]+)/playlist.pls$})
|
24
|
+
@info_url = m[1] + (DEFAULT_INFO_PATH % m[2])
|
21
25
|
else
|
22
26
|
@info_url = url_or_host
|
23
27
|
end
|
@@ -15,6 +15,15 @@ class ShoutcastStatusTest < Test::Unit::TestCase
|
|
15
15
|
sc.stream_info
|
16
16
|
end
|
17
17
|
|
18
|
+
def test_should_convert_tunein_url_to_status_url
|
19
|
+
io = StringIO.new("cc_streaminfo_get_callback({});")
|
20
|
+
sc = ShoutcastStatus.new("http://example.com/arbitrary/location/tunein.php/punkrock/playlist.pls")
|
21
|
+
sc.expects(:open).
|
22
|
+
with("http://example.com/arbitrary/location/js.php/punkrock/streaminfo").
|
23
|
+
yields(io)
|
24
|
+
sc.stream_info
|
25
|
+
end
|
26
|
+
|
18
27
|
def test_should_use_url_as_supplied
|
19
28
|
io = StringIO.new("cc_streaminfo_get_callback({});")
|
20
29
|
sc = ShoutcastStatus.new("http://example.com/some/path")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shoutcast_status
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Battley
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-07-
|
12
|
+
date: 2010-07-19 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|