Ruby4Skype 0.2.3 → 0.3.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.
Files changed (43) hide show
  1. data/LICENSE +3 -0
  2. data/README +14 -0
  3. data/Rakefile +67 -0
  4. data/lib/skypeapi.rb +570 -509
  5. data/lib/skypeapi/application.rb +79 -77
  6. data/lib/skypeapi/call.rb +243 -230
  7. data/lib/skypeapi/chat.rb +162 -172
  8. data/lib/skypeapi/chatmember.rb +26 -28
  9. data/lib/skypeapi/chatmessage.rb +81 -65
  10. data/lib/skypeapi/error.rb +8 -0
  11. data/lib/skypeapi/event.rb +25 -26
  12. data/lib/skypeapi/filetransfer.rb +47 -28
  13. data/lib/skypeapi/group.rb +72 -73
  14. data/lib/skypeapi/menuitem.rb +44 -44
  15. data/lib/skypeapi/message.rb +39 -41
  16. data/lib/skypeapi/object.rb +246 -82
  17. data/lib/skypeapi/os/etc.rb +48 -98
  18. data/lib/skypeapi/os/mac.rb +92 -4
  19. data/lib/skypeapi/os/notifier.rb +31 -0
  20. data/lib/skypeapi/os/window_event_queue.rb +198 -0
  21. data/lib/skypeapi/os/window_messagehandler.rb +120 -0
  22. data/lib/skypeapi/os/windows.rb +170 -306
  23. data/lib/skypeapi/profile.rb +190 -120
  24. data/lib/skypeapi/sharefunctions.rb +31 -23
  25. data/lib/skypeapi/sms.rb +87 -67
  26. data/lib/skypeapi/user.rb +159 -99
  27. data/lib/skypeapi/version.rb +3 -3
  28. data/lib/skypeapi/voicemail.rb +59 -52
  29. data/spec/matcher_be_boolean.rb +10 -0
  30. data/spec/skypeapi/application_spec.rb +76 -0
  31. data/spec/skypeapi/chat_spec.rb +356 -0
  32. data/spec/skypeapi/chatmember_spec.rb +42 -0
  33. data/spec/skypeapi/chatmessage_spec.rb +89 -0
  34. data/spec/skypeapi/event_spec.rb +31 -0
  35. data/spec/skypeapi/filetransfer_spec.rb +67 -0
  36. data/spec/skypeapi/group_spec.rb +16 -0
  37. data/spec/skypeapi/menuitem_spec.rb +37 -0
  38. data/spec/skypeapi/os/windows_spec.rb +305 -0
  39. data/spec/skypeapi/profile_spec.rb +22 -0
  40. data/spec/skypeapi/user_spec.rb +25 -0
  41. data/spec/skypeapi_spec.rb +528 -0
  42. metadata +32 -12
  43. data/lib/skypeapi/os/timer.rb +0 -108
data/lib/skypeapi/chat.rb CHANGED
@@ -1,186 +1,176 @@
1
+
1
2
  module SkypeAPI
2
- module Object
3
- class Chat < AbstractObject
4
- OBJECT_NAME = "CHAT"
5
-
6
- def self.create *users
7
- retVal = SkypeAPI.invoke "CHAT CREATE #{users.join(', ')}"
8
- retVal =~ /^CHAT ([^ ]+) STATUS (.+)$/
3
+ class Chat < AbstractObject
4
+ OBJECT_NAME = "CHAT"
5
+
6
+ class << self
7
+ def create *users
8
+ SkypeAPI.invoke("CHAT CREATE #{users.join(', ')}") =~ /^CHAT ([^ ]+) STATUS (.+)$/
9
9
  chatID, status = $1, $2
10
10
  return SkypeAPI::Chat.new(chatID)#, status
11
11
  end
