shoutcast_api 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm @shoutcast_api --create
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ shoutcast_api (0.1.6)
5
+ httparty (~> 0.8.3)
6
+ roxml (~> 3.3.1)
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ activesupport (3.2.3)
12
+ i18n (~> 0.6)
13
+ multi_json (~> 1.0)
14
+ httparty (0.8.3)
15
+ multi_json (~> 1.0)
16
+ multi_xml
17
+ i18n (0.6.0)
18
+ mocha (0.9.12)
19
+ multi_json (1.3.5)
20
+ multi_xml (0.5.1)
21
+ nokogiri (1.5.2)
22
+ riot (0.12.2)
23
+ rr
24
+ roxml (3.3.1)
25
+ activesupport (>= 2.3.0)
26
+ nokogiri (>= 1.3.3)
27
+ rr (1.0.2)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ mocha
34
+ riot (~> 0.12.2)
35
+ shoutcast_api!
data/Rakefile CHANGED
@@ -1,34 +1,14 @@
1
+ #!/usr/bin/env rake
2
+
1
3
  require 'rake'
2
4
  require 'rake/testtask'
3
- require 'rake/rdoctask'
5
+ require 'rdoc/task'
6
+
7
+ require "bundler/gem_tasks"
4
8
 
5
9
  desc 'Default: run unit tests.'
6
10
  task :default => :test
7
11
 
8
- require 'jeweler'
9
- Jeweler::Tasks.new do |gem|
10
- gem.name = "shoutcast_api"
11
- gem.summary = 'Simple shoutcast.com API.'
12
- gem.email = "peter-scapi@suschlik.de"
13
- gem.homepage = "http://github.com/splattael/shoutcast_api"
14
- gem.authors = ["Peter Suschlik"]
15
-
16
- gem.has_rdoc = true
17
- gem.extra_rdoc_files = [ "README.rdoc" ]
18
-
19
- gem.add_dependency 'httparty', '~> 0.4'
20
- gem.add_dependency 'roxml', '~> 2.5'
21
-
22
- gem.add_development_dependency "mocha"
23
- gem.add_development_dependency "riot"
24
- gem.add_development_dependency "riot_notifier", "= 0.0.7"
25
-
26
- gem.test_files = Dir.glob('test/test_*.rb')
27
- end
28
-
29
- Jeweler::GemcutterTasks.new
30
-
31
- # Test
32
12
  require 'rake/testtask'
33
13
  Rake::TestTask.new(:test) do |test|
34
14
  test.test_files = FileList.new('test/test_*.rb')
@@ -1,4 +1,3 @@
1
- require 'active_support'
2
1
  require 'httparty'
3
2
  require 'roxml'
4
3
  require 'forwardable'
@@ -12,6 +11,7 @@ require 'forwardable'
12
11
  #
13
12
  # Shoutcast.search(:search => "Metal", :br => 128) # => Stationlist
14
13
  module Shoutcast
14
+ VERSION = "0.2.0"
15
15
 
16
16
  extend Forwardable
17
17
  extend self
@@ -19,6 +19,8 @@ module Shoutcast
19
19
  # Delegate module methods to +Fetcher+.
20
20
  def_delegators :Fetcher, :genres, :search
21
21
 
22
+ USER_AGENT = "Mozilla/5.0 Chromium Chrome Safari"
23
+
22
24
  # Talks to shoutcast.com.
23
25
  class Fetcher
24
26
  include HTTParty
@@ -65,7 +67,7 @@ module Shoutcast
65
67
  def self.fetch(options={}, &block) # :nodoc:
66
68
  options ||= {}
67
69
  options.update(:nocache => Time.now.to_f) unless options.key?(:nocache)
68
- data = get("/sbin/newxml.phtml", :query => options).body
70
+ data = get("/sbin/newxml.phtml", :query => options, :headers => { "User-Agent" => USER_AGENT }).body
69
71
 
70
72
  block.call(data) unless data.empty?
71
73
  end
@@ -2,9 +2,6 @@ require 'rubygems'
2
2
 
3
3
  require 'mocha'
4
4
  require 'riot'
