scrobbler-ng 2.0.3 → 2.0.4

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/.gitignore CHANGED
@@ -9,7 +9,6 @@ coverage
9
9
  spec.html
10
10
  catalog.xml
11
11
  .yardoc
12
- scrobbler-ng.gemspec
13
12
  tmp
14
13
  .project
15
14
  .loadpath
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 2
3
3
  :minor: 0
4
- :patch: 3
4
+ :patch: 4
5
5
  :build:
@@ -1,7 +1,13 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'digest/md5'
2
4
  require 'nokogiri'
3
5
 
4
- $KCODE = 'u'
6
+ # Only set KCODE in Ruby 1.8.X, not in 1.9.X as it is deprecated
7
+ if RUBY_VERSION =~ /1\.8\.[0-9]/ then
8
+ $KCODE = 'u'
9
+ end
10
+
5
11
 
6
12
  module Scrobbler
7
13
 
@@ -28,13 +34,6 @@ module Scrobbler
28
34
  @@secret = secret
29
35
  end
30
36
 
31
- # Get a HTTP/REST connection to the webservice.
32
- #
33
- # @return [REST::Connection]
34
- def Base.connection
35
- @connection ||= REST::Connection.new(API_URL)
36
- end
37
-
38
37
  # Clean up a URL parameter.
39
38
  #
40
39
  # @param [String, Symbol] param The parameter which needs cleanup.
@@ -107,9 +106,24 @@ module Scrobbler
107
106
  paramlist << "#{sanitize(key)}=#{sanitize(value)}"
108
107
  end
109
108
  end
110
- url = "/2.0/?#{paramlist.join('&')}"
111
- xml = self.connection.send(request_method, url)
112
- doc = Nokogiri::XML(xml) do |config|
109
+
110
+ # TODO Caching!
111
+
112
+ url = URI.join(API_URL, "/2.0/?#{paramlist.join('&')}")
113
+
114
+ # Fetch the http answer
115
+ case request_method
116
+ when "get"
117
+ req = Net::HTTP::Get.new(url.request_uri)
118
+ when "post"
119
+ req = Net::HTTP::Post.new(url.request_uri)
120
+ end
121
+ http = Net::HTTP.new(url.host, url.port)
122
+ http.use_ssl = (url.port == 443)
123
+
124
+ # Process it
125
+ res = http.start() { |conn| conn.request(req) }
126
+ doc = Nokogiri::XML(res.body) do |config|
113
127
  config.noent.noblanks.nonet
114
128
  end
115
129
  doc
data/lib/scrobbler.rb CHANGED
@@ -7,7 +7,8 @@ require 'time'
7
7
  $: << File.expand_path(File.dirname(__FILE__))
8
8
 
9
9
  # Load base class
10
- require File.expand_path('scrobbler/base.rb', File.dirname(__FILE__))
10
+ #require File.expand_path('scrobbler/base.rb', File.dirname(__FILE__))
11
+ require 'scrobbler/base'
11
12
 
12
13
  # Load helper modules
13
14
  require 'scrobbler/helper/image'
@@ -28,5 +29,4 @@ require 'scrobbler/library'
28
29
  require 'scrobbler/playlist'
29
30
  require 'scrobbler/radio'
30
31
 
31
- require 'scrobbler/rest'
32
32
  require 'scrobbler/authentication'
