soundcloud9000 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +7 -0
  5. data/README.md +65 -0
  6. data/Rakefile +46 -0
  7. data/bin/soundcloud9000 +9 -0
  8. data/lib/soundcloud9000.rb +22 -0
  9. data/lib/soundcloud9000/application.rb +93 -0
  10. data/lib/soundcloud9000/client.rb +51 -0
  11. data/lib/soundcloud9000/controllers/controller.rb +19 -0
  12. data/lib/soundcloud9000/controllers/player_controller.rb +75 -0
  13. data/lib/soundcloud9000/controllers/track_controller.rb +90 -0
  14. data/lib/soundcloud9000/download_thread.rb +51 -0
  15. data/lib/soundcloud9000/events.rb +17 -0
  16. data/lib/soundcloud9000/models/collection.rb +42 -0
  17. data/lib/soundcloud9000/models/player.rb +138 -0
  18. data/lib/soundcloud9000/models/playlist.rb +22 -0
  19. data/lib/soundcloud9000/models/track.rb +56 -0
  20. data/lib/soundcloud9000/models/track_collection.rb +71 -0
  21. data/lib/soundcloud9000/models/user.rb +26 -0
  22. data/lib/soundcloud9000/time_helper.rb +23 -0
  23. data/lib/soundcloud9000/ui/canvas.rb +21 -0
  24. data/lib/soundcloud9000/ui/color.rb +46 -0
  25. data/lib/soundcloud9000/ui/input.rb +56 -0
  26. data/lib/soundcloud9000/ui/rect.rb +14 -0
  27. data/lib/soundcloud9000/ui/table.rb +132 -0
  28. data/lib/soundcloud9000/ui/view.rb +73 -0
  29. data/lib/soundcloud9000/views/player_view.rb +63 -0
  30. data/lib/soundcloud9000/views/splash.rb +69 -0
  31. data/lib/soundcloud9000/views/tracks_table.rb +14 -0
  32. data/soundcloud9000 +8 -0
  33. data/soundcloud9000.gemspec +27 -0
  34. data/spec/controllers/track_controller_spec.rb +59 -0
  35. data/spec/spec_helper.rb +2 -0
  36. metadata +165 -0