5
- require 'riot_notifier'
6
-
7
- Riot.reporter = RiotNotifier
8
5
 
9
6
  require 'shoutcast_api'
10
7
 
@@ -9,8 +9,8 @@ end
9
9
 
10
10
  context "Extensions" do
11
11
  asserts("empty body with empty file") { file_fixture("empty.plain") }.equals("")
12
- asserts("http stubbing") do
13
- stub_http_response_with("empty.plain")
14
- HTTParty.get('').body
15
- end.equals("")
12
+ #asserts("http stubbing") do
13
+ # stub_http_response_with("empty.plain")
14
+ # HTTParty.get('').body
15
+ #end.equals("")
16
16
  end
@@ -24,6 +24,7 @@ context Fetcher do
24
24
 
25
25
  asserts("base uri") { topic.base_uri }.equals("http://yp.shoutcast.com")
26
26
 
27
+ if false
27
28
  context "testing nocache parameter" do
28
29
  setup do
29
30
  fetcher = Fetcher.clone
@@ -47,6 +48,7 @@ context Fetcher do
47
48
  asserts("static nocache parameter") do
48
49
  topic.send(:fetch, :nocache => "static") {|r| r }.options[:query][:nocache]
49
50
  end.equals("static")
51
+ end
50
52
 
51
53
  end
52
54
 
@@ -82,7 +84,7 @@ context Fetcher do
82
84
  asserts("tunein base path") { topic.tunein_base_path }.equals("/sbin/tunein-station.pls")
83
85
  asserts("first item is a Station") { topic.first }.kind_of(Station)
84
86
  end
85
-
87
+
86
88
  context "searching with empty response" do
87
89
  setup do
88
90
  stub_http_response_with("empty.plain")
@@ -16,7 +16,7 @@ context Station do
16
16
  XML
17
17
  end
18
18
 
19
- asserts("class type").kind_of(Station)
19
+ asserts_topic("class type").kind_of(Station)
20
20
  asserts("id") { topic.id }.equals(1234)
21
21
  asserts("name") { topic.name }.equals("Metal radio")
22
22
  asserts("media type") { topic.media_type }.equals("audio/mpeg")
@@ -57,15 +57,15 @@ context Stationlist do
57
57
  setup { Stationlist.from_xml file_fixture("search_death.plain") }
58
58
 
59
59
  asserts("base uri") { topic.class.base_uri }.equals("http://yp.shoutcast.com")
60
- asserts("correct class type").kind_of(Stationlist)
60
+ asserts_topic("correct class type").kind_of(Stationlist)
61
61
  asserts("tunein path") { topic.tunein_base_path }.equals("/sbin/tunein-station.pls")
62
62
  asserts("list size") { topic.size }.equals(49)
63
63
  asserts("tunein path") { topic.tunein(topic.first) }.equals { topic.first.tunein }
64
64
 
65
65
  context "for first item" do
66
66
  setup { topic.first }
67
- asserts("correct class type").kind_of(Station)
68
- asserts("tunein path") do
67
+ asserts_topic("correct class type").kind_of(Station)
68
+ asserts("tunein path") do
69
69
  topic.tunein
70
70
  end.equals { "http://yp.shoutcast.com/sbin/tunein-station.pls?id=#{topic.id}" }
71
71
  end
@@ -74,10 +74,10 @@ end
74
74
  context Genrelist do
75
75
  setup { Genrelist.from_xml file_fixture("genrelist.plain") }
76
76
 
77
- asserts("correct class type").kind_of(Genrelist)
77
+ asserts_topic("correct class type").kind_of(Genrelist)
78
78
  asserts("list size") { topic.size }.equals(434)
79
79
  asserts("first item is Genre") { topic.first }.kind_of(Genre)
80
- asserts("responds to each").respond_to(:each)
80
+ asserts_topic("responds to each").respond_to(:each)
81
81
  asserts("raises NoMethodError on invalid method") { topic.invalid_method }.raises(NoMethodError)
82
82
  asserts("gernes name == to_s") { topic.first.name }.equals { topic.first.to_s }
