hypem 0.1.3 → 0.1.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.
@@ -0,0 +1,4 @@
1
+ module Hypem
2
+ class RequestError < StandardError; end
3
+
4
+ end
@@ -4,6 +4,7 @@ require "hypem/user"
4
4
  require "hypem/track"
5
5
  require "hypem/playlist"
6
6
  require "hypem/blog"
7
+ require "exceptions"
7
8
 
8
9
  module Hypem
9
10
 
@@ -14,11 +14,10 @@ module Hypem
14
14
 
15
15
  def get_info
16
16
  unless @has_info
17
- response = Request.new("/api/get_site_info?siteid=#{@id}").get.response.body
17
+ response = Request.new("/api/get_site_info?siteid=#{@id}").tap(&:get).response.body
18
18
  update_from_response(response)
19
19
  @has_info = true
20
20
  end
21
- return self
22
21
  end
23
22
 
24
23
  def update_from_response(rsp)
@@ -14,24 +14,23 @@ module Hypem
14
14
  end
15
15
 
16
16
  def get
17
- response = Request.new(@path).get.response
17
+ response = Request.new(@path).tap(&:get).response
18
18
  @tracks = []
19
19
  # getting rid of version cell
20
20
  response.body.shift
21
21
  response.body.each_value{|v| @tracks << Track.new(v)}
22
- return self
23
22
  end
24
23
 
25
24
  def next_page
26
- Playlist.new(@type,@arg,@page+1).get
25
+ Playlist.new(@type,@arg,@page+1).tap(&:get)
27
26
  end
28
27
 
29
28
  def prev_page
30
- Playlist.new(@type,@arg,@page-1).get
29
+ Playlist.new(@type,@arg,@page-1).tap(&:get)
31
30
  end
32
31
 
33
32
  def page(num)
34
- Playlist.new(@type,@arg,num).get
33
+ Playlist.new(@type,@arg,num).tap(&:get)
35
34
  end
36
35
 
37
36
  def self.create_url(tracks)
@@ -42,21 +41,21 @@ module Hypem
42
41
  end
43
42
 
44
43
  def self.latest(page=nil)
45
- Playlist.new(:time,:today,page).get
44
+ Playlist.new(:time,:today,page).tap(&:get)
46
45
  end
47
46
 
48
47
  def self.popular(arg=POPULAR_ARGS.first,page=nil)
49
48
  arg = arg.to_sym if arg.is_a? String
50
49
  raise ArgumentError unless POPULAR_ARGS.include?(arg)
51
- Playlist.new(:popular,arg,page).get
50
+ Playlist.new(:popular,arg,page).tap(&:get)
52
51
  end
53
52
 
54
53
  def self.friends_history(user,page=nil)
55
- Playlist.new(:people_history,user,page).get
54
+ Playlist.new(:people_history,user,page).tap(&:get)
56
55
  end
57
56
 
58
57
  def self.friends_favorites(user,page=nil)
59
- Playlist.new(:people,user,page).get
58
+ Playlist.new(:people,user,page).tap(&:get)
60
59
  end
61
60
 
62
61
  def self.tags(list,page)
@@ -68,7 +67,7 @@ module Hypem
68
67
  # meta method definitions for generic playlists
69
68
  GENERIC_METHODS.each do |method|
70
69
  define_singleton_method(method) do |arg,page=nil|
71
- Playlist.new(method,arg,page).get
70
+ Playlist.new(method,arg,page).tap(&:get)
72
71
  end
73
72
  end
74
73
 
@@ -3,7 +3,6 @@ require 'faraday'
3
3
  module Hypem
4
4
  ROOT_PATH = 'http://hypem.com'
5
5
  class Request
6
- attr_accessor :response
7
6
  attr_reader :url
8
7
 
9
8
  def initialize(url)
@@ -11,9 +10,11 @@ module Hypem
11
10
  end
12
11
 
13
12
  def get
14
- raw_response = connection.get(@url)
15
- @response = Response.new(raw_response)
16
- return self
13
+ @raw_response = connection.get(@url)
14
+ end
15
+
16
+ def response
17
+ @response ||= Response.new(@raw_response)
17
18
  end
18
19
 
19
20
  private
