bryanl-skype 0.0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ .belly
2
+ .redcar
3
+ *.gem
4
+ pkg
5
+ tags
6
+ pkg
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in skype.gemspec
4
+ gemspec
data/History.txt ADDED
@@ -0,0 +1,9 @@
1
+ 2010/08/12
2
+ - Added some very basic instructions.
3
+
4
+ 2010/04/12
5
+ - Simple class structure for sending chat messages
6
+
7
+ 2010/04/11
8
+ - Started development, with a simple file that uses various chat-related aspects of the raw dbus-transported API.
9
+ - Added dependency: dbus => http://github.com/mvidner/ruby-dbus/downloads
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2010 Niko Felger
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all 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
19
+ THE SOFTWARE.
20
+
21
+ This product uses the Skype API but is not endorsed, certified or otherwise
22
+ approved in any way by Skype.
data/Rakefile ADDED
@@ -0,0 +1,78 @@
1
+ require "rubygems"
2
+ require "rake/gempackagetask"
3
+ require "rake/rdoctask"
4
+
5
+ require "spec"
6
+ require "spec/rake/spectask"
7
+ Spec::Rake::SpecTask.new do |t|
8
+ t.spec_opts = %w(--format specdoc --colour)
9
+ t.libs = ["spec"]
10
+ end
11
+
12
+ require 'cucumber'
13
+ require 'cucumber/rake/task'
14
+ Cucumber::Rake::Task.new('features') do |t|
15
+ t.cucumber_opts = %w{--format pretty}
16
+ end
17
+
18
+ task :default => ["spec", "features"]
19
+
20
+ # This builds the actual gem. For details of what all these options
21
+ # mean, and other ones you can add, check the documentation here:
22
+ #
23
+ # http://rubygems.org/read/chapter/20
24
+ #
25
+ spec = Gem::Specification.new do |s|
26
+
27
+ # Change these as appropriate
28
+ s.name = "skype"
29
+ s.version = "0.1.0"
30
+ s.summary = "Skype Api wrapper"
31
+ s.author = "Niko Felger"
32
+ s.email = "niko.felger@gmail.com"
33
+ s.homepage = "http://github.com/nfelger/skype"
34
+
35
+ s.has_rdoc = false
36
+ # You should probably have a README of some kind. Change the filename
37
+ # as appropriate
38
+ # s.extra_rdoc_files = %w(README)
39
+ # s.rdoc_options = %w(--main README)
40
+
41
+ # Add any extra files to include in the gem (like your README)
42
+ s.files = %w(History.txt) + Dir.glob("{bin,spec,lib/**/*}")
43
+ s.executables = FileList["bin/**"].map { |f| File.basename(f) }
44
+ s.require_paths = ["lib"]
45
+
46
+ # If you want to depend on other gems, add them here, along with any
47
+ # relevant versions
48
+ # s.add_dependency("some_other_gem", "~> 0.1.0")
49
+
50
+ # If your tests use any gems, include them here
51
+ s.add_development_dependency("rspec")
52
+ s.add_development_dependency("cucumber")
53
+ end
54
+
55
+ # To publish your gem online, install the 'gemcutter' gem; Read more
56
+ # about that here: http://gemcutter.org/pages/gem_docs
57
+ Rake::GemPackageTask.new(spec) do |pkg|
58
+ pkg.gem_spec = spec
59
+ end
60
+
61
+ desc "Build the gemspec file #{spec.name}.gemspec"
62
+ task :gemspec do
63
+ file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
64
+ File.open(file, "w") {|f| f << spec.to_ruby }
65
+ end
66
+
67
+ task :package => :gemspec
68
+
69
+ # Generate documentation
70
+ Rake::RDocTask.new do |rd|
71
+ rd.rdoc_files.include("lib/**/*.rb")
72
+ rd.rdoc_dir = "rdoc"
73
+ end
74
+
75
+ desc 'Clear out RDoc and generated packages'
76
+ task :clean => [:clobber_rdoc, :clobber_package] do
77
+ rm "#{spec.name}.gemspec"
78
+ end
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', '..', 'lib')
4
+
5
+ require 'skype'
6
+ require 'pp'
7
+
8
+ Skype.on(:chatmessage_received) do |chatmessage|
9
+ chatmessage.chat do |chat|
10
+ chatmessage.body do |body|
11
+ chat.send_message(body)
12
+ end
13
+ end
14
+ end
15
+
16
+ Skype.attach
17
+
18
+ Thread.list.each{|t| t.join}
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', '..', 'lib')
4
+
5
+ require 'skype'
6
+ require 'pp'
7
+
8
+ Skype.attach
9
+
10
+ Skype.chats do |chats|
11
+ chats.each do |chat|
12
+ p chat
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', '..', 'lib')
4
+ require 'skype'
5
+
6
+ Skype.attach
7
+
8
+ chat_id, message_body = ARGV[0..1]
9
+
10
+ Skype.chat(chat_id).send_message(message_body)
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+
3
+ export DISPLAY=:2
4
+
5
+ if [[ ! -e /tmp/.X2-lock ]]
6
+ then Xvfb :2 &
7
+ fi
8
+
9
+ skype &
@@ -0,0 +1,9 @@
1
+ Feature: Receiving chat messages
2
+ Background:
3
+ Given I am using the Skype Api testing fake
4
+
5
+ Scenario: Receiving a message
6
+ Given a client has registered a callback for notifications about "CHATMESSAGE"
7
+ When Skype issues a notification "CHATMESSAGE 123 STATUS RECEIVED"
8
+ Then the callback should be called
9
+
@@ -0,0 +1,13 @@
1
+ Feature: Send a chat message
2
+
3
+ Background:
4
+ Given I am using the Skype Api testing fake
5
+
6
+ Scenario: Send message
7
+ Given there is a chat with id "#test/$echo123;2010fc482c5ce233"
8
+ When I send a chatmessage "Howdy pal!" to "#test/$echo123;2010fc482c5ce233"
9
+ Then the Skype Api should receive the message
10
+ """
11
+ CHATMESSAGE #test/$echo123;2010fc482c5ce233 Howdy pal!
12
+ """
13
+
@@ -0,0 +1,39 @@
1
+ Given /^I am using the Skype Api testing fake$/ do
2
+ # Silence constant re-assignment warning.
3
+ original_verbosity = $VERBOSE
4
+ $VERBOSE = nil
5
+ Skype::Api = Skype::FakeApi
6
+ $VERBOSE = original_verbosity
7
+ end
8
+
9
+ Given /^there is a chat with id "([^\"]*)"$/ do |chat_id|
10
+ # Let's assume it exists.
11
+ end
12
+
13
+ Given /^a client has registered a callback for notifications about "([^\"]*)"$/ do |scope|
14
+ @callback = lambda do
15
+ if @called
16
+ @called
17
+ else
18
+ @called = true
19
+ false
20
+ end
21
+ end
22
+ Skype::Api.on_notification(scope, @callback)
23
+ end
24
+
25
+ When /^I send a chatmessage "([^\"]*)" to "([^\"]*)"$/ do |message_body, chat_id|
26
+ Skype::Chat.new(chat_id).send_message(message_body)
27
+ end
28
+
29
+ When /^Skype issues a notification "([^\"]*)"$/ do |notification|
30
+ Skype::Api.notify(notification)
31
+ end
32
+
33
+ Then /^the Skype Api should receive the message$/ do |string|
34
+ Skype::Api.recorded_messages.should include(string)
35
+ end
36
+
37
+ Then /^the callback should be called$/ do
38
+ @callback.call.should be_true
39
+ end
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', '..', 'lib')
2
+
3
+ require 'skype'
@@ -0,0 +1,22 @@
1
+ require 'forwardable'
2
+
3
+ module Skype
4
+ class FakeApi < Api
5
+ class << self
6
+ extend Forwardable
7
+
8
+ def_delegator :instance, :recorded_messages
9
+ end
10
+
11
+ def attach
12
+ end
13
+
14
+ def invoke(message)
15
+ recorded_messages << message
16
+ end
17
+
18
+ def recorded_messages
19
+ @recorded_messages ||= []
20
+ end
21
+ end
22
+ end
data/lib/skype.rb ADDED
@@ -0,0 +1,21 @@
1
+ require 'forwardable'
2
+
3
+ require 'skype/api'
4
+ require 'skype/chat'
5
+ require 'skype/chatmessage'
6
+ require 'skype/events'
7
+
8
+ module Skype
9
+ class << self
10
+ extend Forwardable
11
+
12
+ def_delegator Skype::Api, :instance, :instance
13
+ def_delegator Skype::Api, :attach
14
+ def_delegator Skype::Chat, :new, :chat
15
+ def_delegator Skype::Chat, :all, :chats
16
+ def_delegator Skype::Events, :on
17
+
18
+ Skype::Events.initialize_listeners
19
+ end
20
+ end
21
+
data/lib/skype/api.rb ADDED
@@ -0,0 +1,111 @@
1
+ require 'dbus'
2
+ require 'forwardable'
3
+
4
+ module Skype
5
+ class Notify < DBus::Object
6
+ dbus_interface "com.Skype.API.Client" do
7
+ dbus_method :Notify, "in data:s" do |message|
8
+ Api.notify(message)
9
+ end
10
+ end
11
+ end
12
+
13
+ class Api
14
+ class << self
15
+ extend Forwardable
16
+ def_delegators :instance, :attach, :invoke, :on_notification, :notify
17
+
18
+ def instance
19
+ @instance ||= new
20
+ end
21
+ end
22
+
23
+ def attach(application_name="ruby-skype")
24
+ raise "Already attached." if @attached
25
+
26
+ # Say hi to Skype.
27
+ api.Invoke "NAME #{application_name}"
28
+ api.Invoke "PROTOCOL 7"
29
+
30
+ run_notification_thread
31
+
32
+ @attached = true
33
+ end
34
+
35
+ def invoke(message, &block)
36
+ raise "Not attached to skype. Call Skype::Api.attach first." unless @attached
37
+
38
+ log_outgoing message
39
+ if block_given?
40
+ api.Invoke(message) do |headers, answer|
41
+ log_incoming answer
42
+ block.call(answer)
43
+ end
44
+ else
45
+ answer = api.Invoke(message) do |_, _|
46
+ # Huh? Without passing in a block, sometimes it hangs...??
47
+ end
48
+ log_incoming answer
49
+ answer
50
+ end
51
+ end
52
+
53
+ def on_notification(scope, proc=nil, &block)
54
+ raise "Need to register callbacks before attaching to Skype." if @attached
55
+
56
+ callbacks[scope] ||= []
57
+ callbacks[scope] << (proc ? proc : block)
58
+ end
59
+
60
+ def notify(message)
61
+ log_incoming message
62
+
63
+ callbacks.keys.each do |key|
64
+ next unless match = Regexp.new("^#{key}").match(message)
65
+ callbacks[key].each{ |callback| callback.call(*match.captures) }
66
+ end
67
+ end
68
+
69
+ private
70
+
71
+ def initialize
72
+ # 'pu'a says no.
73
+ end
74
+
75
+ def api
76
+ @api ||= begin
77
+ skype_service = bus.service("com.Skype.API")
78
+ skype_object = skype_service.object('/com/Skype')
79
+ skype_object.introspect
80
+ skype_object["com.Skype.API"]
81
+ end
82
+ end
83
+
84
+ def run_notification_thread
85
+ thread = Thread.new do
86
+ receiving_service = bus.request_service("com.nikofelger.ruby-skype")
87
+ receiving_service.export(Notify.new("/com/Skype/Client"))
88
+ dbus_event_loop = DBus::Main.new
89
+ dbus_event_loop << bus
90
+ dbus_event_loop.run
91
+ end
92
+ thread.run
93
+ end
94
+
95
+ def bus
96
+ DBus::SessionBus.instance
97
+ end
98
+
99
+ def callbacks
100
+ @callback ||= {}
101
+ end
102
+
103
+ def log_incoming(message)
104
+ STDERR.puts "<- #{message}"
105
+ end
106
+
107
+ def log_outgoing(message)
108
+ STDERR.puts "-> #{message}"
109
+ end
110
+ end
111
+ end
data/lib/skype/chat.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'skype/events'
2
+
3
+ module Skype
4
+ class Chat
5
+ class << self
6
+ attr_accessor :chats
7
+
8
+ def all
9
+ chats if chats
10
+
11
+ Api.invoke("SEARCH CHATS")
12
+ sleep 0.01 while chats.nil?
13
+
14
+ yield chats
15
+ end
16
+ end
17
+
18
+ attr_reader :chatname
19
+
20
+ def initialize(chatname)
21
+ @chatname = chatname
22
+ end
23
+
24
+ def send_message(message)
25
+ Api.invoke("CHATMESSAGE #{@chatname} #{message}")
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,37 @@
1
+ module Skype
2
+ class Chatmessage
3
+ def initialize(id)
4
+ @chatmessage_id = id
5
+ end
6
+
7
+ def chat(&block)
8
+ return unless block_given?
9
+ get_property("CHATNAME") do |chatname|
10
+ block.call(Chat.new(chatname))
11
+ end
12
+ end
13
+
14
+ def body(&block)
15
+ return unless block_given?
16
+ get_property("BODY", &block)
17
+ end
18
+
19
+ def from(&block)
20
+ return unless block_given?
21
+ get_property("FROM_HANDLE", &block)
22
+ end
23
+
24
+ def from_name(&block)
25
+ return unless block_given?
26
+ get_property("FROM_DISPNAME", &block)
27
+ end
28
+
29
+ private
30
+ def get_property(property, &block)
31
+ return unless block_given?
32
+ Api.invoke("GET CHATMESSAGE #{@chatmessage_id} #{property}") do |message|
33
+ yield message.split[3..-1].join(' ')
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,29 @@
1
+ require 'thread'
2
+
3
+ module Skype
4
+ class Events
5
+ class << self
6
+ def on(event)
7
+ case event
8
+
9
+ when :chatmessage_received
10
+ Skype::Api.instance.on_notification("CHATMESSAGE (.*) STATUS RECEIVED") do |chatmessage_id|
11
+ yield Chatmessage.new(chatmessage_id)
12
+ end
13
+
14
+ when :chats_received
15
+ Skype::Api.instance.on_notification("CHATS (.*)") do |chatlist|
16
+ yield chatlist.split(', ').map { |chatname| Chat.new(chatname) }
17
+ end
18
+ end
19
+ end
20
+
21
+ def initialize_listeners
22
+ mutex = Mutex.new
23
+ Skype::Events.on(:chats_received) do |chats|
24
+ mutex.synchronize { Skype::Chat.chats = chats }
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
data/readme.md ADDED
@@ -0,0 +1,70 @@
1
+ # skype – library to talk to the Skype API
2
+
3
+ ## Description
4
+
5
+ This library is a simple wrapper for Skype's dbus-based Linux API.
6
+
7
+ Currently, it has the following capabilities:
8
+
9
+ * Get a list of your chats,
10
+ * send chat messages,
11
+ * receive chat messages,
12
+ * use the raw Skype protocol via Skype::Api#invoke and Skype::Api#on_notification. More information about the protocol at [developer.skype.com](http://developer.skype.com)
13
+
14
+
15
+ ## Installation
16
+
17
+ In order to work with the skype gem, there are a few requirements:
18
+
19
+ - You need to be on Linux
20
+ - You need to have Skype running
21
+ - You need dbus installed (e.g., via apt on Ubuntu)
22
+ - You need the ruby-dbus gem:
23
+ - wget http://github.com/downloads/mvidner/ruby-dbus/ruby-dbus-0.3.1.tgz
24
+ - tar xzf ruby-dbus-0.3.1.tgz
25
+ - cd ruby-dbus-0.3.1
26
+ - follow the instructions in README
27
+ - You may want Xvfb (if you want to run Skype head-less)
28
+
29
+
30
+ ## Verify your installation
31
+
32
+ To confirm it's working, start skype and sign in. Then, open an irb session and:
33
+
34
+ require 'dbus'
35
+ bus = DBus::SessionBus.instance
36
+ skype_service = bus.service("com.Skype.API")
37
+ client_to_skype = skype_service.object('/com/Skype')
38
+ client_to_skype.introspect
39
+ api = client_to_skype["com.Skype.API"]
40
+ api.Invoke("NAME ruby-skype")
41
+
42
+ If everything is set up correctly, Skype will now ask whether "ruby-skype" should be allowed to connect.
43
+
44
+
45
+ ## Usage
46
+
47
+ There are a few examples in `examples/` that should give you an idea of how
48
+ to use the gem.
49
+
50
+
51
+ ## Head-less skype
52
+
53
+ Say you want to be running an app that connects to skype on a box that won't have a display attached. For this use case, Xvfb is quite handy:
54
+
55
+ > "Xvfb or X virtual framebuffer is an X11 server that performs all graphical operations in memory, not showing any screen output." (wikipedia)"
56
+
57
+ In `examples/start_skype`, there's a shell script that shows how to start Skype and Xvfb.
58
+
59
+ You can safely ignore warnings about missing fonts, but if they bother you, try:
60
+
61
+ sudo aptitude install xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic
62
+
63
+ If Xvfb won't start at all, more drastic measures may be required:
64
+
65
+ sudo apt-get install xserver-xorg-core
66
+
67
+ ## small print
68
+
69
+ This product uses the Skype API but is not endorsed, certified or otherwise
70
+ approved in any way by Skype.
data/skype.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.version = "0.0.1.1"
6
+ s.name = "bryanl-skype"
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Niko Felger"]
9
+ s.email = ["niko.felger@gmail.com"]
10
+ s.homepage = "https://github.com/nfelger/skype"
11
+ s.summary = %q{Unofficial Skype Api wrapper}
12
+ s.description = %q{Unofficial Skype Api wrapper}
13
+
14
+ s.rubyforge_project = "skype"
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
+ s.has_rdoc = false
21
+ s.rubygems_version = %q{1.3.7}
22
+ s.add_dependency("ruby-dbus", ["~> 0.6.0"])
23
+ end
@@ -0,0 +1,39 @@
1
+ require 'skype/chat'
2
+
3
+ # describe Skype::Chat, '.all' do
4
+ # subject { Skype::Chat }
5
+ #
6
+ # it "should get the list of chats from the api" do
7
+ # Skype.instance.should_receive(:invoke).with("SEARCH CHATS") do
8
+ # Skype.instance.notify("CHATS")
9
+ # end
10
+ #
11
+ # subject.all
12
+ # end
13
+ #
14
+ # context "when the response contains chats" do
15
+ # before(:each) do
16
+ # Skype.instance.stub!(:invoke).with("SEARCH CHATS") do
17
+ # Skype.instance.notify("CHATS #bitman/$jessy;eb06e65612353279, #bitman/$jdenton;9244e98f82d7d391")
18
+ # end
19
+ # end
20
+ #
21
+ # it "should return a new Chat object for each chat id in the response" do
22
+ # subject.all do |chats|
23
+ # chats.all?{|chat| chat.should be_a(Skype::Chat)}
24
+ # chats.map{|chat| chat.chatname}.should == ["#bitman/$jessy;eb06e65612353279", "#bitman/$jdenton;9244e98f82d7d391"]
25
+ # end
26
+ # end
27
+ # end
28
+ # end
29
+
30
+ describe Skype::Chat, '#send_message' do
31
+ subject { Skype::Chat.new('#test/$echo123;2010fc482c5ce233') }
32
+
33
+ it "should tell the api to send the message" do
34
+ Skype.instance.should_receive(:invoke).
35
+ with("CHATMESSAGE #test/$echo123;2010fc482c5ce233 ohai Zkaip")
36
+
37
+ subject.send_message("ohai Zkaip")
38
+ end
39
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+ require 'skype'
3
+
4
+ describe Skype, '.instance' do
5
+ subject { Skype.instance }
6
+ it { should be_a(Skype::Api) }
7
+ end
8
+
9
+ describe Skype, '.attach' do
10
+ it "should delegate to Skype::Api" do
11
+ Skype::Api.should_receive(:attach).with("chat id")
12
+
13
+ Skype.attach("chat id")
14
+ end
15
+ end
16
+
17
+ describe Skype, '.chat' do
18
+ subject { Skype.chat('chat id') }
19
+ it { should be_a(Skype::Chat) }
20
+ end
21
+
22
+ describe Skype, '.chats' do
23
+ it "should delegate to Skype::Chat" do
24
+ Skype::Chat.should_receive(:all)
25
+
26
+ Skype.chats
27
+ end
28
+ end
29
+
30
+ describe Skype, '.on' do
31
+ it "should delegate to Skype::Events" do
32
+ Skype::Events.should_receive(:on)
33
+
34
+ Skype.on
35
+ end
36
+ end
37
+
@@ -0,0 +1,5 @@
1
+ require 'skype'
2
+ require File.join(File.dirname(__FILE__), '..', 'features', 'support', 'lib', 'fake_api')
3
+ require 'pp'
4
+
5
+ Skype::Api.instance_variable_set(:"@instance", Skype::FakeApi.instance)
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bryanl-skype
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1.1
6
+ platform: ruby
7
+ authors:
8
+ - Niko Felger
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-11-01 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ruby-dbus
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 0.6.0
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ description: Unofficial Skype Api wrapper
27
+ email:
28
+ - niko.felger@gmail.com
29
+ executables: []
30
+
31
+ extensions: []
32
+
33
+ extra_rdoc_files: []
34
+
35
+ files:
36
+ - .gitignore
37
+ - Gemfile
38
+ - History.txt
39
+ - LICENSE
40
+ - Rakefile
41
+ - examples/chats/echo_server.rb
42
+ - examples/chats/list_chats.rb
43
+ - examples/chats/send_chat.rb
44
+ - examples/start_skype
45
+ - features/receive_chatmessage.feature
46
+ - features/send_chatmessage.feature
47
+ - features/step_definitions/skype_steps.rb
48
+ - features/support/env.rb
49
+ - features/support/lib/fake_api.rb
50
+ - lib/skype.rb
51
+ - lib/skype/api.rb
52
+ - lib/skype/chat.rb
53
+ - lib/skype/chatmessage.rb
54
+ - lib/skype/events.rb
55
+ - readme.md
56
+ - skype.gemspec
57
+ - spec/lib/skype/chat_spec.rb
58
+ - spec/lib/skype_spec.rb
59
+ - spec/spec_helper.rb
60
+ homepage: https://github.com/nfelger/skype
61
+ licenses: []
62
+
63
+ post_install_message:
64
+ rdoc_options: []
65
+
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "0"
80
+ requirements: []
81
+
82
+ rubyforge_project: skype
83
+ rubygems_version: 1.8.10
84
+ signing_key:
85
+ specification_version: 3
86
+ summary: Unofficial Skype Api wrapper
87
+ test_files: []
88
+