12
-
13
- def self.findUsingBlob blob
14
- retVal = SkypeAPI.invoke "CHAT FINDUSINGBLOB #{blob}"
15
- retVal =~ /^CHAT ([^ ]+) STATUS (.+)$/
12
+
13
+ def find_using_blob blob
14
+ SkypeAPI.invoke("CHAT FINDUSINGBLOB #{blob}") =~ /^CHAT ([^ ]+) STATUS (.+)$/
16
15
  chatID, status = $1, $2
17
16
  return SkypeAPI::Chat.new(chatID)#, status
18
17
  end
19
-
20
- def self.createUsingBlob blob
21
- retVal = SkypeAPI.invoke "CHAT CREATEUSINGBLOB #{blob}"
22
- retVal =~ /^CHAT ([^ ]+) STATUS (.+)$/
18
+ alias findUsingBlob find_using_blob
19
+
20
+ def create_using_blob blob
21
+ SkypeAPI.invoke("CHAT CREATEUSINGBLOB #{blob}") =~ /^CHAT ([^ ]+) STATUS (.+)$/
23
22
  chatID, status = $1, $2
24
23
  return SkypeAPI::Chat.new(chatID)#, status
25
24
  end
26
-
27
- getter :Name, 'NAME'
28
- getter :Timestamp, 'TIMESTAMP' do |str|
29
- if str.empty? then nil else Time.at(str.to_i) end
30
- end
31
- getter :Adder, 'ADDER' do |str|
32
- str.empty? ? nil : SkypeAPI::User.new(str)
33
- end
34
- getter :Status, 'STATUS'
35
- getter :Posters, 'POSTERS' do |str|
36
- str.split(', ').map do |handle|
37
- SkypeAPI::User.new handle
38
- end
39
- end
40
- getter :Members, 'MEMBERS' do |str|
41
- str.split(' ').map do |handle|
42
- SkypeAPI::User.new handle
43
- end
44
- end
45
- getter :Topic, 'TOPIC'
46
- getter :TopicXML, 'TOPICXML'
47
- getter :ChatMessages, 'CHATMESSAGES' do |str|
48
- str.split(' ').map do |id|
49
- SkypeAPI::ChatMessage.new id
50
- end
51
- end
52
- getter :ActiveMembers, 'ACTIVEMEMBERS' do |str|
53
- str.split(' ').map do |handle|
54
- SkypeAPI::User.new handle
55
- end
56
- end
57
- getter :FriendlyName, 'FRIENDLYNAME'
58
- getter :RecentChatMessages, 'RECENTCHATMESSAGES' do |str|
59
- str.split(' ').map do |handle|
60
- SkypeAPI::ChatMessage.new handle
61
- end
62
- end
63
- getter :Bookmarked, 'BOOKMARKED' do |str|
64
- str._flag
65
- end
66
- getter :MemberObjects, 'MEMBEROBJECTS' do |str|
67
- str.split(', ').map do |id|
68
- SkypeAPI::ChatMember.new id
69
- end
70
- end
71
- getter :PasswordHint, 'PASSWORDHINT'
72
- getter :GuideLines, 'GUIDELINES'
73
- getter :Options, 'OPTIONS' do |str|
74
- str.to_i
75
- end
76
- getter :Description, 'DESCRIPTION'
77
- getter :DialogPartner, 'DIALOG_PARTNER' do |str|
78
- if str.empty?
79
- nil
80
- else
81
- SkypeAPI::User.new str
82
- end
83
- end
84
- getter :ActivityTimestamp, 'ACTIVITY_TIMESTAMP' do |str|
85
- if str.empty? then nil else Time.at(str.to_i) end
86
- end
87
- getter :Type, 'TYPE'
88
- getter :MyStatus, 'MYSTATUS'
89
- getter :MyRole, 'MYROLE'
90
- getter :Blob, 'BLOB'
91
- getter :Applicants, 'APPLICANTS' do |str|
92
- str.split(' ').map do |handle|
93
- SkypeAPI::User.new handle
94
- end
95
- end
96
-
97
- #���[
98
- #def open
99
- # retVal = invoke "OPEN CHAT #{@id}"
100
- # retVal =~ /^OPEN CHAT (.+)$/
101
- # return SkypeAPI.chat($1)
102
- #end
103
-
104
- def setTopic topic
105
- invoke_alter "SETTOPIC", topic
106
- end
25
+ alias createUsingBlob create_using_blob
26
+ end
107
27
 
