rb-skypemac 0.1.0 → 0.2.0
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/Manifest.txt +5 -0
- data/README.txt +2 -0
- data/lib/rb-skypemac/call.rb +54 -0
- data/lib/rb-skypemac/group.rb +52 -0
- data/lib/rb-skypemac/iam.rb +22 -0
- data/lib/rb-skypemac/skype.rb +73 -0
- data/lib/rb-skypemac/user.rb +58 -0
- data/lib/rb-skypemac/version.rb +1 -1
- data/lib/rb-skypemac.rb +1 -95
- data/test/test_group.rb +55 -0
- data/test/test_skype.rb +15 -0
- data/test/test_user.rb +32 -0
- data/website/index.html +1 -1
- metadata +10 -2
data/Manifest.txt
CHANGED
data/README.txt
CHANGED
@@ -1,3 +1,5 @@
|
|
1
1
|
README for rb-skypemac
|
2
2
|
======================
|
3
3
|
|
4
|
+
Include support for calling, managing calls, and managing users. Most invocations are made via the Skype class which
|
5
|
+
abstracts much of the Skype API, delegating calls to the constituent objects in the official Skype API.
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'appscript'
|
3
|
+
include Appscript
|
4
|
+
|
5
|
+
|
6
|
+
module SkypeMac
|
7
|
+
|
8
|
+
# Represents a Skype call
|
9
|
+
class Call
|
10
|
+
@@TOGGLE_FLAGS = [:START, :STOP]
|
11
|
+
|
12
|
+
attr :id
|
13
|
+
|
14
|
+
# Creates and initializes a Skype call. Accepts the handle of the user to call or a User object
|
15
|
+
def initialize(user)
|
16
|
+
user = user.handle if user.is_a? User
|
17
|
+
status = Skype.send_ :command => "call #{user}"
|
18
|
+
if status =~ /CALL (\d+) STATUS/
|
19
|
+
@id = $1
|
20
|
+
else
|
21
|
+
raise Error.new("Could not obtain Call ID")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Attempts to hang up a call.<br>
|
26
|
+
# <b>Note</b>: If Skype hangs while placing the call, this method could hang indefinitely
|
27
|
+
def hangup
|
28
|
+
Skype.send_ :command => "set call #{@id} status finished"
|
29
|
+
end
|
30
|
+
|
31
|
+
# Retrieves the status of the current call.<br>
|
32
|
+
# <b>Untested</b>
|
33
|
+
def status
|
34
|
+
Skype.send_ :command => "get call #{@id} status"
|
35
|
+
end
|
36
|
+
|
37
|
+
# Returns one of: VIDEO_NONE, VIDEO_SEND_ENABLED, VIDEO_RECV_ENABLED, VIDEO_BOTH_ENABLED
|
38
|
+
def get_video_status
|
39
|
+
Skype.send_ :command => "get call #{id} video_status"
|
40
|
+
end
|
41
|
+
|
42
|
+
# Accepts <i>:START</i> or <em>:STOP</em>
|
43
|
+
def send_video(toggle_flag)
|
44
|
+
raise Error.new("Illegal flag: #{toggle_flag}") if not @@TOGGLE_FLAGS.index toggle_flag
|
45
|
+
Skype.send_ :command => "alter call #{id} #{toggle_flag.downcase.to_s}_video_send"
|
46
|
+
end
|
47
|
+
|
48
|
+
# Accepts <em>:START</em> or <em>:STOP</em>
|
49
|
+
def rcv_video(toggle_flag)
|
50
|
+
raise Error.new("Illegal flag: #{toggle_flag}") if not @@TOGGLE_FLAGS.index toggle_flag
|
51
|
+
Skype.send_ :command => "alter call #{id} #{toggle_flag.downcase.to_s}_video_receive"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'appscript'
|
3
|
+
include Appscript
|
4
|
+
|
5
|
+
module SkypeMac
|
6
|
+
|
7
|
+
# Represents Skype internal grouping of contacts; https://developer.skype.com/Docs/ApiDoc/GROUP_object
|
8
|
+
class Group
|
9
|
+
attr_reader :gtype, :gid
|
10
|
+
|
11
|
+
# Gets the type of a group by id
|
12
|
+
def Group.get_type(id)
|
13
|
+
r = Skype.send_ :command => "get group #{id} type"
|
14
|
+
r.sub(/.*TYPE\b/, "").strip
|
15
|
+
end
|
16
|
+
|
17
|
+
# Returns an array of your Skype instance's supported group types
|
18
|
+
def Group.types
|
19
|
+
groups = Group.groups
|
20
|
+
groups.map { |g| g.gtype }
|
21
|
+
end
|
22
|
+
|
23
|
+
# Returns array of skype names of users in this group
|
24
|
+
def member_user_names
|
25
|
+
r = Skype.send_ :command => "get group #{@gid} users"
|
26
|
+
r.sub(/^.*USERS /, "").split(", ")
|
27
|
+
end
|
28
|
+
|
29
|
+
# Returns array of Users in this Group
|
30
|
+
def users
|
31
|
+
member_user_names.map { |h| User.new h }
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns hash of symols (group types) => Group objects
|
35
|
+
def Group.groups
|
36
|
+
r = Skype.send_ :command => "search groups hardwired", :script_name => ""
|
37
|
+
r.gsub!(/^\D+/, "")
|
38
|
+
group_ids = r.split ", "
|
39
|
+
groups = []
|
40
|
+
group_ids.each do |id|
|
41
|
+
groups << Group.new(id, Group.get_type(id))
|
42
|
+
end
|
43
|
+
groups
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
def initialize(id, type)
|
48
|
+
@gid = id
|
49
|
+
@gtype = type
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'appscript'
|
3
|
+
include Appscript
|
4
|
+
|
5
|
+
module SkypeMac
|
6
|
+
|
7
|
+
# Singleton for managing Skype user status
|
8
|
+
class Iam
|
9
|
+
@@STATUSES = [:ONLINE, :OFFLINE, :SKYPEME, :AWAY, :NA, :DND, :INVISIBLE]
|
10
|
+
|
11
|
+
def Iam.set_user_status(status)
|
12
|
+
raise NoMethodError.new("#{status} in #{Iam.to_s}") if not @@STATUSES.index status.upcase.to_sym
|
13
|
+
Skype.send_ :command => "SET USERSTATUS #{status}"
|
14
|
+
end
|
15
|
+
|
16
|
+
# Handles all of the user status permutations accepted by Skype otherwise Errors.
|
17
|
+
# For example, <i>Iam.away</i> is legal.
|
18
|
+
def Iam.method_missing(id)
|
19
|
+
Iam.set_user_status(id.id2name)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'appscript'
|
3
|
+
include Appscript
|
4
|
+
|
5
|
+
module SkypeMac
|
6
|
+
|
7
|
+
# Singleton for interfacing with Skype
|
8
|
+
class Skype
|
9
|
+
@@groups = nil
|
10
|
+
|
11
|
+
# Initiates a Skype call
|
12
|
+
def Skype.call(name_or_num)
|
13
|
+
Call.new name_or_num
|
14
|
+
end
|
15
|
+
|
16
|
+
# The Appscript interface to Skype. Requires a Hash containing:
|
17
|
+
# (1) <i>:command</i> - the Skype API command to pass,
|
18
|
+
# (2) <i>:script_name</i> - unknown all though an empty String makes Skype happy.
|
19
|
+
# Impl adds <i>:script_name</i> to Hash and warns if it is not provided
|
20
|
+
def Skype.send_(params)
|
21
|
+
params[:script_name] = "" if not params.has_key? :script_name
|
22
|
+
app('Skype').send_ params
|
23
|
+
end
|
24
|
+
|
25
|
+
# Returns an Array of Groups
|
26
|
+
def Skype.groups
|
27
|
+
if not @@groups
|
28
|
+
@@groups = Group.groups
|
29
|
+
end
|
30
|
+
@@groups
|
31
|
+
end
|
32
|
+
|
33
|
+
# Returns Array of all users in Group. Accepts types as defined by Group.types
|
34
|
+
def Skype.find_users_of_type(group_type)
|
35
|
+
Skype.groups.find { |g| g.gtype == group_type}.users
|
36
|
+
end
|
37
|
+
|
38
|
+
# Returns an array of users online friends as User objects
|
39
|
+
def Skype.online_friends
|
40
|
+
Skype.find_users_of_type "ONLINE_FRIENDS"
|
41
|
+
end
|
42
|
+
|
43
|
+
# Array of all Users that are friends of the current user
|
44
|
+
def Skype.all_friends
|
45
|
+
Skype.find_users_of_type "ALL_FRIENDS"
|
46
|
+
end
|
47
|
+
|
48
|
+
# Array of all Users defined as Skype Out users
|
49
|
+
def Skype.skypeout_friends
|
50
|
+
Skype.find_users_of_type "SKYPEOUT_FRIENDS"
|
51
|
+
end
|
52
|
+
|
53
|
+
# Array of all Users that the user knows
|
54
|
+
def Skype.all_users
|
55
|
+
Skype.find_users_of_type "ALL_USERS"
|
56
|
+
end
|
57
|
+
|
58
|
+
# Array of Users recently contacted by the user, friends or not
|
59
|
+
def Skype.recently_contacted_users
|
60
|
+
Skype.find_users_of_type "RECENTLY_CONTACTED_USERS"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Array of Users waiting for authorization
|
64
|
+
def Skype.users_waiting_for_authorization
|
65
|
+
Skype.find_users_of_type "USERS_WAITING_MY_AUTHORIZATION"
|
66
|
+
end
|
67
|
+
|
68
|
+
# Array of Users blocked
|
69
|
+
def Skype.blocked_users
|
70
|
+
Skype.find_users_of_type "USERS_BLOCKED_BY_ME"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'appscript'
|
3
|
+
include Appscript
|
4
|
+
|
5
|
+
module SkypeMac
|
6
|
+
|
7
|
+
# Represents Skype internal grouping of contacts; https://developer.skype.com/Docs/ApiDoc/GROUP_object
|
8
|
+
class User
|
9
|
+
def User.skype_attr(attr_sym, accessor=false)
|
10
|
+
module_eval %{def #{attr_sym.to_s}
|
11
|
+
r = Skype.send_ :command => "get user \#{@handle} #{attr_sym.to_s}"
|
12
|
+
v = r.sub(/^.*#{attr_sym.to_s.upcase} /, "")
|
13
|
+
v = true if v == "TRUE"
|
14
|
+
v = nil if v == "FALSE"
|
15
|
+
v
|
16
|
+
end}
|
17
|
+
if accessor
|
18
|
+
module_eval %{def #{attr_sym.to_s}=(value)
|
19
|
+
value = "true" if value == true
|
20
|
+
value = "False" if value == false
|
21
|
+
r = Skype.send_ :command => "set user \#{@handle} #{attr_sym.to_s} \#{value}"
|
22
|
+
v = r.sub(/^.*#{attr_sym.to_s.upcase} /, "")
|
23
|
+
v = true if v == "TRUE"
|
24
|
+
v = nil if v == "FALSE"
|
25
|
+
v
|
26
|
+
end}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def User.skype_attr_reader(*attr_sym)
|
31
|
+
attr_sym.each do |a|
|
32
|
+
User.skype_attr a, false
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def User.skype_attr_accessor(*attr_sym)
|
37
|
+
attr_sym.each do |a|
|
38
|
+
User.skype_attr a, true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
attr_reader :handle
|
43
|
+
skype_attr_reader :fullname, :birthday, :sex, :language, :country, :province
|
44
|
+
skype_attr_reader :city, :phone_home, :phone_office, :phone_mobile, :homepage
|
45
|
+
skype_attr_reader :about, :is_video_capable, :buddystatus, :is_authorized
|
46
|
+
skype_attr_reader :is_blocked, :onlinestatus, :skypeout, :lastonlinetimestamp
|
47
|
+
skype_attr_reader :can_leave_vm, :speeddial, :receivedauthrequest, :mood_text
|
48
|
+
skype_attr_reader :rich_mood_text, :is_cf_active, :nrof_authed_buddies
|
49
|
+
|
50
|
+
#TODO: attr_reader :aliases, :timezone
|
51
|
+
|
52
|
+
attr_accessor :buddystatus, :isblocked, :isauthorized, :speeddial, :displayname
|
53
|
+
|
54
|
+
def initialize(handle)
|
55
|
+
@handle = handle
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/rb-skypemac/version.rb
CHANGED
data/lib/rb-skypemac.rb
CHANGED
@@ -1,95 +1 @@
|
|
1
|
-
Dir[File.join(File.dirname(__FILE__), 'rb-skypemac/**/*.rb')].sort.each { |lib| require lib }
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'appscript'
|
5
|
-
include Appscript
|
6
|
-
|
7
|
-
module SkypeMac
|
8
|
-
# Singleton for interfacing with Skype
|
9
|
-
class Skype
|
10
|
-
def Skype.call(name_or_num)
|
11
|
-
Call.new name_or_num
|
12
|
-
end
|
13
|
-
|
14
|
-
# The Appscript interface to Skype. Requires a Hash containing:
|
15
|
-
# <li><i>:command</i> - the <a href="https://developer.skype.com/Docs/ApiDoc">Skype API command to pass</a>
|
16
|
-
# <li><i>:script_name</i> - unknown all though an empty String makes Skype happy
|
17
|
-
# Impl adds :script_name to Hash and warns if it is not provided
|
18
|
-
def Skype.send_(params)
|
19
|
-
if not params.has_key? :script_name and not @suppress_warnings
|
20
|
-
puts "Warning: Skype Applescript API require 'script_name' key (even with an empty String value). Adding..."
|
21
|
-
params[:script_name] = ""
|
22
|
-
end
|
23
|
-
app('Skype').send_ params
|
24
|
-
end
|
25
|
-
|
26
|
-
def Skype.suppress_warnings
|
27
|
-
@suppress_warnings = 1
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
class Call
|
32
|
-
@@TOGGLE_FLAGS = [:START, :STOP]
|
33
|
-
|
34
|
-
attr :id
|
35
|
-
|
36
|
-
# Creates and initializes a Skype call
|
37
|
-
def initialize(name_or_num)
|
38
|
-
status = Skype.send_ :command => "call #{name_or_num}"
|
39
|
-
if status =~ /CALL (\d+) STATUS/
|
40
|
-
@id = $1
|
41
|
-
else
|
42
|
-
raise Error.new("Could not obtain Call ID")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
# Attempts to hang up a call.<br>
|
47
|
-
# <b>Note</b>: If Skype hangs while placing the call, this method could hang indefinitely
|
48
|
-
def hangup
|
49
|
-
Skype.send_ :command => "set call #{@id} status finished"
|
50
|
-
end
|
51
|
-
|
52
|
-
# Retrieves the status of the current call.<br>
|
53
|
-
# <b>Untested</b>
|
54
|
-
def status
|
55
|
-
Skype.send_ :command => "get call #{@id} status"
|
56
|
-
end
|
57
|
-
|
58
|
-
# Returns one of:<br>
|
59
|
-
# <li>VIDEO_NONE
|
60
|
-
# <li>VIDEO_SEND_ENABLED
|
61
|
-
# <li>VIDEO_RECV_ENABLED
|
62
|
-
# <li>VIDEO_BOTH_ENABLED
|
63
|
-
def get_video_status
|
64
|
-
Skype.send_ :command => "get call #{id} video_status"
|
65
|
-
end
|
66
|
-
|
67
|
-
# Accepts :START or :STOP
|
68
|
-
def send_video(toggle_flag)
|
69
|
-
raise Error.new("Illegal flag: #{toggle_flag}") if not @@TOGGLE_FLAGS.index toggle_flag
|
70
|
-
Skype.send_ :command => "alter call #{id} #{toggle_flag.downcase.to_s}_video_send"
|
71
|
-
end
|
72
|
-
|
73
|
-
# Accepts :START or :STOP
|
74
|
-
def rcv_video(toggle_flag)
|
75
|
-
raise Error.new("Illegal flag: #{toggle_flag}") if not @@TOGGLE_FLAGS.index toggle_flag
|
76
|
-
Skype.send_ :command => "alter call #{id} #{toggle_flag.downcase.to_s}_video_receive"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
# Singleton for managing Skype user status
|
81
|
-
class Iam
|
82
|
-
@@STATUSES = [:ONLINE, :OFFLINE, :SKYPEME, :AWAY, :NA, :DND, :INVISIBLE]
|
83
|
-
|
84
|
-
def Iam.set_user_status(status)
|
85
|
-
raise NoMethodError.new("#{status} in #{Iam.to_s}") if not @@STATUSES.index status.upcase.to_sym
|
86
|
-
Skype.send_ :command => "SET USERSTATUS #{status}"
|
87
|
-
end
|
88
|
-
|
89
|
-
# Handles all of the user status permutations accepted by Skype otherwise Errors.
|
90
|
-
# For example, <i>Iam.away</i> is legal.
|
91
|
-
def Iam.method_missing(id)
|
92
|
-
Iam.set_user_status(id.id2name)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
1
|
+
Dir[File.join(File.dirname(__FILE__), 'rb-skypemac/**/*.rb')].sort.each { |lib| require lib }
|
data/test/test_group.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
include SkypeMac
|
3
|
+
|
4
|
+
class TestGroup < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@gs = Group.groups
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_group_types
|
11
|
+
gtypes = Group.types
|
12
|
+
assert gtypes
|
13
|
+
assert gtypes.class == Array
|
14
|
+
assert !gtypes.empty?
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_groups
|
18
|
+
assert @gs
|
19
|
+
assert @gs.class == Array
|
20
|
+
assert !@gs.empty?
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_get_type
|
24
|
+
type = Group.get_type @gs[0].gid
|
25
|
+
assert type
|
26
|
+
assert type.class == String
|
27
|
+
assert type.match(/^\w+$/)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_gtype
|
31
|
+
assert @gs[0].gtype
|
32
|
+
assert @gs[0].gtype.class == String
|
33
|
+
assert @gs[0].gtype.match(/^\w+$/)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_gid
|
37
|
+
assert @gs[0].gid
|
38
|
+
assert @gs[0].gid.class == String
|
39
|
+
assert @gs[0].gid.match(/^\d+$/)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_member_user_names
|
43
|
+
user_names = @gs[0].member_user_names
|
44
|
+
assert user_names
|
45
|
+
assert user_names.class == Array
|
46
|
+
assert !user_names.empty?
|
47
|
+
user_names.each { |n| assert n.index(" ").nil? }
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_users
|
51
|
+
assert users = @gs[0].users
|
52
|
+
assert users.empty? == false
|
53
|
+
assert users[0].class == User
|
54
|
+
end
|
55
|
+
end
|
data/test/test_skype.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
|
4
|
+
class TestSkype < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_groups
|
7
|
+
gs = Skype.groups
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_online_friends
|
11
|
+
assert users = Skype.online_friends
|
12
|
+
assert users.empty? == false
|
13
|
+
assert users[0].class == User
|
14
|
+
end
|
15
|
+
end
|
data/test/test_user.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
include SkypeMac
|
3
|
+
|
4
|
+
class TestUser < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@user = User.new "sleight42"
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_handle
|
11
|
+
assert @user.handle
|
12
|
+
assert @user.handle == "sleight42"
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_fullname
|
16
|
+
assert @user.fullname
|
17
|
+
assert @user.fullname == "Evan"
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_city
|
21
|
+
assert @user.city
|
22
|
+
assert @user.city == "Vienna"
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_isblocked
|
26
|
+
prk166 = User.new prk166
|
27
|
+
prk166.isblocked = true
|
28
|
+
assert prk166.isblocked
|
29
|
+
prk166.isblocked = false
|
30
|
+
assert prk166.isblocked == false
|
31
|
+
end
|
32
|
+
end
|
data/website/index.html
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
<h1>rb skypemac</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/rb-skypemac"; return false'>
|
35
35
|
Get Version
|
36
|
-
<a href="http://rubyforge.org/projects/rb-skypemac" class="numbers">0.
|
36
|
+
<a href="http://rubyforge.org/projects/rb-skypemac" class="numbers">0.2.0</a>
|
37
37
|
</div>
|
38
38
|
<h1>→ ‘rb-skypemac’</h1>
|
39
39
|
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rb-skypemac
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-04-
|
6
|
+
version: 0.2.0
|
7
|
+
date: 2007-04-26 00:00:00 -04:00
|
8
8
|
summary: Ruby interface to Skype on Mac OS X
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -34,6 +34,11 @@ files:
|
|
34
34
|
- README.txt
|
35
35
|
- Rakefile
|
36
36
|
- lib/rb-skypemac.rb
|
37
|
+
- lib/rb-skypemac/call.rb
|
38
|
+
- lib/rb-skypemac/group.rb
|
39
|
+
- lib/rb-skypemac/iam.rb
|
40
|
+
- lib/rb-skypemac/skype.rb
|
41
|
+
- lib/rb-skypemac/user.rb
|
37
42
|
- lib/rb-skypemac/version.rb
|
38
43
|
- scripts/txt2html
|
39
44
|
- setup.rb
|
@@ -45,8 +50,11 @@ files:
|
|
45
50
|
- website/stylesheets/screen.css
|
46
51
|
- website/template.rhtml
|
47
52
|
test_files:
|
53
|
+
- test/test_group.rb
|
48
54
|
- test/test_helper.rb
|
49
55
|
- test/test_rb-skypemac.rb
|
56
|
+
- test/test_skype.rb
|
57
|
+
- test/test_user.rb
|
50
58
|
rdoc_options: []
|
51
59
|
|
52
60
|
extra_rdoc_files: []
|