@@ -21,7 +22,6 @@ module Hypem
21
22
  def connection
22
23
  @@conn ||= Faraday.new(url: ROOT_PATH) do |builder|
23
24
  builder.request :url_encoded
24
- #builder.response :logger
25
25
  builder.adapter :net_http
26
26
  end
27
27
  end
@@ -5,8 +5,8 @@ module Hypem
5
5
  attr_accessor :body
6
6
 
7
7
  def initialize(raw_response)
8
- raise ArgumentError if raw_response.nil?
9
- # raise on body error here
8
+ raise RequestError if raw_response.body == 'null'
9
+
10
10
  @body = MultiJson.decode raw_response.body
11
11
  end
12
12
 
@@ -10,7 +10,9 @@ module Hypem
10
10
  end
11
11
 
12
12
  def api_request(path)
13
- Request.new("/api/#{path}?username=#{@name}").get.response.body
13
+ request = Request.new("/api/#{path}?username=#{@name}")
14
+ request.get
15
+ request.response.body
14
16
  end
15
17
 
16
18
  def get_profile
@@ -66,24 +68,24 @@ module Hypem
66
68
 
67
69
  #playlist requests
68
70
 
69
- def loved_playlist
70
- @l_p ||= Playlist.loved(@name)
71
+ def loved_playlist(page=1)
72
+ @l_p ||= Playlist.loved(@name,page)
71
73
  end
72
74
 
73
- def obsessed_playlist
74
- @o_p ||= Playlist.obsessed(@name)
75
+ def obsessed_playlist(page=1)
76
+ @o_p ||= Playlist.obsessed(@name,page)
75
77
  end
76
78
 
77
- def feed_playlist
78
- @f_p ||= Playlist.feed(@name)
79
+ def feed_playlist(page=1)
80
+ @f_p ||= Playlist.feed(@name,page)
79
81
  end
80
82
 
81
- def friends_favorites_playlist
82
- @f_f_p ||= Playlist.friends_favorites(@name)
83
+ def friends_favorites_playlist(page=1)
84
+ @f_f_p ||= Playlist.friends_favorites(@name,page)
83
85
  end
84
86
 
85
- def friends_history_playlist
86
- @f_h_p ||= Playlist.friends_history(@name)
87
+ def friends_history_playlist(page=1)
88
+ @f_h_p ||= Playlist.friends_history(@name,page)
87
89
  end
88
90
  end
89
91
  end
@@ -1,3 +1,3 @@
1
1
  module Hypem
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -20,7 +20,7 @@ describe Hypem::Blog do
20
20
 
21
21
  describe "#get_info" do
22
22
  subject do
23
- VCR.use_cassette('blog') {blog.get_info}
23
+ VCR.use_cassette('blog') {blog.tap(&:get_info)}
24
24
  end
25
25
  specify {subject.should be_a Hypem::Blog}
26
26
  specify {subject.site_name.should == 'Pasta Primavera'}
@@ -57,32 +57,32 @@ describe Hypem::Playlist do
57
57
  before {Hypem::Playlist.stub_chain(:new, :get)}
58
58
 
59
59
  it "converts strings to symbols" do
60
- Hypem::Playlist.should_receive(:new).with(:popular,%s(3day))
60
+ Hypem::Playlist.should_receive(:new).with(:popular,%s(3day),anything)
61
61
  Hypem::Playlist.popular('3day')
62
62
  end
63
63
 
64
64
  it "retrieves 3day by default" do
65
- Hypem::Playlist.should_receive(:new).with(:popular,%s(3day))
65
+ Hypem::Playlist.should_receive(:new).with(:popular,%s(3day),anything)
66
66
  Hypem::Playlist.popular
67
67
  end
68
68
 
69
69
  it "accepts lastweek" do
70
- Hypem::Playlist.should_receive(:new).with(:popular,:lastweek)
70
+ Hypem::Playlist.should_receive(:new).with(:popular,:lastweek,anything)
71
71
  Hypem::Playlist.popular(:lastweek)
72
72
  end
73
73
 
74
74
  it "accepts noremix" do
75
- Hypem::Playlist.should_receive(:new).with(:popular,:noremix)
75
+ Hypem::Playlist.should_receive(:new).with(:popular,:noremix,anything)
76
76
  Hypem::Playlist.popular(:noremix)
