dhun 0.5.6 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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