108
- def setTopicXML topic
109
- invoke_alter "SETTOPICXML", topic
110
- end
111
-
112
- def addMembers *members
113
- invoke_alter "ADDMEMBERS", members.join(', ')
114
- end
115
-
116
- def leave
117
- invoke_alter "LEAVE"
118
- end
119
-
120
- def bookmarked
121
- invoke_alter "BOOKMARK"
122
- end
123
-
124
- def unbookmarked
125
- invoke_alter "UNBOOKMARK"
126
- end
127
-
128
- def join
129
- #
130
- invoke_alter "JOIN"
131
- end
132
-
133
- def clearRecentMessages
134
- invoke_alter "CLEARRECENTMESSAGES"
135
- end
136
-
137
- def setAlertString string
138
- invoke_alter "SETALERTSTRING", string
139
- end
140
-
141
- def acceptadd
142
- invoke_alter "ACCEPTADD"
143
- end
144
-
145
- def disband
146
- invoke_alter "DISBAND"
147
- end
148
-
149
-
150
- def setPassword(password, passwordHint='')
151
- invoke_alter "SETPASSWORD", password + ' ' + passwordHint
152
- end
153
-
154
- def enterPassword password
155
- invoke_alter "ENTERPASSWORD", password
156
- end
157
-
158
- def setOptions option
159
- invoke_alter "SETOPTIONS", option
160
- end
28
+ def get_name() invoke_get('NAME') end
29
+ def_parser(:name)
30
+ alias getName get_name
31
+
32
+ def get_timestamp() parse :timestamp, invoke_get('TIMESTAMP') end
33
+ def_parser(:timestamp){|str| str.empty? ? nil : Time.at(str.to_i) }
34
+ alias getTimestamp get_timestamp
35
+
36
+ def get_adder() parse :adder, invoke_get('ADDER') end
37
+ def_parser(:adder){|str| str.empty? ? nil : SkypeAPI::User.new(str) }
38
+ alias getAdder get_adder
39
+
40
+ def get_status() invoke_get 'STATUS' end
41
+ def_parser :status
42
+ alias getStatus get_status
43
+
44
+ def get_posters() parse :posters, invoke_get('POSTERS') end
45
+ def_parser(:posters){|str| str.split(', ').map{|handle| SkypeAPI::User.new handle}}
46
+ alias getPosters get_posters
47
+
48
+ def get_members() parse :members, invoke_get('MEMBERS') end
49
+ def_parser(:members){|str| str.split(' ').map{|handle| SkypeAPI::User.new handle}}
50
+ alias getMembers get_members
51
+
52
+ def get_topic() invoke_get('TOPIC') end
53
+ def_parser(:topic)
54
+ alias getTopic get_topic
55
+
56
+ def get_topic_xml() invoke_get('TOPICXML') end
57
+ def_parser(:topic_xml,'TOPICXML')
58
+ alias getTopicXML get_topic_xml
59
+
60
+ def get_chat_messages() parse :chat_messages, invoke_get('CHATMESSAGES') end
61
+ def_parser(:chat_messages, 'CHATMESSAGES'){|str| str.split(' ').map{|id| SkypeAPI::ChatMessage.new id}}
62
+ alias getChatMessages get_chat_messages
63
+
64
+ def get_active_members() parse :active_members, invoke_get('ACTIVEMEMBERS') end
65
+ def_parser(:active_members, 'ACTIVEMEMBERS'){|str| str.split(' ').map{|handle| SkypeAPI::User.new handle}}
66
+ alias getActiveMembers get_active_members
67
+
68
+ def get_friendly_name() invoke_get('FRIENDLYNAME') end
69
+ def_parser :friendly_name, 'FRIENDLYNAME'
70
+ alias getFriendlyName get_friendly_name
71
+
72
+ def get_recent_chat_messages() parse :recent_chat_messages, invoke_get('RECENTCHATMESSAGES') end
73
+ def_parser(:recent_chat_messages, 'RECENTCHATMESSAGES'){|str| str.split(' ').map{|handle| SkypeAPI::ChatMessage.new handle}}
74
+ alias getRecentChatMessages get_recent_chat_messages
75
+
76
+ def get_bookmarked() parse :bookmarked, invoke_get("BOOKMARKED") end
77
+ def_parser(:bookmarked){|str| str._flag}
78
+ alias getBookmarked get_bookmarked
79
+
80
+ def get_member_objects() parse :member_objects, invoke_get('MEMBEROBJECTS') end
81
+ def_parser(:member_objects, 'MEMBEROBJECTS'){|str| str.split(', ').map{|id| SkypeAPI::ChatMember.new id}}
82
+ alias getMemberObjects get_member_objects
83
+
84
+ def get_password_hint() invoke_get 'PASSWORDHINT' end
85
+ def_parser :password_hint, 'PASSWORDHINT'
86
+ alias getPasswordHint get_password_hint
87
+
88
+ def get_guidelines() invoke_get 'GUIDELINES' end
89
+ def_parser :guidelines
90
+ alias getGuidelines get_guidelines
91
+
92
+ def get_options() parse :options, invoke_get('OPTIONS') end
93
+ def_parser(:options){|str| str.to_i}
94
+ alias getOptions get_options
95
+
96
+ def get_description() invoke_get('DESCRIPTION') end
97
+ def_parser :description
98
+ alias getDescription get_description
99
+
100
+ def get_dialog_partner() parse :dialog_partner, invoke_get('DIALOG_PARTNER') end
101
+ def_parser(:dialog_partner){|str| str.empty? ? nil : SkypeAPI::User.new(str)}
102
+ alias getDialogPartner get_dialog_partner
103
+
104
+ def get_activity_timestamp() parse :activity_timestamp, invoke_get('ACTIVITY_TIMESTAMP') end
105
+ def_parser(:activity_timestamp){|str| str.empty? ? nil : Time.at(str.to_i)}
106
+ alias getActivityTimestamp get_activity_timestamp
107
+
108
+ def get_type() invoke_get 'TYPE' end
109
+ def_parser :type
110
+ alias getType get_type
111
+
112
+ def get_my_status() invoke_get 'MYSTATUS' end
113
+ def_parser :my_status, 'MYSTATUS'
114
+ alias getMyStatus get_my_status
115
+
116
+ def get_my_role() invoke_get 'MYROLE' end
117
+ def_parser :my_role, 'MYROLE'
118
+ alias getMyRole get_my_role
119
+
120
+ def get_blob() invoke_get 'BLOB' end
121
+ def_parser :blob
122
+ alias getBlob get_blob
123
+
124
+ def get_applicants() parse :applicants, invoke_get('APPLICANTS') end
125
+ def_parser(:applicants){|str| str.split(' ').map{|handle| SkypeAPI::User.new handle}}
126
+ alias getApplicants get_applicants
127
+
128
+ def set_topic(topic) invoke_alter "SETTOPIC", topic end
129
+ alias setTopic set_topic
130
+
131
+ def set_topic_xml(topic) invoke_alter "SETTOPICXML", topic end
132
+ alias setTopicXML set_topic_xml
133
+
134
+ def add_members(*members) invoke_alter "ADDMEMBERS", members.join(', ') end
135
+ alias addMembers add_members
136
+
137
+ def leave() invoke_alter "LEAVE" end
138
+
139
+ def bookmarked() invoke_alter "BOOKMARK" end
140
+
141
+ def unbookmarked() invoke_alter "UNBOOKMARK" end
142
+
143
+ def join() invoke_alter "JOIN" end
144
+
145
+ def clear_recent_messages() invoke_alter "CLEARRECENTMESSAGES" end
146
+ alias clearRecentMessages clear_recent_messages
147
+
148
+ def set_alert_string(string) invoke_alter "SETALERTSTRING", string end
149
+ alias setAlertString set_alert_string
150
+
151
+ def acceptadd() invoke_alter "ACCEPTADD" end
152
+
153
+ def disband() invoke_alter "DISBAND" end
154
+
155
+ def set_password(password, passwordHint='') invoke_alter "SETPASSWORD", password + ' ' + passwordHint end
156
+ alias setPassword set_password
157
+
158
+ def enter_password(password) invoke_alter "ENTERPASSWORD", password end
159
+ alias enterPassword enter_password
160
+
161
+ def set_options(option) invoke_alter "SETOPTIONS", option.to_s end
162
+ alias setOptions set_options
163
+
164
+ def kick(*users) invoke_alter "KICK", users.join(', ') end
165
+
166
+ def kickban(*users) invoke_alter "KICKBAN", users.join(', ') end
167
+
168
+ def set_guidelines(guidlines) invoke_alter 'SETGUIDELINES', guidlines end
169
+ alias setGuideLines set_guidelines
170
+
171
+
172
+ def send_message(strings) SkypeAPI::ChatMessage.create self, strings end
173
+ alias sendMessage send_message
161
174
 
