dhun 0.5.6 → 0.6.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/lib/dhun/server.rb CHANGED
@@ -1,50 +1,8 @@
1
- require 'eventmachine'
1
+ require 'rubygems'
2
2
  require 'daemons'
3
- module Dhun
4
- class Server
5
-
6
- attr_reader :logger
7
3
 
8
- def initialize(options)
9
- @options = options
10
- @socket = options[:socket]
11
- @logger = Logger.instance
12
- setup_signals
13
- end
14
-
15
- def start
16
- if @options[:daemonize]
17
- logger.log "Starting Dhun"
18
- exit if fork
19
- Process.setsid
20
- log_file = @options[:log] || @options[:default_log]
21
- exec("#{ENV['_']} start -l #{log_file} #{@options[:debug] ? "-D" : ""}")
22
- end
23
- logger.file = @options[:log] if @options[:log]
24
- logger.log "Starting Dhun"
25
- at_exit { remove_socket_file }
26
- EventMachine::run {
27
- EventMachine::start_server @socket, DhunServer
28
- }
29
- end
30
-
31
- def self.stop
32
- Logger.instance.log "Stopping Dhun"
33
- EventMachine.stop if EventMachine.reactor_running?
34
- exit
35
- end
36
-
37
- protected
38
- # Register signals:
39
- # * calls +stop+ to shutdown gracefully.
40
- def setup_signals
41
- trap('QUIT') { Server.stop }
42
- trap('INT') { Server.stop }
43
- trap('TERM') { Server.stop }
44
- end
45
-
46
- def remove_socket_file
47
- File.delete(@socket) if File.exist?(@socket)
48
- end
49
- end
50
- end
4
+ dhun_server = File.dirname(__FILE__)+"/dhun_server.rb"
5
+ Daemons.run(dhun_server,
6
+ :dir_mode => :normal,
7
+ :dir => '/tmp/'
8
+ )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dhun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Deepak Jois
@@ -9,9 +9,29 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-18 00:00:00 -08:00
12
+ date: 2010-01-12 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: riot
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.10.11
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: rr
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.10.5
34
+ version:
15
35
  - !ruby/object:Gem::Dependency
16
36
  name: eventmachine
17
37
  type: :runtime
@@ -42,6 +62,16 @@ dependencies:
42
62
  - !ruby/object:Gem::Version
43
63
  version: 1.0.10
44
64
  version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: thor
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 0.12.0
74
+ version:
45
75
  description:
46
76
  email: deepak.jois@gmail.com
47
77
  executables:
@@ -51,6 +81,7 @@ extensions:
51
81
  extra_rdoc_files: []
52
82
 
53
83
  files:
84
+ - CONTRIBUTORS
54
85
  - FIX.md
55
86
  - LICENSE.txt
56
87
  - README.md
@@ -65,9 +96,7 @@ files:
65
96
  - ext/player.c
66
97
  - ext/query.c
67
98
  - lib/dhun.rb
68
- - lib/dhun/command.rb
69
- - lib/dhun/controller.rb
70
- - lib/dhun/dhun_client.rb
99
+ - lib/dhun/client.rb
71
100
  - lib/dhun/dhun_server.rb
72
101
  - lib/dhun/handler.rb
73
102
  - lib/dhun/logger.rb
