Ruby4Skype 0.2.1
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/skypeapi/application.rb +415 -0
- data/lib/skypeapi/call.rb +220 -0
- data/lib/skypeapi/chat.rb +186 -0
- data/lib/skypeapi/chatmember.rb +33 -0
- data/lib/skypeapi/chatmessage.rb +64 -0
- data/lib/skypeapi/event.rb +46 -0
- data/lib/skypeapi/filetransfer.rb +31 -0
- data/lib/skypeapi/group.rb +81 -0
- data/lib/skypeapi/menuitem.rb +64 -0
- data/lib/skypeapi/message.rb +46 -0
- data/lib/skypeapi/object.rb +122 -0
- data/lib/skypeapi/os.rb +423 -0
- data/lib/skypeapi/profile.rb +124 -0
- data/lib/skypeapi/sharefunctions.rb +123 -0
- data/lib/skypeapi/sms.rb +84 -0
- data/lib/skypeapi/user.rb +110 -0
- data/lib/skypeapi/voicemail.rb +60 -0
- data/lib/skypeapi.rb +569 -0
- metadata +64 -0
data/lib/skypeapi.rb
ADDED
@@ -0,0 +1,569 @@
|
|
1
|
+
require "forwardable.rb"
|
2
|
+
require "skypeApi/os.rb"
|
3
|
+
require "skypeApi/shareFunctions.rb"
|
4
|
+
require "skypeApi/object.rb"
|
5
|
+
|
6
|
+
require "skypeApi/user.rb"
|
7
|
+
require "skypeApi/profile.rb"
|
8
|
+
require "skypeApi/call.rb"
|
9
|
+
require "skypeApi/message.rb"
|
10
|
+
require "skypeApi/chat.rb"
|
11
|
+
require "skypeApi/chatmessage.rb"
|
12
|
+
require "skypeApi/chatmember.rb"
|
13
|
+
require "skypeApi/voicemail.rb"
|
14
|
+
require "skypeApi/sms.rb"
|
15
|
+
require "skypeApi/application.rb"
|
16
|
+
require "skypeApi/group.rb"
|
17
|
+
require "skypeApi/filetransfer.rb"
|
18
|
+
require "skypeApi/event.rb"
|
19
|
+
require "skypeApi/menuitem.rb"
|
20
|
+
|
21
|
+
class SkypeAPIError < StandardError
|
22
|
+
class Attach < SkypeAPIError; end
|
23
|
+
class Connct < SkypeAPIError; end
|
24
|
+
class Reconnect < SkypeAPIError; end
|
25
|
+
class TimeOut < SkypeAPIError; end
|
26
|
+
class API < SkypeAPIError; end
|
27
|
+
class NotImprement < SkypeAPIError; end
|
28
|
+
end
|
29
|
+
|
30
|
+
module SkypeAPI
|
31
|
+
VERSION = "0.2.1"
|
32
|
+
|
33
|
+
include SkypeAPI::Object
|
34
|
+
extend Notify
|
35
|
+
extend Get
|
36
|
+
extend SkypeAPI::ShareFunctions
|
37
|
+
|
38
|
+
P2M = Hash.new{|hash,key| hash[key] = key}
|
39
|
+
V2O = Hash.new
|
40
|
+
|
41
|
+
def self.init os=RUBY_PLATFORM.downcase
|
42
|
+
unless @inited
|
43
|
+
case os
|
44
|
+
when /mswin(?!ce)|mingw|cygwin|bccwin/
|
45
|
+
@os = SkypeAPI::OS::Windows.new
|
46
|
+
when /(mac)/
|
47
|
+
@os = SkypeAPI::OS::Mac.new
|
48
|
+
when /(linux)/
|
49
|
+
@os = SkypeAPI::OS::Linux.new
|
50
|
+
else
|
51
|
+
raise SkypeAPIError::NotImplementError,"#{os} is unknown or not support OS"
|
52
|
+
end
|
53
|
+
|
54
|
+
#SkypeAPI�̓��W���[���̂��߂ɁA�f���Q�[�^�[�ŃN���X���\�b�h�Ƃ��Ē�`�B
|
55
|
+
#SkypeAPI�����̃��\�b�h�͑S�ăN���X���\�b�h�Ȃ̂ŃA�N�Z�X�\.
|
56
|
+
self.class.extend Forwardable
|
57
|
+
self.class.def_delegators(:@os,
|
58
|
+
:sendCMD,
|
59
|
+
:setEvent,
|
60
|
+
:addEvent,
|
61
|
+
:delEvent,
|
62
|
+
:replaceEvent,
|
63
|
+
:getEventm,
|
64
|
+
:existEvent?,
|
65
|
+
:attach,
|
66
|
+
:attachWait,
|
67
|
+
:polling,
|
68
|
+
:wait,
|
69
|
+
:close
|
70
|
+
)
|
71
|
+
|
72
|
+
#�O���p�B
|
73
|
+
self.class.__send__(:define_method, :os, Proc.new{@os})
|
74
|
+
|
75
|
+
@notify = Hash.new
|
76
|
+
@os.addNotify nil, method(:notified)
|
77
|
+
objectsInit
|
78
|
+
|
79
|
+
@inited = true
|
80
|
+
else
|
81
|
+
raise SkypeAPIErrorm,'init at onece'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.new
|
86
|
+
init
|
87
|
+
self
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.notified msg
|
91
|
+
skypeProperty = nil
|
92
|
+
propertyReg = '(?:' + [
|
93
|
+
'CONTACTS FOCUSED',
|
94
|
+
'RINGTONE 1 STATUS',
|
95
|
+
'RINGTONE 1',
|
96
|
+
'[^ ]+'
|
97
|
+
].join(')|(?:') + ')'
|
98
|
+
|
99
|
+
if msg =~ /^(#{propertyReg}) (.+)$/m
|
100
|
+
skypeProperty = $1; value = $2
|
101
|
+
property = self::P2M[skypeProperty].to_s.downcase.to_sym if self::P2M[skypeProperty].class == Symbol
|
102
|
+
value = self::V2O[skypeProperty].call value if self::V2O[skypeProperty]
|
103
|
+
|
104
|
+
if @notify[nil]
|
105
|
+
@notify[nil][nil].call property, value if @notify[nil][nil]
|
106
|
+
@notify[nil][value].call property if @notify[nil][value]
|
107
|
+
end
|
108
|
+
if @notify[property]
|
109
|
+
@notify[property][nil].call value if @notify[property][nil]
|
110
|
+
@notify[property][value].call if @notify[property][value]
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.objectsInit
|
116
|
+
[User,Profile,Call,Message,Chat,ChatMessage,ChatMember,VoiceMail,SMS,Application,Group,FileTransfer,Event,MenuItem].each do |klass|
|
117
|
+
@os.addNotify /^#{klass::OBJECT_NAME} (.+)$/m, klass.method(:notified)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def self.User() User ;end
|
122
|
+
|
123
|
+
def self.user(id) User.new(id) ; end
|
124
|
+
|
125
|
+
def self.Call() Call ; end
|
126
|
+
|
127
|
+
def self.call(id) Call.new(id) ; end
|
128
|
+
|
129
|
+
def self.Profile() Profile.new nil ; end
|
130
|
+
|
131
|
+
def self.profile() Profile.new nil ; end
|
132
|
+
|
133
|
+
def self.Chat() Chat ; end
|
134
|
+
|
135
|
+
def self.chat(id) Chat.new(id) ; end
|
136
|
+
|
137
|
+
def self.ChatMessage() ChatMessage ; end
|
138
|
+
|
139
|
+
def self.chatMessage(id) ChatMessage.new(id) ; end
|
140
|
+
|
141
|
+
def self.ChatMember() ChatMember ; end
|
142
|
+
|
143
|
+
def self.chatMember(id) ChatMember.new(id) ; end
|
144
|
+
|
145
|
+
def self.Message() Message ; end
|
146
|
+
|
147
|
+
def self.message(id) Message.new(id) ; end
|
148
|
+
|
149
|
+
def self.VoiceMail() VoiceMail ; end
|
150
|
+
|
151
|
+
def self.voiceMail(id)VoiceMail.new(id) ; end
|
152
|
+
|
153
|
+
def self.SMS() SMS ; end
|
154
|
+
|
155
|
+
def self.sms(id) SMS.new(id) ; end
|
156
|
+
|
157
|
+
def self.Application() Application ; end
|
158
|
+
|
159
|
+
def self.application(id) Application.new(id) ; end
|
160
|
+
|
161
|
+
def self.Group() Group ; end
|
162
|
+
|
163
|
+
def self.group(id) Group.new(id) ; end
|
164
|
+
|
165
|
+
def self.FileTransfer() FileTransfer ; end
|
166
|
+
|
167
|
+
def self.fileTransfer(id) FileTransfer.new(id) ; end
|
168
|
+
|
169
|
+
def self.Event() Event ; end
|
170
|
+
|
171
|
+
def self.event(id) Event.new(id) ; end
|
172
|
+
|
173
|
+
def self.MenuItem() MenuItem ; end
|
174
|
+
|
175
|
+
def self.menuItem(id) MenuItem.new(id) ; end
|
176
|
+
|
177
|
+
#General
|
178
|
+
|
179
|
+
getter :SkypeVersion, 'SKYPEVERSION'
|
180
|
+
|
181
|
+
getter :CurrentUserHandle, 'CURRENTUSERHANDLE'
|
182
|
+
|
183
|
+
getter :UserStatus, 'USERSTATUS'
|
184
|
+
|
185
|
+
def self.setUserStatus(status) sendSet "USERSTATUS", status ; end
|
186
|
+
|
187
|
+
def self.getPrivilege(privilege) sendGet("PRIVILEGE #{privilege}")._flag ; end
|
188
|
+
notice :Privilege, 'PRIVILEGE'
|
189
|
+
# privilege SkypeOut | SkypeIn | VoiceMail
|
190
|
+
|
191
|
+
getter :PredictiveDialerCountry, 'PREDICTIVE_DIALER_COUNTRY'
|
192
|
+
|
193
|
+
getter :Connstatus, 'CONNSTATUS'
|
194
|
+
|
195
|
+
getter :AudioIn, 'AUDIO_IN'
|
196
|
+
|
197
|
+
def self.setAudioIn(device) sendSet "AUDIO_IN", device ; end
|
198
|
+
|
199
|
+
getter :AudioOut, 'AUDIO_OUT'
|
200
|
+
|
201
|
+
def self.setAudioOut(device) sendSet "AUDIO_OUT", device ; end
|
202
|
+
|
203
|
+
getter :Ringer, 'RINGER'
|
204
|
+
|
205
|
+
def self.setRinger(device) sendSet("RINGER", device) ; end
|
206
|
+
|
207
|
+
getter :Mute, 'MUTE' do |str|
|
208
|
+
str._flag
|
209
|
+
end
|
210
|
+
|
211
|
+
def self.setMute(flag) sendSet("MUTE", flag._swi) ; end
|
212
|
+
|
213
|
+
def self.getAvatar(file, num=1) sendGet("AVATAR #{num} #{file}") ; end
|
214
|
+
notice :Avator, 'AVATOR'
|
215
|
+
#?
|
216
|
+
|
217
|
+
def self.setAvatar(file, idx="", num=1)
|
218
|
+
sendSet("AVATAR", "#{num} #{file}#{idx.empty? ? '' : ':'+idx.to_s}").split(' ')[1]
|
219
|
+
end
|
220
|
+
|
221
|
+
def self.getRingtone(id=1) sendGet("RINGTONE #{id}") ; end
|
222
|
+
|
223
|
+
def self.setRingtone(file, idx="", id=1) sendSet("RINGTONE","#{id} #{file}:#{idx}") ; end
|
224
|
+
|
225
|
+
notice :Ringtone, "RINGTONE 1" do |str|
|
226
|
+
num, file = str.split(' ',2)
|
227
|
+
return num.to_i, file
|
228
|
+
end
|
229
|
+
#?
|
230
|
+
|
231
|
+
def self.getRingtoneStatus(id=1)
|
232
|
+
sendCMD("GET RINGTONE #{id} STATUS") =~ /RINGTONE #{id} ((ON)|(OFF))/
|
233
|
+
$2._flag
|
234
|
+
end
|
235
|
+
|
236
|
+
notice :RingtoneStatus, "RINGTONE 1 STATUS" do |str|
|
237
|
+
str._flag
|
238
|
+
end
|
239
|
+
#?
|
240
|
+
|
241
|
+
def self.setRingtoneStatus(flag, id=1)
|
242
|
+
sendCMD("SET RINGTONE #{id} STATUS #{flag._swi}") =~ /RINGTONE #{id} ((ON)|(OFF))/
|
243
|
+
$2._flag
|
244
|
+
end
|
245
|
+
|
246
|
+
getter :PCSpeaker, 'PCSPEAKER' do |str|
|
247
|
+
str._flag
|
248
|
+
end
|
249
|
+
|
250
|
+
def self.setPCSpeaker(flag) sendSet("PCSPEAKER", flag._swi) ; end
|
251
|
+
|
252
|
+
getter :AGC, 'AGC' do |str|
|
253
|
+
str._flag
|
254
|
+
end
|
255
|
+
|
256
|
+
def self.setAGC(flag) sendSet("AGC", flag._swi) ; end
|
257
|
+
|
258
|
+
getter :AEC, 'AEC' do |str|
|
259
|
+
str._flag
|
260
|
+
end
|
261
|
+
|
262
|
+
def self.setAEC(flag) sendSet("AEC", flag._swi) ; end
|
263
|
+
|
264
|
+
def self.resetIdleTimer() sendCMD("RESETIDLETIMER") == "RESETIDLETIMER" ; end
|
265
|
+
notice :ResetIdleTimer, 'RESETIDLETIMER' #?
|
266
|
+
|
267
|
+
getter :AutoAway ,'AUTOAWAY' do |str|
|
268
|
+
str._flag
|
269
|
+
end
|
270
|
+
|
271
|
+
def self.setAutoAway(flag) sendSet('AUTOAWAY', flag._swi) ; end
|
272
|
+
|
273
|
+
getter :VideoIn, 'VIDEO_IN'
|
274
|
+
|
275
|
+
def self.setVideoIn(device) sendSet("VIDEO_IN", device) ; end
|
276
|
+
|
277
|
+
def self.ping waitLimit=nil
|
278
|
+
if waitLimit
|
279
|
+
sendBlock "PING", waitLimit
|
280
|
+
else
|
281
|
+
sendCMD("PING") == "PONG"
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
#UserInterFace
|
286
|
+
def self.focus() sendCMD('FOCUS') == 'FOCUS' ; end
|
287
|
+
|
288
|
+
def self.minimize() sendCMD('MINIMIZE') == 'MINIMIZE' ; end
|
289
|
+
|
290
|
+
getter :WindowState, 'WINDOWSTATE'
|
291
|
+
|
292
|
+
def self.setWindowState(state) sendSet("WINDOWSTATE", state); end
|
293
|
+
|
294
|
+
def self.open prop, *value
|
295
|
+
"OPEN #{prop} #{value.join(' ')}".rstrip == sendCMD("OPEN #{prop} #{value.join(' ')}")
|
296
|
+
end
|
297
|
+
|
298
|
+
def self.openVideoTest id=''
|
299
|
+
open 'VIDEOTEST', id
|
300
|
+
end
|
301
|
+
|
302
|
+
def self.openVoiceMail id
|
303
|
+
open 'VOICEMAIL', id
|
304
|
+
end
|
305
|
+
|
306
|
+
def self.openAddAFriend user=''
|
307
|
+
open 'ADDAFRIEND', user.to_s
|
308
|
+
end
|
309
|
+
|
310
|
+
def self.openIM user, msg=''
|
311
|
+
open 'IM', user.to_s, msg
|
312
|
+
end
|
313
|
+
|
314
|
+
def self.openChat chat
|
315
|
+
open 'CHAT', chat
|
316
|
+
end
|
317
|
+
|
318
|
+
def self.openFileTransfer users, path=nil
|
319
|
+
open 'FILETRANSFER', "#{users.join(', ')}",path ? "IN #{path}" : ''
|
320
|
+
end
|
321
|
+
|
322
|
+
def self.openLiveTab
|
323
|
+
open 'LIVETAB'
|
324
|
+
end
|
325
|
+
|
326
|
+
def self.openProfile
|
327
|
+
open 'PROFILE'
|
328
|
+
end
|
329
|
+
|
330
|
+
def self.openUserInfo user
|
331
|
+
open 'USERINFO', user.to_s
|
332
|
+
end
|
333
|
+
|
334
|
+
def self.openConference
|
335
|
+
open 'CONFERENCE'
|
336
|
+
end
|
337
|
+
|
338
|
+
def self.openSearch
|
339
|
+
open 'SEARCH'
|
340
|
+
end
|
341
|
+
|
342
|
+
def self.openOptions page=''
|
343
|
+
open 'OPTIONS', page
|
344
|
+
end
|
345
|
+
|
346
|
+
def self.openCallHistory
|
347
|
+
open 'CALLHISTORY'
|
348
|
+
end
|
349
|
+
|
350
|
+
def self.openContacts
|
351
|
+
open 'CONTACTS'
|
352
|
+
end
|
353
|
+
|
354
|
+
def self.openDialPad
|
355
|
+
open 'DIALPAD'
|
356
|
+
end
|
357
|
+
|
358
|
+
def self.openSendContacts *users
|
359
|
+
open 'SENDCONTACTS', users.join(' ')
|
360
|
+
end
|
361
|
+
|
362
|
+
def self.openBlockedUsers
|
363
|
+
open 'BLOCKEDUSERS'
|
364
|
+
end
|
365
|
+
|
366
|
+
def self.openImportContacts
|
367
|
+
open 'IMPORTCONTACTS'
|
368
|
+
end
|
369
|
+
|
370
|
+
def self.openGettingStarted
|
371
|
+
open 'GETTINGSTARTED'
|
372
|
+
end
|
373
|
+
|
374
|
+
def self.openAuthorization handle
|
375
|
+
open 'AUTHORIZATION', handle
|
376
|
+
end
|
377
|
+
|
378
|
+
def self.BTNPressed key
|
379
|
+
sendEcho "BTN_PRESSED #{key}"
|
380
|
+
end
|
381
|
+
|
382
|
+
def self.BTNReleased key
|
383
|
+
sendEcho "BTN_RELEASED #{key}"
|
384
|
+
end
|
385
|
+
|
386
|
+
getter :ContactsFocused, 'CONTACTS FOCUSED' do |str|
|
387
|
+
user str
|
388
|
+
end
|
389
|
+
#nitify?
|
390
|
+
|
391
|
+
getter :UILanguage, 'UI_LANGUAGE'
|
392
|
+
|
393
|
+
def self.setUILanguage(lang) sendSet("UI_LANGUAGE", lang); end
|
394
|
+
|
395
|
+
getter :WallPaper, 'WALLPAPER'
|
396
|
+
|
397
|
+
def self.setWallPaper(file) sendSet('WALLPAPER', file) ; end
|
398
|
+
|
399
|
+
def self.setSilentMode(flag) sendSet('SILENT_MODE', flag._swi)._flag ; end
|
400
|
+
|
401
|
+
#Search
|
402
|
+
|
403
|
+
def self.search prop, preffix=prop, val=''
|
404
|
+
ret = sendCMD "SEARCH #{prop} #{val}"
|
405
|
+
ret =~ /^#{preffix} (.+)$/
|
406
|
+
if $1
|
407
|
+
$1.split(', ')
|
408
|
+
else
|
409
|
+
[]
|
410
|
+
end
|
411
|
+
end
|
412
|
+
|
413
|
+
def self.searchFriends
|
414
|
+
search('FRIENDS','USERS').map do |handle|
|
415
|
+
user(handle)
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
419
|
+
def self.searchUsers target
|
420
|
+
search('USERS','USERS',target).map do |handle|
|
421
|
+
user(handle)
|
422
|
+
end
|
423
|
+
end
|
424
|
+
|
425
|
+
def self.searchCalls target
|
426
|
+
search('CALLS','CALLS',target).map do |id|
|
427
|
+
call(id)
|
428
|
+
end
|
429
|
+
end
|
430
|
+
|
431
|
+
def self.searchActiveCalls
|
432
|
+
search('ACTIVECALLS','CALLS').map do |id|
|
433
|
+
call(id)
|
434
|
+
end
|
435
|
+
end
|
436
|
+
|
437
|
+
def self.searchMissedCalls
|
438
|
+
search('MISSEDCALLS','CALLS').map do |id|
|
439
|
+
call(id)
|
440
|
+
end
|
441
|
+
end
|
442
|
+
|
443
|
+
def self.searchSMSs
|
444
|
+
search('SMSS').map do |id|
|
445
|
+
sms(id)
|
446
|
+
end
|
447
|
+
end
|
448
|
+
|
449
|
+
def self.searchMissedSMSs
|
450
|
+
search('MISSEDSMSS','SMSS').map do |id|
|
451
|
+
sms(id)
|
452
|
+
end
|
453
|
+
end
|
454
|
+
|
455
|
+
def self.searchVoiceMails
|
456
|
+
search('VOICEMAILS').map do |id|
|
457
|
+
voiceMail(id)
|
458
|
+
end
|
459
|
+
end
|
460
|
+
|
461
|
+
def self.searchMissedVoiceMails
|
462
|
+
search('MISSEDVOICEMAILS','VOICEMAILS').map do |id|
|
463
|
+
voiceMail id
|
464
|
+
end
|
465
|
+
end
|
466
|
+
|
467
|
+
def self.searchMessages(target='')
|
468
|
+
search('MESSAGES', 'MESSAGES', target).map do |id|
|
469
|
+
message id
|
470
|
+
end
|
471
|
+
end
|
472
|
+
|
473
|
+
def self.searchMissedMessages
|
474
|
+
search('MISSEDMESSAGES','MESSAGES').map do |id|
|
475
|
+
message id
|
476
|
+
end
|
477
|
+
end
|
478
|
+
|
479
|
+
def self.searchChats
|
480
|
+
search('CHATS').map do |id|
|
481
|
+
chat id
|
482
|
+
end
|
483
|
+
end
|
484
|
+
|
485
|
+
def self.searchActiveChats
|
486
|
+
search('ACTIVECHATS','CHATS').map do |id|
|
487
|
+
chat id
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
def self.searchMissedChats
|
492
|
+
search('MISSEDCHATS','CHATS').map do |id|
|
493
|
+
chat id
|
494
|
+
end
|
495
|
+
end
|
496
|
+
|
497
|
+
def self.searchRecentChats
|
498
|
+
search('RECENTCHATS','CHATS').map do |id|
|
499
|
+
chat id
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
503
|
+
def self.searchBookMarkedChats
|
504
|
+
search('BOOKMARKEDCHATS','CHATS').map do |id|
|
505
|
+
chat id
|
506
|
+
end
|
507
|
+
end
|
508
|
+
|
509
|
+
def self.searchChatMessages val=''
|
510
|
+
search('CHATMESSAGES','CHATMESSAGES',val).map do |id|
|
511
|
+
chatMessage id
|
512
|
+
end
|
513
|
+
end
|
514
|
+
|
515
|
+
def self.searchMissedChatMessages
|
516
|
+
search('MISSEDCHATMESSAGES','CHATMESSAGES').map do |id|
|
517
|
+
chatMessage id
|
518
|
+
end
|
519
|
+
end
|
520
|
+
|
521
|
+
def self.searchUsersWaitingMyAuthorization
|
522
|
+
search('USERSWAITINGMYAUTHORIZATION','USERS').map do |handle|
|
523
|
+
user handle
|
524
|
+
end
|
525
|
+
end
|
526
|
+
|
527
|
+
def self.searchGroups type=''
|
528
|
+
search('GROUPS','GROUPS',type).map do |id|
|
529
|
+
group id
|
530
|
+
end
|
531
|
+
end
|
532
|
+
|
533
|
+
def self.searchFileTransfers
|
534
|
+
search('FILETRANSFERS').map do |id|
|
535
|
+
fileTransfer id
|
536
|
+
end
|
537
|
+
end
|
538
|
+
|
539
|
+
def self.searchActiveFileTransfers
|
540
|
+
search('ACTIVEFILETRANSFERS','FILETRANSFERS').map do |id|
|
541
|
+
fileTransfer id
|
542
|
+
end
|
543
|
+
end
|
544
|
+
|
545
|
+
#History
|
546
|
+
|
547
|
+
def self.clearChatHistory() sendCMD('CLEAR CHATHISTORY') == 'CLEAR CHATHISTORY' ; end
|
548
|
+
|
549
|
+
def self.clearVoicemailHistory() sendCMD('CLEAR VOICEMAILHISTORY') == 'CLEAR VOICEMAILHISTORY' ; end
|
550
|
+
|
551
|
+
def self.clearCallHistory(type, handle='')
|
552
|
+
sendCMD("CLEAR CALLHISTORY #{type} #{handle}") == "CLEAR CALLHISTORY #{type} #{handle}".rstrip
|
553
|
+
end
|
554
|
+
|
555
|
+
notice :CallHistoryChanged, 'CALLHISTORYCHANGED'
|
556
|
+
notice :IMHistoryChanged, 'IMHISTORYCHANGED'
|
557
|
+
|
558
|
+
#private :notified, :open, :search
|
559
|
+
#obs
|
560
|
+
|
561
|
+
#def openApplication appName
|
562
|
+
# return A2A.new(appName,self)
|
563
|
+
#end
|
564
|
+
|
565
|
+
#def openExtendApplication appName
|
566
|
+
# return A2AEx.new(appName,self)
|
567
|
+
#end
|
568
|
+
end
|
569
|
+
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.2
|
3
|
+
specification_version: 1
|
4
|
+
name: Ruby4Skype
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.2.1
|
7
|
+
date: 2008-02-01 00:00:00 +09:00
|
8
|
+
summary: SkypeAPI wrapper
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: bopper@kf7.so-net.ne.jp
|
12
|
+
homepage: http://rubyforge.org/projects/skyperapper/
|
13
|
+
rubyforge_project: Ruby4Skype
|
14
|
+
description:
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: false
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- bopper
|
31
|
+
files:
|
32
|
+
- lib/skypeapi
|
33
|
+
- lib/skypeapi/application.rb
|
34
|
+
- lib/skypeapi/call.rb
|
35
|
+
- lib/skypeapi/chat.rb
|
36
|
+
- lib/skypeapi/chatmember.rb
|
37
|
+
- lib/skypeapi/chatmessage.rb
|
38
|
+
- lib/skypeapi/event.rb
|
39
|
+
- lib/skypeapi/filetransfer.rb
|
40
|
+
- lib/skypeapi/group.rb
|
41
|
+
- lib/skypeapi/menuitem.rb
|
42
|
+
- lib/skypeapi/message.rb
|
43
|
+
- lib/skypeapi/object.rb
|
44
|
+
- lib/skypeapi/os.rb
|
45
|
+
- lib/skypeapi/profile.rb
|
46
|
+
- lib/skypeapi/sharefunctions.rb
|
47
|
+
- lib/skypeapi/sms.rb
|
48
|
+
- lib/skypeapi/user.rb
|
49
|
+
- lib/skypeapi/voicemail.rb
|
50
|
+
- lib/skypeapi.rb
|
51
|
+
test_files: []
|
52
|
+
|
53
|
+
rdoc_options: []
|
54
|
+
|
55
|
+
extra_rdoc_files: []
|
56
|
+
|
57
|
+
executables: []
|
58
|
+
|
59
|
+
extensions: []
|
60
|
+
|
61
|
+
requirements:
|
62
|
+
- swin
|
63
|
+
dependencies: []
|
64
|
+
|