skypemac 0.0.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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in skypemac.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2011 Zoltan Dezso
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
+ of the Software, and to permit persons to whom the Software is furnished to do
8
+ so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
@@ -0,0 +1,69 @@
1
+ # Introduction
2
+
3
+ SkypeMac is a ruby wrapper for the Skype public API using AppleScript.
4
+
5
+ It allows basic commands to be sent to a running Skype instance, such
6
+ as changing the online status of the current user, listing friends or
7
+ chat messages, initiating calls and chats etc.
8
+
9
+ NOTE: At this point, Skype does not support asynchronous commands over the
10
+ AppleScript API.
11
+
12
+ # Installation
13
+
14
+ gem install skypemac
15
+
16
+ # Usage
17
+
18
+ require 'skypemac'
19
+
20
+ ### Current user
21
+
22
+ user = SkypeMac::User.current_user
23
+ # => echotest123
24
+
25
+ ### Online Status
26
+
27
+ SkypeMac::User.status
28
+ # => "ONLINE"
29
+ SkypeMac::User.status = "OFFLINE"
30
+ # => "OFFLINE"
31
+
32
+ ### Calling
33
+
34
+ # Call a user
35
+ call = SkypeMac::Call.call('echo123')
36
+ # => #<SkypeMac::Call:0x007fc3b30f30d8 @id="2214381">
37
+ call.status
38
+ # => "INPROGRESS"
39
+ call.partner_dispname
40
+ # "Skype Test Call"
41
+
42
+ ### Chats
43
+
44
+ # List recent chats
45
+ chats = SkypeMac::Chat.recent_chats
46
+ # => [ #<SkypeMac::Chat:0x007fc3b3195f68 @id="#test/$zaki001;123456abcdef">, #<SkypeMac::Chat:0x007fc3b3195f40 @id="#test/$zaki;1234556abcdef"> ]
47
+ messages = chats.first.recent_chat_messages
48
+ # => [ #<SkypeMac::ChatMessage:0x007fc3b3854ea8 @id="1234">, #<SkypeMac::ChatMessage:0x007fc3b3854e80 @id="1234"> ]
49
+ messages.map &:body
50
+ # => [ "Hi", "This is a test" ]
51
+
52
+ # Send a message to an existing chat
53
+ chats.first.send_message("Hey there")
54
+ # => "CHATMESSAGE 2114633 STATUS SENDING"
55
+ # it is not possible to get an asynchronous delivery notification,
56
+ # if you need to make sure it got sent, you will need to poll:
57
+
58
+ message = SkypeMac::ChatMessage.new(2114633)
59
+ message.status
60
+ # => "SENT"
61
+
62
+ # Get information about a chat
63
+ chat.topic
64
+ # => "Test chat"
65
+
66
+
67
+ # License
68
+
69
+ SkypeMac is available under the MIT license.
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,12 @@
1
+ require "skypemac/version"
2
+
3
+ require 'skypemac/base'
4
+ require 'skypemac/skype'
5
+ require 'skypemac/objects/call'
6
+ require 'skypemac/objects/chat'
7
+ require 'skypemac/objects/chat_member'
8
+ require 'skypemac/objects/chat_message'
9
+ require 'skypemac/objects/group'
10
+ require 'skypemac/objects/profile'
11
+ require 'skypemac/objects/user'
12
+
@@ -0,0 +1,127 @@
1
+ require 'appscript'
2
+
3
+ module SkypeMac
4
+ class SkypeException < ArgumentError
5
+ def initialize(command, error)
6
+ @command = command
7
+ @error = error
8
+ end
9
+
10
+ def to_s
11
+ "COMMAND '#{@command}' failed:\n#{@error}"
12
+ end
13
+ end
14
+
15
+ class Base
16
+ @_class = 'BASE'
17
+ @id = nil
18
+ class << self
19
+ # Sends an API command to Skype using the Applescript client
20
+ def send(options)
21
+ options[:script_name] ||= 'skypemac-ruby'
22
+ result = Appscript.app('Skype').send_ options
23
+ if result =~ /^ERROR /
24
+ raise SkypeException.new(options[:command], result)
25
+ end
26
+ result
27
+ end
28
+
29
+ def protocol_required(protocol)
30
+ end
31
+
32
+ def send_command(command, command_id=nil, &block)
33
+ id=''
34
+ if command_id =~ /[a-zA-Z0-9]+/
35
+ id = "##{command_id} "
36
+ end
37
+ result = SkypeMac::Base.send(:command=>"#{id}#{command}")
38
+ if block
39
+ yield result
40
+ else
41
+ result
42
+ end
43
+ end
44
+
45
+ def property(property_name, options={})
46
+ api_name = options[:api_name] || property_name.to_s.gsub(/[?!]$/, '')
47
+ api_name = api_name.to_s.upcase
48
+ property_type = options[:type] || :string
49
+ immutable = options[:immutable] || false
50
+ collection_class = options[:collection] || Class
51
+
52
+ class_eval <<-RUBY
53
+ def #{property_name.to_s}
54
+ #{immutable ? "@#{property_name.to_s}||" : '_property'}= Base::send_command "GET #{@_class} \#{@id} #{api_name}" do |result|
55
+ case result
56
+ when /^#{@_class} (.+) #{api_name} (.*)$/
57
+ $2
58
+ end
59
+ end
60
+ Base::property_convert(_property, :#{property_type}, #{collection_class}) unless _property.nil?
61
+ end
62
+ RUBY
63
+ end
64
+
65
+ def property_writer(property_name, options={})
66
+ api_name = options[:api_name] || property_name.to_s.gsub(/[?!]$/, '')
67
+ api_name = api_name.to_s.upcase
68
+
69
+ class_eval <<-RUBY
70
+ def #{property_name.to_s}=(value)
71
+ Base::send_command "SET #{@_class} \#{@id} #{api_name} \#{value}" do |result|
72
+ case result
73
+ when /^#{@_class} (.+) #{api_name} (.*)$/
74
+ $2
75
+ end
76
+ end
77
+ end
78
+ RUBY
79
+ end
80
+
81
+ def alter(property_name, options={})
82
+ api_name = options[:api_name] || (property_name.to_s =~ /!$/ ? '' : 'SET')+property_name.to_s.gsub(/[?!]$/, '')
83
+ api_name = api_name.to_s.upcase
84
+ signature = property_name.to_s =~ /!$/ ? "#{property_name}(*value)" : "#{property_name.to_s}=(*value)"
85
+
86
+ class_eval <<-RUBY
87
+ def #{signature}
88
+ Base::send_command "ALTER #{@_class} \#{@id} #{api_name} \#{Array(value).join(', ')}" do |result|
89
+ case result
90
+ when /^#{@_class} (.+) (#{api_name} )?(.*)$/
91
+ $3
92
+ end
93
+ end
94
+ end
95
+ RUBY
96
+ end
97
+
98
+ def property_convert(property, type, collection_class)
99
+ return if property.nil?
100
+ case type
101
+ when :string
102
+ property.to_s
103
+ when :integer
104
+ property.to_i
105
+ when :timestamp
106
+ Time.at(property.to_i)
107
+ when :boolean
108
+ !!(property =~ /true/i)
109
+ when :collection
110
+ property.to_s.split(/, /).map {|x| collection_class.new(x) }
111
+ else
112
+ property
113
+ end
114
+ end
115
+ end
116
+
117
+ def protocol(protocol_version=8)
118
+ Base::send_command "PROTOCOL #{protocol_version}" do |result|
119
+ if result =~ /^PROTOCOL (\d)$/
120
+ @protocol = $1.to_i
121
+ warn "Requested #{protocol_version} but received #{@protocol}" if @protocol != protocol_version
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
127
+
@@ -0,0 +1,118 @@
1
+ module SkypeMac
2
+ class Call < SkypeMac::Base
3
+ @_class = 'CALL'
4
+ class << self
5
+ # -> CALL target[, target]*
6
+ # <- CALL id status
7
+ def call(*targets)
8
+ protocol_required 1
9
+ Base::send_command "CALL #{Array(targets).join(',')}" do |result|
10
+ case result
11
+ when /^CALL (\d+) (.*)$/
12
+ return Call.new($1)
13
+ else
14
+ raise SkypeException.new("CALL", result)
15
+ end
16
+ end
17
+ end
18
+ def _search(command)
19
+ Base::send_command "SEARCH #{command}" do |result|
20
+ case result
21
+ when /^CALLS (.*)$/
22
+ calls = $1
23
+ return calls.split(', ').map {|x| Call.new x}
24
+ end
25
+ end
26
+ end
27
+
28
+ def search(target)
29
+ _search "CALLS #{target}"
30
+ end
31
+ def active_calls
32
+ _search "ACTIVECALLS"
33
+ end
34
+ def missed_calls
35
+ _search "MISSEDCALLS"
36
+ end
37
+
38
+ end
39
+
40
+ def initialize(id)
41
+ @id = id
42
+ end
43
+
44
+ #{{{ - Properties
45
+ property :partner_handle
46
+ property :partner_dispname
47
+ property :target_identity
48
+ property :conf_id
49
+ property :status
50
+ property :video_status
51
+ property :video_send_status
52
+ property :video_receive_status
53
+ property :pstn_number
54
+ property :duration, :type=>:integer
55
+ property :pstn_status
56
+ property :conf_participants_count, :type=>:integer
57
+ property :wm_duration, :type=>:integer
58
+ property :wm_allowed_duration, :type=>:integer
59
+ property :rate, :type=>:integer
60
+ property :rate_currency
61
+ property :rate_precision
62
+ property :transfer_active?, :api_name=>:transfer_active, :type=>:boolean
63
+ property :transfer_status
64
+ property :timestamp, :type=>:timestamp
65
+ property :failure_reason, :api_name=>:failurereason
66
+ property :type, :immutable=>true
67
+
68
+ def conf_participant(index)
69
+ Base::send_command "GET CALL #{@id} CONF_PARTICIPANT #{index}" do |response|
70
+ case response
71
+ when /^CALL #{@id} CONF_PARTICIPANT #{index} (.+)$/
72
+ return $1
73
+ end
74
+ end
75
+ end
76
+
77
+ #{{{ - Type helpers
78
+ def pstn?
79
+ type =~ /PSTN/
80
+ end
81
+
82
+ def p2p?
83
+ !pstn
84
+ end
85
+
86
+ def incoming?
87
+ type =~ /INCOMING/
88
+ end
89
+
90
+ def outgoing?
91
+ !incoming
92
+ end
93
+ #}}}
94
+
95
+ #{{{ - Status helpers
96
+ %w(unplaced routing earlymedia failed ringing inprogress onhold finished
97
+ missed refused busy cancelled transferring transferred
98
+ wm_buffering_greeting wm_playing_greeting wm_recording wm_uploading wm_sent wm_cancelled wm_failed
99
+ waiting_redial_command redial_pending).each do |status|
100
+ class_eval <<-RUBY
101
+ def #{status}?; status == '#{status.upcase}'; end
102
+ RUBY
103
+ end
104
+ #}}}
105
+
106
+ #}}}
107
+
108
+ # -> SET CALL id STATUS status
109
+ # <- CALL id STATUS status
110
+ # status = INPROGRESS | FINISHED | ONHOLD
111
+ def set_call_status(status)
112
+ end
113
+
114
+ # -> SET CALL join_id JOIN_CONFERENCE master_id
115
+ def join_conference(join_id, master_id)
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,98 @@
1
+ require 'skypemac/objects/user'
2
+ require 'skypemac/objects/chat_message'
3
+ require 'skypemac/objects/chat_member'
4
+
5
+
6
+ module SkypeMac
7
+ class Chat < SkypeMac::Base
8
+ @_class = 'CHAT'
9
+ class << self
10
+ def _search(command)
11
+ Base::send_command "SEARCH #{command}" do |result|
12
+ case result
13
+ when /^CHATS (.*)$/
14
+ chats = $1
15
+ return chats.split(', ').map {|x| Chat.new x}
16
+ end
17
+ end
18
+ end
19
+ def recent_chats
20
+ _search "RECENTCHATS"
21
+ end
22
+ def active_chats
23
+ _search "ACTIVECHATS"
24
+ end
25
+ def missed_chats
26
+ _search "MISSEDCHATS"
27
+ end
28
+ def bookmarked_chats
29
+ _search "BOOKMARKEDCHATS"
30
+ end
31
+ end
32
+
33
+ def initialize(id)
34
+ @id = id
35
+ end
36
+
37
+ def send_message(message)
38
+ Base::send_command "CHATMESSAGE #{@id} #{message}"
39
+ end
40
+
41
+ #{{{ - Properties
42
+ property :name
43
+ property :topic
44
+ property :status
45
+ property :topic_xml, :api_name=>:topicxml
46
+ property :bookmarked?, :api_name=>:bookmarked, :type=>:boolean
47
+ property :friendly_name, :api_name=>:friendlyname
48
+ property :timestamp, :type=>:timestamp
49
+ property :adder, :type=>:collection, :collection=>SkypeMac::User
50
+ property :posters, :type=>:collection, :collection=>SkypeMac::User
51
+ property :members, :type=>:collection, :collection=>SkypeMac::User
52
+ property :active_members, :api_name=>:activemembers, :type=>:collection, :collection=>SkypeMac::User
53
+ property :chat_messages, :api_name=>:chatmessages, :type=>:collection, :collection=>SkypeMac::ChatMessage
54
+ property :recent_chat_messages, :api_name=>:recentchatmessages, :type=>:collection, :collection=>SkypeMac::ChatMessage
55
+
56
+ # protocol 7 additions
57
+ property :password_hint, :api_name=>:passwordhint
58
+ property :guidelines
59
+ property :options
60
+ property :description
61
+ property :my_status, :api_name=>:mystatus
62
+ property :my_role, :api_name=>:myrole
63
+ property :blob
64
+ property :activity_timestamp, :type=>:timestamp
65
+
66
+ # ALTER commands
67
+ alter :topic
68
+ alter :topic_xml, :api_name=>:settopicxml
69
+ alter :leave!
70
+ alter :bookmark!
71
+ alter :unbookmark!
72
+ alter :join!
73
+ alter :clear_recent_messages!, :api_name=>:clearrecentmessages
74
+ alter :alert_string, :api_name=>:alertstring
75
+ alter :accept_add!, :api_name=>:acceptadd
76
+ alter :disband!
77
+
78
+ alter :password
79
+ alter :enter_password, :api_name=>:enterpassword
80
+ alter :options
81
+ alter :kick
82
+ alter :kickban
83
+
84
+ def member_objects
85
+ #TODO
86
+ end
87
+
88
+ def dialog_partner
89
+ #TODO
90
+ end
91
+
92
+ def applicants
93
+ #TODO
94
+ end
95
+
96
+ #}}}
97
+ end
98
+ end
@@ -0,0 +1,21 @@
1
+ module SkypeMac
2
+ class ChatMember < SkypeMac::Base
3
+ @_class = 'CHATMEMBER'
4
+ class << self
5
+ end
6
+
7
+ def initialize(id)
8
+ @id = id
9
+ end
10
+
11
+ #{{{ - Properties
12
+ property :chat_name, :api_name=>:chatname
13
+ property :identity
14
+ property :role
15
+ property :active?, :api_name=>:is_active, :type=>:boolean
16
+
17
+ alter :role, :api_name=>:setroleto
18
+ alter :can_set_role, :api_name=>:cansetroleto
19
+ #}}}
20
+ end
21
+ end
@@ -0,0 +1,47 @@
1
+ module SkypeMac
2
+ class ChatMessage < SkypeMac::Base
3
+ @_class = 'CHATMESSAGE'
4
+ class << self
5
+ def _search(command)
6
+ Base::send_command "SEARCH #{command}" do |result|
7
+ case result
8
+ when /^CHATMESSAGES (.*)$/
9
+ chatmessages = $1
10
+ return chatmessages.split(', ').map {|x| ChatMessage.new x}
11
+ end
12
+ end
13
+ end
14
+
15
+ def search(user)
16
+ _search "CHATMESSAGES #{user.to_s}"
17
+ end
18
+ def missed_chat_messages
19
+ _search "MISSEDCHATMESSAGES"
20
+ end
21
+ end
22
+
23
+ def initialize(id)
24
+ @id = id
25
+ end
26
+
27
+ #{{{ - Properties
28
+ property :seen?, :type=>:boolean
29
+ property :body
30
+ property :from_dispname
31
+ property :status
32
+ property :chat_name
33
+ property :options
34
+ property :role
35
+ property :timestamp, :type=>:timestamp
36
+ property :from_handle, :immutable=>true
37
+ property :type, :immutable=>true
38
+ property :leave_reason, :api_name=>:leavereason
39
+ property :editable?, :type=>:boolean
40
+ property :edited_timestamp, :type=>:timestamp
41
+
42
+ property_writer :seen
43
+ property_writer :body
44
+ #}}}
45
+ end
46
+ end
47
+
@@ -0,0 +1,60 @@
1
+ require 'skypemac/objects/user'
2
+
3
+ module SkypeMac
4
+ class Group < SkypeMac::Base
5
+ @_class = 'GROUP'
6
+ class << self
7
+ def _search(command)
8
+ Base::send_command "SEARCH #{command}" do |result|
9
+ case result
10
+ when /^GROUPS (.*)$/
11
+ users = $1
12
+ return users.split(', ').map {|x| Group.new x}
13
+ end
14
+ end
15
+ end
16
+
17
+ def create(name)
18
+ Base::send_command "CREATE GROUP #{name}" do |result|
19
+ case result
20
+ when /^CREATE GROUP (.*)$/
21
+ Group.new $1
22
+ end
23
+ end
24
+ end
25
+
26
+ # [{ALL|CUSTOM|HARDWIRED}]
27
+ def search(type='')
28
+ _search "GROUPS #{type.to_s.upcase}"
29
+ end
30
+ end
31
+
32
+ def initialize(id)
33
+ @id = id
34
+ end
35
+
36
+ def delete
37
+ Base::send_command "DELETE GROUP #{@id}"
38
+ end
39
+
40
+ #{{{ - Properties
41
+ property :type
42
+ property :custom_group_id, :immutable=>true
43
+ property :display_name,:api_name=>:displayname
44
+ property :user_count, :api_name=>:nrofusers
45
+ property :online_user_count, :api_name=>:nrofusers_online
46
+ property :users, :type=>:collection, :collection=>SkypeMac::User
47
+
48
+ property :expanded, :type=>:boolean
49
+ property_writer :display_name, :api_name=>:displayname
50
+
51
+ alter :add_user, :api_name=>:adduser
52
+ alter :remove_user, :api_name=>:removeuser
53
+
54
+ alter :share!
55
+ alter :accept!
56
+ alter :decline!
57
+ #}}}
58
+
59
+ end
60
+ end
@@ -0,0 +1,41 @@
1
+ module SkypeMac
2
+ class Profile < SkypeMac::Base
3
+ @_class = 'PROFILE'
4
+ class << self
5
+ end
6
+
7
+ def initialize(id)
8
+ @id = id
9
+ end
10
+
11
+ #{{{ - Properties
12
+ property :pstn_balance
13
+ property :pstn_balance_currency
14
+ property :full_name, :api_name=>:fullname
15
+ property :birthday
16
+ property :gender, :api_name=>:sex
17
+ property :languages
18
+ property :country
19
+ property :ip_country, :api_name=>:ipcountry
20
+ property :province
21
+ property :city
22
+ property :phone_home
23
+ property :phone_office
24
+ property :phone_mobile
25
+ property :homepage
26
+ property :about
27
+ property :mood_text
28
+ property :rich_mood_text
29
+ property :time_zone, :api_name=>:timezone
30
+ property :call_apply_forwading, :api_name=>:call_apply_cf
31
+ property :call_noanswer_timeout
32
+ property :call_forward_rules
33
+ property :call_send_to_voicemail, :api_name=>:call_send_to_vm
34
+ property :sms_validated_numbers
35
+
36
+ property_writer :mood_text
37
+ property_writer :rich_mood_text
38
+ #}}}
39
+
40
+ end
41
+ end
@@ -0,0 +1,95 @@
1
+ module SkypeMac
2
+ class User < SkypeMac::Base
3
+ @_class = 'USER'
4
+ class << self
5
+ def current_user
6
+ Base::send_command "GET CURRENTUSERHANDLE" do |result|
7
+ if result =~ /^CURRENTUSERHANDLE (.*)$/
8
+ User.new $1
9
+ end
10
+ end
11
+ end
12
+ def status
13
+ Base::send_command "GET USERSTATUS" do |result|
14
+ if result =~ /^USERSTATUS (.*)$/
15
+ $1
16
+ end
17
+ end
18
+ end
19
+ def status=(value)
20
+ Base::send_command "SET USERSTATUS #{value}" do |result|
21
+ if result =~ /^USERSTATUS (.*)$/
22
+ $1
23
+ end
24
+ end
25
+ end
26
+ def _search(command)
27
+ Base::send_command "SEARCH #{command}" do |result|
28
+ case result
29
+ when /^USERS (.*)$/
30
+ users = $1
31
+ return users.split(', ').map {|x| User.new x}
32
+ end
33
+ end
34
+ end
35
+ def search(keyword)
36
+ _search "USERS #{keyword}"
37
+ end
38
+ def friends
39
+ _search "FRIENDS"
40
+ end
41
+ def users_waiting_authorization
42
+ _search "USERSWAITINGMYAUTHORIZATION"
43
+ end
44
+ end
45
+
46
+ def initialize(id)
47
+ @id = id
48
+ end
49
+
50
+ def to_s
51
+ @id
52
+ end
53
+
54
+ #{{{ - Properties
55
+ property :language
56
+ property :country
57
+ property :provice
58
+ property :city
59
+ property :phone_home
60
+ property :phone_office
61
+ property :phone_mobile
62
+ property :homepage
63
+ property :about
64
+ property :skypeme
65
+ property :speed_dial, :api_name=>:speeddial
66
+ property :mood_text
67
+ property :rich_mood_text
68
+ property :display_name, :api_name=>:displayname
69
+ property :handle, :immutable=>true
70
+ property :full_name, :api_name=>:fullname
71
+ property :birthday
72
+ property :gender, :api_name=>:sex
73
+ property :has_call_equipment?, :api_name=>:hascallequipment, :type=>:boolean
74
+ property :video_capable?, :api_name=>:is_video_capable, :type=>:boolean
75
+ property :voicemail_capable?, :api_name=>:is_voicemail_capable, :type=>:boolean
76
+ property :buddy_status, :api_name=>:buddystatus
77
+ property :authorized?, :api_name=>:isauthorized, :type=>:boolean
78
+ property :blocked?, :api_name=>:isblocked, :type=>:boolean
79
+ property :online_status, :api_name=>:onlinestatus
80
+ property :last_online_timestamp, :api_name=>:lastonlinetimestamp, :type=>:timestamp
81
+ property :can_leave_voicemail?, :api_name=>:can_leave_vm, :type=>:boolean
82
+ property :received_auth_request, :api_name=>:receivedauthrequest
83
+ property :call_forwarding_active?, :api_name=>:is_cf_active, :type=>:boolean
84
+ property :authorized_buddy_count, :api_name=>:nrof_authed_buddies, :type=>:integer
85
+
86
+ property_writer :buddy_status, :api_name=>:buddystatus
87
+ property_writer :is_blocked, :api_name=>:isblocked
88
+ property_writer :is_authorized, :api_name=>:isauthorized
89
+ property_writer :speeddial
90
+ property_writer :display_name, :api_name=>:displayname
91
+ #}}}
92
+
93
+ end
94
+ end
95
+
@@ -0,0 +1,23 @@
1
+ module SkypeMac
2
+ class Skype < SkypeMac::Base
3
+ class << self
4
+ def skype_version
5
+ Base::send_command "GET SKYPEVERSION" do |result|
6
+ if result =~ /^SKYPEVERSION (.*)$/
7
+ $1
8
+ end
9
+ end
10
+ end
11
+ end
12
+ def connection_status
13
+ Base::send_command "GET CONNSTATUS" do |result|
14
+ if result =~ /^CONNSTATUS (.*)$/
15
+ $1
16
+ end
17
+ end
18
+ end
19
+ def initialize(version=8)
20
+ protocol(version)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ module SkypeMac
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "skypemac/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "skypemac"
7
+ s.version = SkypeMac::VERSION
8
+ s.authors = ["Zoltan Dezso"]
9
+ s.email = ["dezso.zoltan@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Skype Public API client for Mac}
12
+ s.description = %q{Skype Public API client for Mac}
13
+
14
+ s.rubyforge_project = "skypemac"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "rspec"
23
+ s.add_development_dependency "rake"
24
+ s.add_runtime_dependency "rb-appscript"
25
+ end
@@ -0,0 +1 @@
1
+ require 'skypemac'
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: skypemac
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Zoltan Dezso
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-08 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &70210452179520 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70210452179520
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70210452178700 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70210452178700
36
+ - !ruby/object:Gem::Dependency
37
+ name: rb-appscript
38
+ requirement: &70210452177840 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70210452177840
47
+ description: Skype Public API client for Mac
48
+ email:
49
+ - dezso.zoltan@gmail.com
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - .gitignore
55
+ - Gemfile
56
+ - LICENSE
57
+ - README.md
58
+ - Rakefile
59
+ - lib/skypemac.rb
60
+ - lib/skypemac/base.rb
61
+ - lib/skypemac/objects/call.rb
62
+ - lib/skypemac/objects/chat.rb
63
+ - lib/skypemac/objects/chat_member.rb
64
+ - lib/skypemac/objects/chat_message.rb
65
+ - lib/skypemac/objects/group.rb
66
+ - lib/skypemac/objects/profile.rb
67
+ - lib/skypemac/objects/user.rb
68
+ - lib/skypemac/skype.rb
69
+ - lib/skypemac/version.rb
70
+ - skypemac.gemspec
71
+ - spec/spec_helper.rb
72
+ homepage: ''
73
+ licenses: []
74
+ post_install_message:
75
+ rdoc_options: []
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ segments:
85
+ - 0
86
+ hash: 1776554521654031330
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ segments:
94
+ - 0
95
+ hash: 1776554521654031330
96
+ requirements: []
97
+ rubyforge_project: skypemac
98
+ rubygems_version: 1.8.10
99
+ signing_key:
100
+ specification_version: 3
101
+ summary: Skype Public API client for Mac
102
+ test_files:
103
+ - spec/spec_helper.rb