data/lib/dhun/command.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'json'
2
- module Dhun
3
- class Command
4
- attr_reader :commands, :arguments
5
-
6
- def initialize(command,arguments)
7
- @command = command
8
- @arguments = arguments
9
- end
10
-
11
- def to_json
12
- { "command" => @command, "arguments" => @arguments }.to_json
13
- end
14
- end
15
- end
@@ -1,160 +0,0 @@
1
- require 'json'
2
- module Dhun
3
- class Controller
4
-
5
- attr_accessor :options,:logger
6
-
7
- def initialize(options)
8
- @options = options
9
- @logger = Logger.instance
10
- end
11
-
12
- def start
13
- server = Server.new(@options)
14
- if DhunClient.is_dhun_server_running?(@options[:socket])
15
- puts "Dhun is already running"
16
- else
17
- server.start
18
- end
19
- end
20
-
21
- def stop
22
- send_command("stop")
23
- end
24
-
25
- def query(*args)
26
- abort_if_empty_args(args)
27
- q = Query.new(args)
28
- if q.is_valid?
29
- files = q.execute_spotlight_query
30
- puts(files.empty? ? "No Results Found" : "#{files.size} Results\n" + files.join("\n"))
31
- else
32
- puts "Invalid Query Syntax. Run dhun -h to see right syntax"
33
- end
34
- end
35
-
36
- def play(*args)
37
- abort_if_empty_args(args)
38
- resp = get_json_response("play", args)
39
- return unless resp
40
- # Process response
41
- case resp.success?
42
- when true
43
- puts resp[:message]
44
- # Print list of files
45
- print_list resp[:files]
46
- else
47
- puts resp[:message]
48
- end
49
- end
50
-
51
- def enqueue(*args)
52
- abort_if_empty_args(args)
53
- resp = get_json_response("enqueue",args)
54
- return unless resp
55
- # Process response
56
- case resp.success?
57
- when true
58
- puts resp[:message]
59
- # Print list of files
60
- print_list resp[:files]
61
- else
62
- puts resp[:message]
63
- end
64
- end
65
-
66
- def status
67
- resp = get_json_response("status")
68
- return unless resp
69
- puts resp[:message]
70
- if resp.success?
71
- now_playing = resp[:now_playing]
72
- queue = resp[:queue]
73
- puts "Now playing #{now_playing}" if now_playing
74
- if queue.empty?
75
- puts "Queue is empty"
76
- else
77
- print_list(queue)
78
- end
79
- end
80
- end
81
-
82
- def history
83
- resp = get_json_response("history")
84
- return unless resp
85
- puts resp[:message]
86
- print_list(resp[:history]) unless resp[:history].empty?
87
- end
88
-
89
- def next(skip_length=1)
90
- begin
91
- skip_length = Integer(skip_length)
92
- rescue ArgumentError => ex # Not a valid integer
93
- abort ex.message
94
- end
95
- resp = get_json_response("next",[skip_length])
96
- puts resp[:message] if resp
97
- end
98
-
99
- def prev(skip_length=1)
100
- begin
101
- skip_length = Integer(skip_length)
102
- rescue ArgumentError => ex # Not a valid integer
103
- abort ex.message
104
- end
105
- resp = get_json_response("prev",[skip_length])
106
- puts resp[:message] if resp
107
- end
108
-
109
-
110
- def pause
111
- resp = get_json_response("pause")
112
- puts resp[:message] if resp
113
- end
114
-
115
- def resume
116
- resp = get_json_response("resume")
117
- puts resp[:message] if resp
118
- end
119
-
120
- def shuffle
121
- resp = get_json_response("shuffle")
122
- return unless resp
123
- # Process response
124
- case resp.success?
125
- when true
126
- puts resp[:message]
127
- # Print list of files
128
- print_list resp[:queue]
129
- else
130
- puts resp[:message]
131
- end
132
- end
133
-
134
- protected
135
- def send_command(command,arguments=[])
136
- cmd = { "command" => command, "arguments" => arguments }.to_json
137
- client = DhunClient.new(@options)
138
- resp = client.send(cmd)
139
- end
140
-
141
- def get_json_response(command,args=[])
142
- begin
143
- resp = send_command(command,args)
144
- return Result.from_json_str(resp)
145
- rescue
146
- puts "Invalid Response From Server"
147
- logger.debug $!
148
- return nil
149
- end
150
- end
151
-
152
- def abort_if_empty_args(args)
153
- abort "You must pass in atleast one argument" if args.empty?
154
- end
155
-
156
- def print_list(list)
157
- list.each { |item| puts item }
158
- end
159
- end
160
- end
@@ -1,30 +0,0 @@
1
- require 'socket'
2
- require 'json'
3
- module Dhun
4
- class DhunClient
5
- def initialize(options)
6
- @options = options
7
- @socket = options[:socket]
8
- unless DhunClient.is_dhun_server_running?(@socket)
9
- raise "Dhun server is not running"
10
- end
11
- end
12
-
13
- def send(message)
14
- u = UNIXSocket.new(@socket)
15
- u.puts message
16
- resp = u.read
17
- u.close
18
- return resp
19
- end
20
-
21
- def self.is_dhun_server_running?(socket)
22
- begin
23
- u = UNIXSocket.new(socket)
24
- return true
25
- rescue StandardError => ex
26
- return false
27
- end
28
- end
29
- end
30
- end