77
77
  end
78
78
 
79
79
  it "accepts artists" do
80
- Hypem::Playlist.should_receive(:new).with(:popular,:artists)
80
+ Hypem::Playlist.should_receive(:new).with(:popular,:artists,anything)
81
81
  Hypem::Playlist.popular(:artists)
82
82
  end
83
83
 
84
84
  it "accepts twitter" do
85
- Hypem::Playlist.should_receive(:new).with(:popular,:twitter)
85
+ Hypem::Playlist.should_receive(:new).with(:popular,:twitter,anything)
86
86
  Hypem::Playlist.popular(:twitter)
87
87
  end
88
88
 
@@ -8,7 +8,7 @@ describe Hypem::Request do
8
8
 
9
9
  let(:response) do
10
10
  VCR.use_cassette('fresh_playlist') do
11
- request.get.response
11
+ request.tap(&:get).response
12
12
  end
13
13
  end
14
14
 
@@ -3,12 +3,20 @@ require 'spec_helper'
3
3
  describe Hypem::Response do
4
4
 
5
5
  context "at initialization" do
6
- let(:response) do
6
+ let(:request) do
7
+ Hypem::Request.new('/playlist/latest/fresh/json/1')
8
+ end
9
+
10
+ let(:gotten_request) do
7
11
  VCR.use_cassette('fresh_playlist') do
8
- Hypem::Request.new('/playlist/latest/fresh/json/1').get.response
12
+ request.get
9
13
  end
10
14
  end
11
15
 
16
+ let(:response) do
17
+ described_class.new(gotten_request)
18
+ end
19
+
12
20
  it "uses a raw response parameter" do
13
21
  response.body.should_not be_nil
14
22
  end
@@ -16,6 +24,12 @@ describe Hypem::Response do
16
24
  it "assigns the body attribute" do
17
25
  response.body.should be_a Hash
18
26
  end
27
+
28
+ it "raises RequestError with null body" do
29
+ raw_response = double('RawResponse')
30
+ raw_response.stub(:body).and_return('null')
31
+ expect { described_class.new(raw_response) }.to raise_error Hypem::RequestError
32
+ end
19
33
  end
20
34
 
21
35
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hypem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-18 00:00:00.000000000 Z
12
+ date: 2012-05-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70219620218660 !ruby/object:Gem::Requirement
16
+ requirement: &70124648838920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '2.6'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70219620218660
24
+ version_requirements: *70124648838920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: vcr
27
- requirement: &70219620218200 !ruby/object:Gem::Requirement
27
+ requirement: &70124648838460 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '2.0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70219620218200
35
+ version_requirements: *70124648838460
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70219620217820 !ruby/object:Gem::Requirement
38
+ requirement: &70124648838080 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70219620217820
46
+ version_requirements: *70124648838080
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: faraday
49
- requirement: &70219620217280 !ruby/object:Gem::Requirement
49
+ requirement: &70124648837540 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0.7'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70219620217280
57
+ version_requirements: *70124648837540
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: multi_json
60
- requirement: &70219620216780 !ruby/object:Gem::Requirement
60
+ requirement: &70124648837040 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '1.1'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70219620216780
68
+ version_requirements: *70124648837040
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hashie
71
- requirement: &70219620216320 !ruby/object:Gem::Requirement
71
+ requirement: &70124648836580 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '1.2'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70219620216320
79
+ version_requirements: *70124648836580
80
80
  description:
81
81
  email:
82
82
  - jackcanderson@gmail.com
@@ -104,6 +104,7 @@ files:
104
104
  - fixtures/vcr_cassettes/user_friends.yml
105
105
  - fixtures/vcr_cassettes/user_profile.yml
106
106
  - hypem.gemspec
107
+ - lib/exceptions.rb
107
108
  - lib/hypem.rb
108
109
  - lib/hypem/blog.rb
109
110
  - lib/hypem/playlist.rb
@@ -140,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
141
  version: '0'
141
142
  segments:
142
143
  - 0
143
- hash: -553475673543070860
144
+ hash: 1984432069541911698
144
145
  requirements: []
145
146
  rubyforge_project: hypem
146
147
  rubygems_version: 1.8.10