@@ -0,0 +1,14 @@
1
+ require_relative '../ui/table'
2
+
3
+ module Soundcloud9000
4
+ module Views
5
+ # this view is responsible for the bar that separates the player and track list
6
+ class TracksTable < UI::Table
7
+ def initialize(*args)
8
+ super
9
+ self.header = %w(Title User Length Plays Likes Comments)
10
+ self.keys = [:title, :username, :length, :plays, :likes, :comments]
11
+ end
12
+ end
13
+ end
14
+ end
data/soundcloud9000 ADDED
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+
3
+ ROOT_PATH=$(dirname $0)
4
+
5
+ export DYLD_LIBRARY_PATH=$ROOT_PATH/dyld
6
+ export RUBYLIB=$ROOT_PATH/lib
7
+
8
+ $ROOT_PATH/ruby $ROOT_PATH/bin/soundcloud9000
@@ -0,0 +1,27 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "soundcloud9000"
5
+ s.version = "0.1.0"
6
+ s.authors = ["Tobias Schmidt", "Matthias Georgi", "Sumanth Ratna"]
7
+ s.email = "sratna@sumanthratna.gq"
8
+ s.homepage = "http://www.github.com/sumanthratna/soundcloud9000"
9
+ s.summary = "SoundCloud without the stupid CSS files"
10
+ s.description = "The next generation SoundCloud client"
11
+ s.license = 'MIT'
12
+
13
+ s.bindir = 'bin'
14
+ s.files = `git ls-files`.split("\n")
15
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
16
+ s.require_paths = ["lib"]
17
+
18
+ s.add_dependency "json", "~> 1.8"
19
+ s.add_dependency "audite", "~> 0.4"
20
+ s.add_dependency "curses", "~> 1.0"
21
+
22
+ s.add_development_dependency "bundler", "~> 1.3"
23
+ s.add_development_dependency "rake", "~> 10.5"
24
+ s.add_development_dependency "mocha", "~> 1.1"
25
+
26
+ s.extra_rdoc_files = ["README.md"]
27
+ end
@@ -0,0 +1,59 @@
1
+ require_relative '../spec_helper'
2
+ require_relative '../../lib/soundcloud9000/controllers/track_controller'
3
+
4
+ module Soundcloud9000
5
+ module Controllers
6
+ describe TrackController do
7
+ let(:tracks) { mock }
8
+ let(:table) { mock }
9
+ let(:client) { mock }
10
+
11
+ subject { TrackController.new(table, client) }
12
+
13
+ before do
14
+ table.expects(:bind_to)
15
+
16
+ subject.bind_to(tracks)
17
+ end
18
+
19
+ it 'plays next track' do
20
+ table.expects(:down)
21
+ table.expects(:select)
22
+ table.expects(:current).returns(mock)
23
+ tracks.expects(:[]).returns(mock)
24
+
25
+ subject.next_track
26
+ end
27
+
28
+ it 'on key enter' do
29
+ table.expects(:select)
30
+ table.expects(:current).returns(mock)
31
+ tracks.expects(:[]).returns(mock)
32
+
33
+ subject.events.trigger(:key, :enter)
34
+ end
35
+
36
+ it 'on key up' do
37
+ table.expects(:up)
38
+
39
+ subject.events.trigger(:key, :up)
40
+ end
41
+
42
+ it 'on key down' do
43
+ table.expects(:down)
44
+ table.expects(:bottom?).returns(true)
45
+ tracks.expects(:load_more)
46
+
47
+ subject.events.trigger(:key, :down)
48
+ end
49
+
50
+ it 'on key u' do
51
+ UI::Input.expects(:getstr).returns(:permalink)
52
+ client.expects(:resolve).returns(:user)
53
+ tracks.expects(:user=)
54
+
55
+ subject.events.trigger(:key, :u)
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,2 @@
1
+ require 'minitest/autorun'
2
+ require 'mocha'
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: soundcloud9000
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tobias Schmidt
8
+ - Matthias Georgi
9
+ - Sumanth Ratna
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2019-04-29 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: json
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.8'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.8'
29
+ - !ruby/object:Gem::Dependency
30
+ name: audite
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '0.4'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.4'
43
+ - !ruby/object:Gem::Dependency
44
+ name: curses
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: bundler
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.3'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.3'
71
+ - !ruby/object:Gem::Dependency
72
+ name: rake
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '10.5'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '10.5'
85
+ - !ruby/object:Gem::Dependency
86
+ name: mocha
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.1'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '1.1'
99
+ description: The next generation SoundCloud client
100
+ email: sratna@sumanthratna.gq
101
+ executables:
102
+ - soundcloud9000
103
+ extensions: []
104
+ extra_rdoc_files:
105
+ - README.md
106
+ files:
107
+ - ".gitignore"
108
+ - Gemfile
109
+ - LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - bin/soundcloud9000
113
+ - lib/soundcloud9000.rb
114
+ - lib/soundcloud9000/application.rb
115
+ - lib/soundcloud9000/client.rb
116
+ - lib/soundcloud9000/controllers/controller.rb
117
+ - lib/soundcloud9000/controllers/player_controller.rb
118
+ - lib/soundcloud9000/controllers/track_controller.rb
119
+ - lib/soundcloud9000/download_thread.rb
120
+ - lib/soundcloud9000/events.rb
121
+ - lib/soundcloud9000/models/collection.rb
122
+ - lib/soundcloud9000/models/player.rb
123
+ - lib/soundcloud9000/models/playlist.rb
124
+ - lib/soundcloud9000/models/track.rb
125
+ - lib/soundcloud9000/models/track_collection.rb
126
+ - lib/soundcloud9000/models/user.rb
127
+ - lib/soundcloud9000/time_helper.rb
128
+ - lib/soundcloud9000/ui/canvas.rb
129
+ - lib/soundcloud9000/ui/color.rb
130
+ - lib/soundcloud9000/ui/input.rb
131
+ - lib/soundcloud9000/ui/rect.rb
132
+ - lib/soundcloud9000/ui/table.rb
133
+ - lib/soundcloud9000/ui/view.rb
134
+ - lib/soundcloud9000/views/player_view.rb
135
+ - lib/soundcloud9000/views/splash.rb
136
+ - lib/soundcloud9000/views/tracks_table.rb
137
+ - soundcloud9000
138
+ - soundcloud9000.gemspec
139
+ - spec/controllers/track_controller_spec.rb
140
+ - spec/spec_helper.rb
141
+ homepage: http://www.github.com/sumanthratna/soundcloud9000
142
+ licenses:
143
+ - MIT
144
+ metadata: {}
145
+ post_install_message:
146
+ rdoc_options: []
147
+ require_paths:
148
+ - lib
149
+ required_ruby_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ required_rubygems_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ requirements: []
160
+ rubyforge_project:
161
+ rubygems_version: 2.5.2.3
162
+ signing_key:
163
+ specification_version: 4
164
+ summary: SoundCloud without the stupid CSS files
165
+ test_files: []