162
- def kick *users
163
- users = users.join ', '
164
- invoke_alter "KICK", users
165
- end
166
-
167
- def kickBan *users
168
- users = users.join ', '
169
- invoke_alter "KICKBAN", users
170
- end
171
-
172
- def setGuideLines guidlines
173
- invoke_alter 'SETGUIDELINES', guidlines
174
- end
175
-
176
- def setOptions optionsBitmap
177
- invoke_alter 'SETOPTIONS', optionsBitmap.to_s
178
- end
179
-
180
- def sendMessage msg
181
- SkypeAPI::ChatMessage.create self, msg
182
- end
183
- alias send_message sendMessage
184
- end
185
175
  end
186
176
  end
@@ -1,33 +1,31 @@
1
1
  module SkypeAPI
2
- module Object
3
- class ChatMember < AbstractObject
4
- OBJECT_NAME = "CHATMEMBER"
2
+ class ChatMember < AbstractObject
3
+ OBJECT_NAME = "CHATMEMBER"
5
4
 
6
- getter :Chat, 'CHATNAME' do |str|
7
- @@skypeApi.chat(str)
8
- end
9
-
10
- getter :User,'IDENTITY' do |str|
11
- @@skypeApi.user str
12
- end
13
-
14
- getter :Role, 'ROLE'
15
-
16
- getter :IsActive, 'IS_ACTIVE' do |str|
17
- str._flag
18
- end
19
-
20
- def setRoleTo role
21
- invoke_alter('SETROLETO', role)
22
- end
23
-
24
- def canSetRoleTo role
25
- #ALTER�ŕԂ茌������ɂ߂ē����B
26
- res = invoke("ALTER CHATMEMBER #{@id} CANSETROLETO #{role}")
27
- res =~ /ALTER CHATMEMBER CANSETROLETO (TRUE|FALSE)/
28
- $1._flag
29
- end
30
-
5
+ def get_chat() parse :chat, invoke_get('CHATNAME') end
6
+ def_parser(:chat, 'CHATNAME'){|str| SkypeAPI::Chat.new(str)}
7
+ alias getChat get_chat
8
+
9
+ def get_user() parse :user, invoke_get('IDENTITY') end
10
+ def_parser(:user, 'IDENTITY'){|str| SkypeAPI::User.new(str)}
11
+ alias getUser get_user
12
+
13
+ def get_role() invoke_get('ROLE') end
14
+ def_parser :role
15
+ alias getRole get_role
16
+
17
+ def get_is_active?() parse :is_active, invoke_get('IS_ACTIVE') end
18
+ def_parser(:is_active){|str| str == 'TRUE' ? true : false}
19
+ alias getIsActive? get_is_active?
20
+
21
+
22
+ def set_role_to(role) invoke_alter('SETROLETO', role) end
23
+ alias setRoleTo set_role_to
24
+
25
+ def can_set_role_to?(role)
26
+ invoke("ALTER CHATMEMBER #{@id} CANSETROLETO #{role}") =~ /ALTER CHATMEMBER CANSETROLETO (TRUE|FALSE)/
27
+ $1 == 'TRUE' ? true : false
31
28
  end
