SkypeR 0.0.5 → 0.0.6

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/MIT-LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2007-200 Akimichi Tatsukawa
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
data/README CHANGED
@@ -7,6 +7,7 @@ SkypeR is the library which enables SkypeAPI connection via RBus.
7
7
  * Skype for Linux
8
8
  * RBus
9
9
  For more infomation, please refer to http://rbus.rubyforge.org/
10
+ * uuidtools
10
11
  * yaparc
11
12
 
12
13
  = Install & Preparation
data/bin/iskype.rb CHANGED
@@ -1,13 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift File.join(File.dirname(__FILE__))
2
+ #$:.unshift File.join(File.dirname(__FILE__))
3
3
 
4
4
  require 'rubygems'
5
- #require_gem 'yaparc'
6
5
  require 'yaparc'
7
6
  require 'readline'
8
7
  require 'optparse'
9
8
  require 'logger'
10
- require "lib/skyper.rb"
9
+ require "skyper.rb"
11
10
 
12
11
  module SkypeR
13
12
  LOGGER = nil
@@ -0,0 +1,522 @@
1
+ $:.unshift File.join(File.dirname(__FILE__))
2
+ require 'rubygems'
3
+ #require_gem 'yaparc'
4
+ require 'yaparc'
5
+ require "logger"
6
+
7
+
8
+ =begin
9
+ (insert-image-file "~/develop/ruby/skyper/docs/parser.png")
10
+ =end
11
+
12
+ module SkypeR
13
+
14
+
15
+ module Parser
16
+
17
+ class CommandBase < Yaparc::AbstractParser
18
+ attr_accessor :response
19
+ end
20
+
21
+ # <command_statement> := [<command_id>] <command>
22
+ class CommandStatement < CommandBase
23
+
24
+ def initialize
25
+ @parser = lambda do
26
+ Yaparc::SeqParser.new(Yaparc::ZeroOneParser.new(CommandID.new),
27
+ Command.new) do |command_id, command|
28
+ command
29
+ # if command_id == []
30
+ # {:command_id => nil, :command => command}
31
+ # else
32
+ # {:command_id => command_id, :command => command}
33
+ # end
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ # <command> := <name_command>
40
+ # | <get_command>
41
+ # | <search_command>
42
+ # | <set_command>
43
+ # | <call_command>
44
+ # | <voicemail_command>
45
+ # | <chat_command>
46
+ # | <history_command>
47
+ class Command < CommandBase
48
+ def initialize
49
+ @parser = lambda do
50
+ Yaparc::AltParser.new(
51
+ GetCommand.new,
52
+ SearchCommand.new,
53
+ SetCommand.new,
54
+ CallCommand.new,
55
+ VoicemailCommand.new,
56
+ ChatCommand.new,
57
+ HistoryCommand.new
58
+ )
59
+ end
60
+ end
61
+ end # of Command
62
+
63
+ # <get_command> := <get_user_command>
64
+ # | <get_profile_command>
65
+ # | <get_call_command>
66
+ # | <get_chat_chatmessages_command>
67
+ # | <get_chat_recentchatmessages_command>
68
+ class GetCommand < CommandBase
69
+ def initialize
70
+ @parser = lambda do
71
+ Yaparc::AltParser.new(
72
+ GetUserCommand.new,
73
+ GetUserstatusCommand.new,
74
+ GetProfileCommand.new,
75
+ GetCallCommand.new,
76
+ GetChatChatmessagesCommand.new
77
+ )
78
+ end
79
+ end
80
+ end
81
+
82
+
83
+ # <get_chat_chatmessages_command> := GET CHAT <chat_id> CHATMESSAGES
84
+ # <get_chat_chatmessages_response> := CHAT <chat_id> CHATMESSAGES <identifier_sequence>
85
+ class GetChatChatmessagesCommand < CommandBase
86
+ def initialize
87
+ @parser = lambda do
88
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("GET"),
89
+ Yaparc::Symbol.new("CHAT"),
90
+ ChatID.new,
91
+ Yaparc::Symbol.new("CHATMESSAGES")) do |_,_,chat_id,_|
92
+ {:command_instance => self, :chat_id => chat_id}
93
+ end
94
+ end
95
+ @response = GetChatChatmessagesResponse.new
96
+ end
97
+ end
98
+
99
+
100
+ # <get_chat_recentchatmessages_command> := GET CHAT <chat_id> RECENTCHATMESSAGES
101
+ # <get_chat_recentchatmessages_response> := CHAT <chat_id> RECENTCHATMESSAGES <identifier_sequence>
102
+ class GetChatRecentmessagesCommand < CommandBase
103
+ def initialize
104
+ @parser = lambda do
105
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("GET"),
106
+ Yaparc::Symbol.new("CHAT"),
107
+ ChatID.new,
108
+ Yaparc::Symbol.new("RECENTCHATMESSAGES")) do |_,_,chat_id,_|
109
+ {:command_instance => self, :chat_id => chat_id}
110
+ end
111
+ end
112
+ @response = GetChatRecentchatmessagesResponse.new
113
+ end
114
+ end
115
+
116
+
117
+ # <get_user_command> := GET USER <username> <user_property>
118
+ class GetUserCommand < CommandBase
119
+ def initialize
120
+ @parser = lambda do
121
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("GET"),
122
+ Yaparc::Symbol.new("USER"),
123
+ Username.new,
124
+ SkypeR::Parser::UserProperty.new) do |_,_,username,property|
125
+ {:command_instance => self, :username => username, :property => property}
126
+ end
127
+ end
128
+ @response = GetUserResponse.new
129
+ end
130
+ end
131
+
132
+ # <get_userstatus_command> := GET USERSTATUS
133
+ # <get_userstatus_response> := USERSTATUS <value>
134
+ class GetUserstatusCommand < CommandBase
135
+ def initialize
136
+ @parser = lambda do
137
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("GET"), Yaparc::Symbol.new("USERSTATUS"))
138
+ end
139
+ @response = GetUserstatusResponse.new
140
+ end
141
+ end
142
+
143
+ # <get_profile_command> := GET PROFILE <profile_property>
144
+ class GetProfileCommand < CommandBase
145
+ def initialize
146
+ @parser = lambda do
147
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("GET"),
148
+ Yaparc::Symbol.new("PROFILE"),
149
+ ProfileProperty.new) do |_,_,property|
150
+ {:command_instance => self, :property => property}
151
+ end
152
+ end
153
+ @response = GetProfileResponse.new
154
+ end
155
+ end
156
+
157
+ # <get_call_command> := GET CALL <call_id> <call_property>
158
+ class GetCallCommand < CommandBase
159
+ def initialize
160
+ @parser = lambda do
161
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("GET"),
162
+ Yaparc::Symbol.new("CALL"),
163
+ CallId.new,
164
+ SkypeR::Parser::CallProperty.new) do |_,_,call_id, property|
165
+ {:command_instance => self, :property => property, :call_id => call_id}
166
+ end
167
+ end
168
+ @response = GetCallResponse.new
169
+ end
170
+ end
171
+
172
+ # <search_command> := <search_friends_command>
173
+ # | <search_users_command>
174
+ # | <search_calls_command>
175
+ # | <search_activecalls_command>
176
+ # | <search_missedcalls_command>
177
+ # | <search_voicemails_command>
178
+ # | <search_chats_command>
179
+ # | <search_missedchats_command>
180
+ # | <search_activechats_command>
181
+ # | <search_recentchats_command>
182
+ # | <search_bookmarkedchats_command>
183
+ # | <search_chatmessages_command>
184
+ # | <search_missedchatmessages_command>
185
+ # | <search_userswaitingmyauthorization_command>
186
+ class SearchCommand < CommandBase
187
+ def initialize
188
+ @parser = lambda do
189
+ Yaparc::AltParser.new(
190
+ SearchUsersCommand.new,
191
+ SearchFriendsCommand.new,
192
+ SearchCallsCommand.new,
193
+ SearchActivecallsCommand.new,
194
+ SearchMissedcallsCommand.new,
195
+ SearchUserswaitingmyauthorizationCommand.new
196
+ )
197
+ end
198
+ end
199
+ end
200
+
201
+ # SEARCH USERS <target>
202
+ class SearchUsersCommand < CommandBase
203
+ def initialize
204
+ @parser = lambda do
205
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("SEARCH"),
206
+ Yaparc::Symbol.new("USERS"),
207
+ Target.new) do |_,_,target|
208
+ {:command_instance => self, :target => target}
209
+ end
210
+ end
211
+ @response = SearchUsersResponse.new
212
+ end
213
+ end
214
+
215
+ # <search_friends_command> := SEARCH FRIENDS
216
+ # <search_friends_response> := USERS [user[,user]*]
217
+ class SearchFriendsCommand < CommandBase
218
+ def initialize
219
+ @parser = lambda do
220
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("SEARCH"), Yaparc::Symbol.new("FRIENDS")) do |_,_|
221
+ {:command_instance => self}
222
+ end
223
+ end
224
+ @response = SearchFriendsResponse.new
225
+ end
226
+ end
227
+
228
+ # <search_calls_command> := SEARCH CALLS
229
+ # <search_calls_response> := CALLS [<identifier_sequence>]
230
+ class SearchCallsCommand < CommandBase
231
+ def initialize
232
+ @parser = lambda do
233
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("SEARCH"), Yaparc::Symbol.new("CALLS")) do |_,_|
234
+ {:command_instance => self}
235
+ end
236
+ end
237
+ @response = SearchCallsResponse.new
238
+ end
239
+ end
240
+
241
+ # <search_activecalls_command> := SEARCH ACTIVECALLS
242
+ # <search_activecalls_response> := CALLS [<identifier_sequence>]
243
+ class SearchActivecallsCommand < CommandBase
244
+ def initialize
245
+ @parser = lambda do
246
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("SEARCH"), Yaparc::Symbol.new("ACTIVECALLS")) do |_,_|
247
+ {:command_instance => self}
248
+ end
249
+ end
250
+ @response = SearchActivecallsResponse.new
251
+ end
252
+ end
253
+
254
+ # <search_missedcalls_command> := SEARCH MISSEDCALLS
255
+ # <search_missedcalls_response> := CALLS [<identifier_sequence>]
256
+ class SearchMissedcallsCommand < CommandBase
257
+ def initialize
258
+ @parser = lambda do
259
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("SEARCH"), Yaparc::Symbol.new("MISSEDCALLS")) do |_,_|
260
+ {:command_instance => self}
261
+ end
262
+ end
263
+ @response = SearchMissedcallsResponse.new
264
+ end
265
+ end
266
+
267
+ # <search_userswaitingmyauthorization_command> := SEARCH USERSWATINGMYAUTHORIZATION
268
+ # <search_userswaitingmyauthorization_response> := USERS [<identifier_sequence>]
269
+ class SearchUserswaitingmyauthorizationCommand < CommandBase
270
+ def initialize
271
+ @parser = lambda do
272
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("SEARCH"),
273
+ Yaparc::Symbol.new("USERSWATINGMYAUTHORIZATION")) do |_,_|
274
+ {:command_instance => self}
275
+ end
276
+ end
277
+ @response = SearchUserswaitingmyauthorizationResponse.new
278
+ end
279
+ end
280
+
281
+ # <set_command> := <set_call_inprogress_command>
282
+ # | <set_call_finished_command>
283
+ # | <set_call_onhold_command>
284
+ class SetCommand < CommandBase
285
+ def initialize
286
+ @parser = lambda do
287
+ Yaparc::AltParser.new(
288
+ SetCallInprogressCommand.new,
289
+ SetCallFinishedCommand.new,
290
+ SetCallOnholdCommand.new
291
+ )
292
+ end
293
+ end
294
+ end
295
+
296
+ # <set_call_onhold_command> := SET CALL <id> STATUS [ONHOLD|INPROGRESS]
297
+ class SetCallOnholdCommand < CommandBase
298
+ def initialize
299
+ @parser = lambda do
300
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("SET"),
301
+ Yaparc::Symbol.new("CALL"),
302
+ CallId.new,
303
+ Yaparc::Symbol.new("STATUS"),
304
+ Yaparc::AltParser.new(Yaparc::Symbol.new("INPROGRESS"),Yaparc::Symbol.new("ONHOLD"))
305
+ ) do |_,_,call_id,_,_|
306
+ {:command_instance => self, :call_id => call_id}
307
+ end
308
+ end
309
+ end
310
+ end
311
+
312
+ # <set_call_inprogress_command> := SET CALL <id> STATUS INPROGRESS
313
+ class SetCallInprogressCommand < CommandBase
314
+ def initialize
315
+ @parser = lambda do
316
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("SET"),
317
+ Yaparc::Symbol.new("CALL"),
318
+ CallId.new,
319
+ Yaparc::Symbol.new("STATUS"),
320
+ Yaparc::Symbol.new("INPROGRESS")) do |_,_,call_id,_,_|
321
+ {:command_instance => self, :call_id => call_id}
322
+ end
323
+ end
324
+ end
325
+ end
326
+
327
+ # <set_call_finished_command> := SET CALL <id> STATUS FINISHED
328
+ class SetCallFinishedCommand < CommandBase
329
+ def initialize
330
+ @parser = lambda do
331
+ Yaparc::SeqParser.new(Yaparc::Symbol.new("SET"),
332
+ Yaparc::Symbol.new("CALL"),
333
+ CallId.new,
334
+ Yaparc::Symbol.new("STATUS"),
335
+ Yaparc::Symbol.new("FINISHED")) do |_,_,call_id,_,_|
336
+ {:command_instance => self, :call_id => call_id}
337
+ end
338
+ end
339
+ end
340
+ end
341
+
342
+ # <call_command> := CALL <target>[, <target>]*
343
+ class CallCommand < CommandBase
344
+ def initialize
345
+ @parser = lambda do
346
+ Yaparc::SeqParser.new(
347
+ Yaparc::Symbol.new("CALL"),
348
+ Target.new,
349
+ Yaparc::ManyParser.new(
350
+ Yaparc::SeqParser.new(
351
+ Yaparc::Symbol.new(','),
352
+ Target.new) do |_, target|
353
+ [target]
354
+ end,
355
+ []
356
+ )
357
+ ) do |_,target,targets|
358
+ {:command_instance => self, :targets => [target] + targets}
359
+ end
360
+ end
361
+ end
362
+ end
363
+
364
+
365
+ # Send voicemail to user <target>
366
+ # <voicemail_command> := VOICEMAIL <target>
367
+ # <voicemail_response> := VOICEMAIL <id> STATUS <value>
368
+ class VoicemailCommand < CommandBase
369
+ def initialize
370
+ @parser = lambda do
371
+ Yaparc::SeqParser.new(
372
+ Yaparc::Symbol.new("VOICEMAIL"),
373
+ Target.new
374
+ ) do |_,target|
375
+ {:command_instance => self,:target => target}
376
+ end
377
+ end
378
+ @response = VoicemailResponse.new
379
+ end
380
+ end
381
+
382
+ # <chat_command> := <chat_create_command>
383
+ class ChatCommand < CommandBase
384
+ def initialize
385
+ @parser = lambda do
386
+ ChatCreateCommand.new
387
+ end
388
+ end
389
+ end
390
+
391
+ # <chat_create_command> := CHAT CREATE <target>[, <target>]*
392
+ # <chat_create_response> := CHAT <chat_id> STATUS <value>
393
+ # <chat_message_command> := CHATMESSAGE <chat_id> <message>
394
+ # <chat_message_response> := CHATMESSAGE <id> STATUS SENDING
395
+ class ChatCreateCommand < CommandBase
396
+ def initialize
397
+ @parser = lambda do
398
+ Yaparc::SeqParser.new(
399
+ Yaparc::Symbol.new("CHAT"),
400
+ Yaparc::Symbol.new("CREATE"),
401
+ Target.new,
402
+ Yaparc::ManyParser.new(
403
+ Yaparc::SeqParser.new(Yaparc::Symbol.new(','),
404
+ Target.new) do |_, target|
405
+ [target]
406
+ end,
407
+ []
408
+ )
409
+ ) do |_,_,target,targets|
410
+ {:command_instance => self, :targets => [target] + targets}
411
+ end
412
+ end
413
+ @response = ChatCreateResponse.new
414
+ end
415
+ end
416
+
417
+ # <history_command> := <clear_chathistory_command>
418
+ # | <clear_voicemailhistory_command>
419
+ class HistoryCommand < CommandBase
420
+ def initialize
421
+ @parser = lambda do
422
+ Yaparc::AltParser.new(
423
+ ClearChathistoryCommand.new,
424
+ ClearVoicemailhistoryCommand.new
425
+ )
426
+ end
427
+ end
428
+ end
429
+
430
+ # <clear_chathistory_command> := CLEAR CHATHISTORY
431
+ class ClearChathistoryCommand < CommandBase
432
+ def initialize
433
+ @parser = lambda do
434
+ Yaparc::SeqParser.new(
435
+ Yaparc::Symbol.new('CLEAR'),
436
+ Yaparc::Symbol.new('CHATHISTORY')
437
+ ) do |_,_|
438
+ {:command_instance => self}
439
+ end
440
+ end
441
+ end
442
+ end
443
+
444
+ # <clear_voicemailhistory_command> := CLEAR VOICEMAILHISTORY
445
+ class ClearVoicemailhistoryCommand < CommandBase
446
+ def initialize
447
+ @parser = lambda do
448
+ Yaparc::SeqParser.new(
449
+ Yaparc::Symbol.new('CLEAR'),
450
+ Yaparc::Symbol.new('VOICEMAILHISTORY')
451
+ ) do |_,_|
452
+ {:command_instance => self}
453
+ end
454
+ end
455
+ end
456
+ end
457
+
458
+ # <clear_callhistory_command> := CLEAR CALLHISTORY
459
+ class ClearCallhistoryCommand < CommandBase
460
+ def initialize
461
+ @parser = lambda do
462
+ Yaparc::SeqParser.new(
463
+ Yaparc::Symbol.new('CLEAR'),
464
+ Yaparc::Symbol.new('CALLHISTORY')
465
+ )do |_,_|
466
+ {:command_instance => self}
467
+ end
468
+ end
469
+ end
470
+ end
471
+
472
+
473
+ # <target> := <username>
474
+ # | <pstn> # {PSTN phone number}
475
+ # | <speed dial code>
476
+ # <username> := {Skype username}
477
+ # <speed dial code> := [a-zA-Z][1-2]
478
+ class Target < CommandBase
479
+ def initialize
480
+ @parser = lambda do
481
+ Yaparc::AltParser.new(Username.new,
482
+ PSTN.new,
483
+ SpeedDialCode.new)
484
+ end
485
+ end
486
+ end
487
+
488
+ class PSTN < CommandBase
489
+ def initialize
490
+ @parser = lambda do
491
+ Yaparc::RegexParser.new(/\+[a-zA-Z0-9][a-zA-Z0-9\-]*/)
492
+ end
493
+ end
494
+ end
495
+
496
+ class SpeedDialCode < CommandBase
497
+ def initialize
498
+ @parser = lambda do
499
+ Yaparc::RegexParser.new(/[a-zA-Z][1-2]/)
500
+ end
501
+ end
502
+ end
503
+
504
+ class Username < CommandBase
505
+ def initialize
506
+ @parser = lambda do
507
+ Yaparc::Token.new(Yaparc::RegexParser.new(/[a-zA-Z0-9]+/))
508
+ end
509
+ end
510
+ end
511
+
512
+ class CallId < CommandBase
513
+ def initialize
514
+ @parser = lambda do
515
+ Yaparc::Natural.new
516
+ end
517
+ end
518
+ end
519
+
520
+
521
+ end # of Parser
522
+ end # of Skyper