Implementing GetParameters
[twitterpathy.git] / twitterpathy.rb
blob743164cf17386bbda1daadef96183ed2fb73f62e
1 #!/usr/bin/env ruby
3 #require 'rubygems'
4 #gem('twitter4r', '>=0.2.1')
5 #require 'twitter'
6 require 'dbus'
8 CONN_MGR_PARAM_FLAG_REQUIRED = 1
9 CONN_MGR_PARAM_FLAG_REGISTER = 2
10 CONN_MGR_PARAM_FLAG_HAS_DEFAULT = 4
11 CONN_MGR_PARAM_FLAG_SECRET = 8
13 class Twitterpathy < DBus::Object
14         # Create an interface.
15         dbus_interface "org.ruby.SampleInterface" do
16                 # Create a hello method in that interface.
17                 dbus_method :hello, "in name:s, in name2:s" do |name, name2|
18                         puts "hello(#{name}, #{name2})"
19                 end
20         end
21         
22         dbus_interface "org.freedesktop.Telepathy.ConnectionManager" do
23                 dbus_method :GetParameters, "in proto:s, out parameters:a(susv)" do |proto|
24                         puts "GetParameters(#{proto})"
25                         parameters = [['account', CONN_MGR_PARAM_FLAG_REQUIRED | CONN_MGR_PARAM_FLAG_REGISTER, 's', ['s', '']], ['password', CONN_MGR_PARAM_FLAG_REQUIRED | CONN_MGR_PARAM_FLAG_REGISTER | CONN_MGR_PARAM_FLAG_SECRET, 's', ['s', '']]]
26                         [parameters]
27                 end
28                 
29                 dbus_method :ListProtocols, "out protocols:as" do ||
30                         puts "ListProtocols"
31                         protocols = ['twitter']
32                         [protocols]
33                 end
34                 
35                 dbus_method :RequestConnection, "in proto:s, in parameters:a{sv}, out service:s, out object:o" do |proto, parameters|
36                         puts "RequestConnection(#{proto}, #{parameters})"
37                         service = nil
38                         object = nil
39                         [service, object]
40                 end
41         end
42 end
44 bus = DBus::SessionBus.instance
46 service = bus.request_service("org.freedesktop.Telepathy.ConnectionManager.Twitterpathy")
48 exported_obj = Twitterpathy.new("/org/freedesktop/Telepathy/ConnectionManager/Twitterpathy")
49 service.export(exported_obj)
51 puts "listening"
52 main = DBus::Main.new
53 main << bus
54 main.run