29
+ alias canSetRoleTo? can_set_role_to?
32
30
  end
33
31
  end
@@ -1,70 +1,86 @@
1
1
  module SkypeAPI
2
- module Object
3
- class ChatMessage < AbstractObject
4
- OBJECT_NAME = "CHATMESSAGE"
5
-
6
- def self.create chat ,msg
7
- res = SkypeAPI.invoke "CHATMESSAGE #{chat} #{msg}"
8
- if res =~ /^CHATMESSAGE (\d+) STATUS (.+)$/
9
- return SkypeAPI.chatMessage($1)#, $2
10
- else
11
- raise res
12
- end
13
- end
14
-
15
- getter :Body, 'BODY'
16
- getter :Timestamp, 'TIMESTAMP' do |str|
17
- if str.empty? then nil else Time.at(str.to_i) end
18
- end
19
- getter :Partner, 'PARTNER_HANDLE' do |str|
20
- SkypeAPI::User.new str
21
- end
22
- getter :PartnerDispname, 'PARTNER_DISPNAME'
23
- getter :From, 'FROM_HANDLE' do |str|
24
- SkypeAPI::User.new str
25
- end
26
- getter :FromDispname, 'FROM_DISPNAME'
27
- getter :Type, 'TYPE'
28
- getter :Status, 'STATUS'
29
- getter :LeaveReason, 'LEAVEREASON' do |str|
30
- if str.empty?
31
- nil
32
- else
33
- str
34
- end
35
- end
36
- getter :Chat, 'CHATNAME' do |str|
37
- SkypeAPI::Chat.new str
38
- end
39
- getter :Users, 'USERS' do |str|
40
- str.split(',').map do |handle|
41
- SkypeAPI::User.new handle
42
- end
43
- end
44
- getter :IsEditable, 'IS_EDITABLE' do |str|
45
- str._flag
46
- end
47
- getter :EditedBy, 'EDITED_BY' do |str|
48
- if str.empty? then nil else SkypeAPI::User.new(str) end
49
- end
50
- getter :EditedTimestamp, 'EDITED_TIMESTAMP' do |str|
51
- if str.empty? then nil else Time.at(str.to_i) end
52
- end
53
- getter :Options, 'OPTIONS' do |str|
54
- str.to_i
55
- end
56
- getter :Role, 'ROLE'
57
-
58
- def setSeen
59
- str = SkypeAPI.invoke "SET CHATMESSAGE #{@id} SEEN"
60
- if str =~ /^CHATMESSAGE #{@id} STATUS (.+)$/
61
- return true
62
- else
63
- raise #????
64
- end
2
+ class ChatMessage < AbstractObject
3
+ OBJECT_NAME = "CHATMESSAGE"
4
+
5
+ class << self
6
+ def create chat ,msg
7
+ SkypeAPI.invoke("CHATMESSAGE #{chat} #{msg}") =~ /^CHATMESSAGE (\d+) STATUS (.+)$/
8
+ SkypeAPI::ChatMessage.new($1)#, $2
65
9
  end