@@ -0,0 +1,110 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{scrobbler-ng}
8
+ s.version = "2.0.4"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["John Nunemaker", "Jonathan Rudenberg", "Uwe L. Korn"]
12
+ s.date = %q{2010-07-28}
13
+ s.description = %q{A ruby library for accessing the Last.fm 2.0 API. It is higly optimized so that it uses less memory and parses XML (through Nokogiri) than other implementations.}
14
+ s.email = %q{uwelk@xhochy.org}
15
+ s.extra_rdoc_files = [
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ "MIT-LICENSE",
21
+ "README.rdoc",
22
+ "Rakefile",
23
+ "VERSION.yml",
24
+ "examples/album.rb",
25
+ "examples/artist.rb",
26
+ "examples/scrobble.rb",
27
+ "examples/tag.rb",
28
+ "examples/track.rb",
29
+ "examples/user.rb",
30
+ "lib/scrobbler.rb",
31
+ "lib/scrobbler/album.rb",
32
+ "lib/scrobbler/artist.rb",
33
+ "lib/scrobbler/authentication.rb",
34
+ "lib/scrobbler/base.rb",
35
+ "lib/scrobbler/basexml.rb",
36
+ "lib/scrobbler/basexmlinfo.rb",
37
+ "lib/scrobbler/event.rb",
38
+ "lib/scrobbler/geo.rb",
39
+ "lib/scrobbler/helper/image.rb",
40
+ "lib/scrobbler/helper/streamable.rb",
41
+ "lib/scrobbler/library.rb",
42
+ "lib/scrobbler/playlist.rb",
43
+ "lib/scrobbler/radio.rb",
44
+ "lib/scrobbler/session.rb",
45
+ "lib/scrobbler/shout.rb",
46
+ "lib/scrobbler/tag.rb",
47
+ "lib/scrobbler/track.rb",
48
+ "lib/scrobbler/user.rb",
49
+ "lib/scrobbler/venue.rb",
50
+ "scrobbler-ng.gemspec",
51
+ "tasks/jeweler.rake",
52
+ "tasks/rdoc.rake",
53
+ "tasks/tests.rake",
54
+ "tasks/yardoc.rake"
55
+ ]
56
+ s.homepage = %q{http://github.com/xhochy/scrobbler}
57
+ s.rdoc_options = ["--charset=UTF-8"]
58
+ s.require_paths = ["lib"]
59
+ s.rubygems_version = %q{1.3.7}
60
+ s.summary = %q{A ruby library for accessing the last.fm v2 webservices}
61
+ s.test_files = [
62
+ "test/unit/tag_spec.rb",
63
+ "test/unit/playlist_spec.rb",
64
+ "test/unit/album_spec.rb",
65
+ "test/unit/radio_spec.rb",
66
+ "test/unit/event_spec.rb",
67
+ "test/unit/venue_spec.rb",
68
+ "test/unit/user_spec.rb",
69
+ "test/unit/artist_spec.rb",
70
+ "test/unit/playing_test.rb",
71
+ "test/unit/simpleauth_test.rb",
72
+ "test/unit/geo_spec.rb",
73
+ "test/unit/library_spec.rb",
74
+ "test/unit/track_spec.rb",
75
+ "test/unit/authentication_spec.rb",
76
+ "test/spec_helper.rb",
77
+ "test/test_helper.rb",
78
+ "test/mocks/library.rb",
79
+ "test/mocks/rest.rb",
80
+ "examples/tag.rb",
81
+ "examples/track.rb",
82
+ "examples/user.rb",
83
+ "examples/artist.rb",
84
+ "examples/scrobble.rb",
85
+ "examples/album.rb"
86
+ ]
87
+
88
+ if s.respond_to? :specification_version then
89
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
90
+ s.specification_version = 3
91
+
92
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
93
+ s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
94
+ s.add_development_dependency(%q<yard>, [">= 0"])
95
+ s.add_development_dependency(%q<fakeweb>, [">= 0"])
96
+ s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.2"])
97
+ else
98
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
99
+ s.add_dependency(%q<yard>, [">= 0"])
100
+ s.add_dependency(%q<fakeweb>, [">= 0"])
101
+ s.add_dependency(%q<nokogiri>, [">= 1.4.2"])
102
+ end
103
+ else
104
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
105
+ s.add_dependency(%q<yard>, [">= 0"])
106
+ s.add_dependency(%q<fakeweb>, [">= 0"])
107
+ s.add_dependency(%q<nokogiri>, [">= 1.4.2"])
108
+ end
109
+ end
110
+
data/tasks/jeweler.rake CHANGED
@@ -11,7 +11,7 @@ begin
11
11
  s.add_development_dependency "rspec", ">= 1.2.9"
12
12
  s.add_development_dependency "yard", ">= 0"
13
13
  s.add_development_dependency "fakeweb", ">= 0"
14
- s.add_dependency 'nokogiri'
14
+ s.add_dependency 'nokogiri', ">= 1.4.2"
15
15
 
16
16
  s.files.exclude 'test/**/*'
17
17
  end
data/test/mocks/rest.rb CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'fakeweb'
5
- require File.expand_path('../../lib/scrobbler/rest', File.dirname(__FILE__))
6
5
 
7
6
  FIXTURES_BASE = File.join([File.dirname(__FILE__), '..', 'fixtures', 'xml'])
8
7
  WEB_BASE = 'http://ws.audioscrobbler.com:80/2.0/?'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scrobbler-ng
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
- - 3
10
- version: 2.0.3
9
+ - 4
10
+ version: 2.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - John Nunemaker
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2010-07-20 00:00:00 +02:00
20
+ date: 2010-07-28 00:00:00 +02:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
@@ -74,8 +74,10 @@ dependencies:
74
74
  - !ruby/object:Gem::Version
75
75
  hash: 3
76
76
  segments:
77
- - 0
78
- version: "0"
77
+ - 1
78
+ - 4
79
+ - 2
80
+ version: 1.4.2
79
81
  type: :runtime
80
82
  version_requirements: *id004
81
83
  description: A ruby library for accessing the Last.fm 2.0 API. It is higly optimized so that it uses less memory and parses XML (through Nokogiri) than other implementations.
@@ -112,13 +114,13 @@ files:
112
114
  - lib/scrobbler/library.rb
113
115
  - lib/scrobbler/playlist.rb
114
116
  - lib/scrobbler/radio.rb
115
- - lib/scrobbler/rest.rb
116
117
  - lib/scrobbler/session.rb
117
118
  - lib/scrobbler/shout.rb
118
119
  - lib/scrobbler/tag.rb
119
120
  - lib/scrobbler/track.rb
120
121
  - lib/scrobbler/user.rb
121
122
  - lib/scrobbler/venue.rb
123
+ - scrobbler-ng.gemspec
122
124
  - tasks/jeweler.rake
123
125
  - tasks/rdoc.rake
124
126
  - tasks/tests.rake
@@ -1,47 +0,0 @@
1
- require 'net/https'
2
-
3
- module Scrobbler
4
- module REST
5
- class Connection
6
- def initialize(base_url, args = {})
7
- @base_url = base_url
8
- @username = args[:username]
9
- @password = args[:password]
10
- end
11
-
12
- def get(resource, args = nil)
13
- request(resource, "get", args)
14
- end
15
-
16
- def post(resource, args = nil)
17
- request(resource, "post", args)
18
- end
19
-
20
- def request(resource, method = "get", args = nil)
21
- url = URI.join(@base_url, resource)
22
-
23
- if args
24
- # TODO: What about keys without value?
25
- url.query = args.map { |k,v| "%s=%s" % [URI.encode(k.to_s), URI.encode(v.to_s)] }.join("&")
26
- end
27
-
28
- case method
29
- when "get"
30
- req = Net::HTTP::Get.new(url.request_uri)
31
- when "post"
32
- req = Net::HTTP::Post.new(url.request_uri)
33
- end
34
-
35
- if @username and @password
36
- req.basic_auth(@username, @password)
37
- end
38
-
39
- http = Net::HTTP.new(url.host, url.port)
40
- http.use_ssl = (url.port == 443)
41
-
42
- res = http.start() { |conn| conn.request(req) }
43
- res.body
44
- end
45
- end
46
- end
47
- end