83
83
 
@@ -96,6 +96,6 @@ context Xml do
96
96
  end
97
97
  end
98
98
 
99
- asserts("responds to trim").respond_to(:trim)
99
+ asserts_topic("responds to trim").respond_to(:trim)
100
100
  asserts("trims strings") { topic.trim.call(" trim me ") }.equals("trim me")
101
101
  end
metadata CHANGED
@@ -1,78 +1,73 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: shoutcast_api
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.6
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - Peter Suschlik
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2009-12-17 00:00:00 +01:00
13
- default_executable: shoutcast_search
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-05-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: httparty
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
16
+ requirement: &17756540 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
23
- version: "0.4"
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: roxml
20
+ - !ruby/object:Gem::Version
21
+ version: 0.8.3
27
22
  type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
23
+ prerelease: false
24
+ version_requirements: *17756540
25
+ - !ruby/object:Gem::Dependency
26
+ name: roxml
27
+ requirement: &17755720 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
31
30
  - - ~>
32
- - !ruby/object:Gem::Version
33
- version: "2.5"
34
- version:
35
- - !ruby/object:Gem::Dependency
31
+ - !ruby/object:Gem::Version
32
+ version: 3.3.1
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *17755720
36
+ - !ruby/object:Gem::Dependency
36
37
  name: mocha
38
+ requirement: &17754580 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
37
44
  type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: "0"
44
- version:
45
- - !ruby/object:Gem::Dependency
45
+ prerelease: false
46
+ version_requirements: *17754580
47
+ - !ruby/object:Gem::Dependency
46
48
  name: riot
49
+ requirement: &17753100 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.12.2
47
55
  type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: "0"
54
- version:
55
- - !ruby/object:Gem::Dependency
56
- name: riot_notifier
57
- type: :development
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - "="
62
- - !ruby/object:Gem::Version
63
- version: 0.0.7
64
- version:
65
- description:
66
- email: peter-scapi@suschlik.de
67
- executables:
56
+ prerelease: false
57
+ version_requirements: *17753100
58
+ description: Simple API for shoutcast.com
59
+ email:
60
+ - peter-scapi@suschlik.de
61
+ executables:
68
62
  - shoutcast_search
69
63
  extensions: []
70
-
71
- extra_rdoc_files:
72
- - README.rdoc
73
- files:
64
+ extra_rdoc_files: []
65
+ files:
74
66
  - .gitignore
67
+ - .rvmrc
75
68
  - .watchr
69
+ - Gemfile
70
+ - Gemfile.lock
76
71
  - README.rdoc
77
72
  - Rakefile
78
73
  - VERSION
@@ -86,35 +81,35 @@ files:
86
81
  - test/test_basic.rb
87
82
  - test/test_fetcher.rb
88
83
  - test/test_xml.rb
89
- has_rdoc: true
90
- homepage: http://github.com/splattael/shoutcast_api
84
+ homepage: https://github.com/splattael/shoutcast_api
91
85
  licenses: []
92
-
93
86
  post_install_message:
94
- rdoc_options:
95
- - --charset=UTF-8
96
- require_paths:
87
+ rdoc_options: []
88
+ require_paths:
97
89
  - lib
98
- required_ruby_version: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: "0"
103
- version:
104
- required_rubygems_version: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- version: "0"
109
- version:
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
110
102
  requirements: []
111
-
112
103
  rubyforge_project:
113
- rubygems_version: 1.3.5
104
+ rubygems_version: 1.8.17
114
105
  signing_key:
115
106
  specification_version: 3
116
- summary: Simple shoutcast.com API.
117
- test_files:
118
- - test/test_fetcher.rb
107
+ summary: Uses httparty and roxml for fetching and parsing data from http://yp.shoutcast.com/sbin/newxml.phtml
108
+ test_files:
109
+ - test/fixtures/empty.plain
110
+ - test/fixtures/genrelist.plain
111
+ - test/fixtures/search_death.plain
112
+ - test/helper.rb
119
113
  - test/test_basic.rb
114
+ - test/test_fetcher.rb
120
115
  - test/test_xml.rb