Patches for ruby-dbus
[twitterpathy.git] / twitterpathy.rb
blobfe39dc388e428d45b43da1e5e2bc183806d72301
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 HANDLE_TYPE_NONE = 0
14 HANDLE_TYPE_CONTACT = 1
15 HANDLE_TYPE_ROOM = 2
16 HANDLE_TYPE_LIST = 3
17 HANDLE_TYPE_GROUP = 4
19 CONNECTION_STATUS_CONNECTED = 0
20 CONNECTION_STATUS_CONNECTING = 1
21 CONNECTION_STATUS_DISCONNECTED = 2
23 CONNECTION_STATUS_REASON_NONE_SPECIFIED = 0
24 CONNECTION_STATUS_REASON_REQUESTED = 1
25 CONNECTION_STATUS_REASON_NETWORK_ERROR = 2
26 CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED = 3
27 CONNECTION_STATUS_REASON_ENCRYPTION_ERROR = 4
28 CONNECTION_STATUS_REASON_NAME_IN_USE = 5
29 CONNECTION_STATUS_REASON_CERT_NOT_PROVIDED = 6
30 CONNECTION_STATUS_REASON_CERT_UNTRUSTED = 7
31 CONNECTION_STATUS_REASON_CERT_EXPIRED = 8
32 CONNECTION_STATUS_REASON_CERT_NOT_ACTIVATED = 9
33 CONNECTION_STATUS_REASON_CERT_HOSTNAME_MISMATCH = 10
34 CONNECTION_STATUS_REASON_CERT_FINGERPRINT_MISMATCH = 11
35 CONNECTION_STATUS_REASON_CERT_SELF_SIGNED = 12
36 CONNECTION_STATUS_REASON_CERT_OTHER_ERROR = 13
38 # TODO: other flags in this set
39 CHANNEL_GROUP_FLAG_PROPERTIES = 2048
41 #Handles used for contact lists, of type HANDLE_TYPE_LIST
42 LIST_HANDLE_FOLLOWERS = 1
43 LIST_HANDLE_FRIENDS = 2
45 class Twitterpathy < DBus::Object
46         dbus_interface "org.freedesktop.Telepathy.ConnectionManager" do
47                 dbus_method :GetParameters, "in proto:s, out parameters:a(susv)" do |proto|
48                         puts "GetParameters(#{proto.inspect})"
49                         $stderr.puts "Attempt to use unsupported protocol #{proto}" if proto != 'twitter'
50                         
51                         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', '']]]
52                         [parameters]
53                 end
54                 
55                 dbus_method :ListProtocols, "out protocols:as" do ||
56                         puts "ListProtocols"
57                         protocols = ['twitter']
58                         [protocols]
59                 end
60                 
61                 dbus_method :RequestConnection, "in proto:s, in parameters:a{sv}, out service:s, out object:o" do |proto, parameters|
62                         puts "RequestConnection(#{proto.inspect}, #{parameters.inspect})"
63                         $stderr.puts "Attempt to use unsupported protocol #{proto}" if proto != 'twitter'
64