66
-
67
- def setBody(text) invoke_set('BODY',text._str); end
68
10
  end
11
+
12
+ def get_body() invoke_get 'BODY' end
13
+ def_parser :body
14
+ alias getBody get_body
15
+
16
+ def get_timestamp() parse :timestamp, invoke_get('TIMESTAMP') end
17
+ def_parser(:timestamp){|str| str.empty? ? nil : Time.at(str.to_i)}
18
+ alias getTimestamp get_timestamp
19
+
20
+ #OBS
21
+ # def get_partner() parse :partner, invoke_get('PARTNER_HANDLE') end
22
+ # def_parser(:partner, 'PARTNER_HANDLE'){|str| SkypeAPI::User.new str}
23
+ # alias getPartner get_partner
24
+ #
25
+ # def get_partner_dispname() invoke_get('PARTNER_DISPNAME') end
26
+ # def_parser(:partner_dispname)
27
+ # alias getPartnerDispname get_partner_dispname
28
+
29
+ def get_from() parse :from, invoke_get('FROM_HANDLE') end
30
+ def_parser(:from, 'FROM_HANDLE'){|str| SkypeAPI::User.new str}
31
+ alias getFrom get_from
32
+
33
+ def get_from_dispname() invoke_get('FROM_DISPNAME') end
34
+ def_parser :from_dispname
35
+ alias getFromDispname get_from_dispname
36
+
37
+ def get_type() invoke_get 'TYPE' end
38
+ def_parser :type
39
+ alias getType get_type
40
+
41
+ def get_status() invoke_get 'STATUS' end
42
+ def_parser :status
43
+ alias getStatus get_status
44
+
45
+ def get_leave_reason() parse :leave_reason, invoke_get('LEAVEREASON') end
46
+ def_parser(:leave_reason, 'LEAVEREASON'){|str| str.empty? ? nil : str}
47
+ alias getLeaveReason get_leave_reason
48
+
49
+ def get_chat() parse :chat, invoke_get('CHATNAME') end
50
+ def_parser(:chat, 'CHATNAME'){|str| SkypeAPI::Chat.new str}
51
+ alias getChat get_chat
52
+
53
+ def get_users() parse :users, invoke_get('USERS') end
54
+ def_parser(:users){|str| str.split(',').map{|handle| SkypeAPI::User.new handle}}
55
+ alias getUsers get_users
56
+
57
+ def get_is_editable?() parse :is_editable, invoke_get('IS_EDITABLE') end
58
+ def_parser(:is_editable){|str| str == 'TRUE' ? true : false}
59
+ alias getIsEditable? get_is_editable?
60
+
61
+ def get_edited_by() parse :edited_by, invoke_get("EDITED_BY") end
62
+ def_parser(:edited_by){|str| str.empty? ? nil : SkypeAPI::User.new(str)}
63
+ alias getEditedBy get_edited_by
64
+
65
+ def get_edited_timestamp() parse :edited_timestamp, invoke_get('EDITED_TIMESTAMP') end
66
+ def_parser(:edited_timestamp){|str| str.empty? ? nil : Time.at(str.to_i)}
67
+ alias getEditedTimestamp get_edited_timestamp
68
+
69
+ def get_options() parse :options, invoke_get('OPTIONS') end
70
+ def_parser(:options){|str| str.to_i}
71
+ alias getOptions get_options
72
+
73
+ def get_role() invoke_get('ROLE') end
74
+ def_parser(:role)
75
+ alias getRole get_role
76
+
77
+ def set_seen
78
+ return true if SkypeAPI.invoke("SET CHATMESSAGE #{@id} SEEN") =~ /^CHATMESSAGE #{@id} STATUS (.+)$/
79
+ raise 'hogehoge'
80
+ end
81
+ alias setSeen set_seen
82
+
83
+ def set_body(text) invoke_set('BODY', text) end
84
+ alias setBody set_body
69
85
  end
70
86
  end