Changeset 7045

Show
Ignore:
Timestamp:
02/22/08 22:52:30 (5 years ago)
Author:
mootoh
Message:

platform/quicksilver/TwitterPlugin: http_proxy env supported, collect all following, status post to be async.

Location:
platform/quicksilver/TwitterPlugin
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • platform/quicksilver/TwitterPlugin/Info.plist

    r7024 r7045  
    1616        <string>BNDL</string> 
    1717        <key>CFBundleVersion</key> 
    18         <string>F7</string> 
     18        <string>109</string> 
    1919        <key>NSPrincipalClass</key> 
    2020        <string>RCLoader</string> 
  • platform/quicksilver/TwitterPlugin/TwitterPluginSource.rb

    r7024 r7045  
    4343      url = 'http://' + screen_name + ':' + password + 
    4444            '@twitter.com/statuses/friends/' + screen_name + '.json' 
     45      #Shared.logger.info(url) 
    4546 
    4647      if count > 1 
     
    4950      count += 1 
    5051 
    51       friends = JSON.parse(open(url).read) 
    52       friends.each do |friend| 
    53         Shared.logger.info(friend['screen_name']) 
    54         obj = OSX::QSObject.objectWithName(friend['screen_name']) 
    55         obj.setObject_forType('', 'TwitterPluginType') 
    56         obj.setPrimaryType('TwitterPluginType') 
    57         objects.push(obj) 
     52      friends = [] 
     53      begin 
     54        sio = open(url) 
     55        #Shared.logger.info('1') 
     56        res = sio.read 
     57        #Shared.logger.info('2') 
     58        unless res 
     59          #Shared.logger.info('2-5') 
     60          Shared.logger.info('no friends retrieved.') 
     61          break 
     62        end 
     63        #Shared.logger.info('3') 
     64        #Shared.logger.info(res.class.to_s) 
     65 
     66        friends = JSON.parse(res) 
     67        #Shared.logger.info('4') 
     68        friends.each do |friend| 
     69          #Shared.logger.info(friend['screen_name']) 
     70          obj = OSX::QSObject.objectWithName(friend['screen_name']) 
     71          obj.setObject_forType('', 'TwitterPluginType') 
     72          obj.setPrimaryType('TwitterPluginType') 
     73          objects.push(obj) 
     74        end 
     75 
     76        @friends += friends 
     77      rescue => e 
     78        Shared.logger.info('objectsForEntry : exception: ' + e.to_s) 
     79        [] 
    5880      end 
    59  
    60       @friends += friends 
    6181 
    6282      break if (friends.size < 100) 
     
    7797    return false if @friends.empty? 
    7898 
    79     Shared.logger.info('1') 
    80  
    8199    her = @friends.find {|x| x['screen_name'] == object.name.to_s} 
    82100    img = OSX::NSImage.alloc.initWithContentsOfURL(OSX::NSURL.URLWithString(her['profile_image_url'])) 
  • platform/quicksilver/TwitterPlugin/qs_action.rb

    r7024 r7045  
    1010require 'cgi' 
    1111require 'kconv' 
     12require 'net/http' 
     13require 'uri' 
    1214 
    1315#  
     
    2931  end 
    3032 
    31   def make_request(content) 
     33  def name_and_pass 
     34    dict = OSX::NSUserDefaultsController.sharedUserDefaultsController.values; 
     35    screen_name = dict.valueForKey("TwitterPreference.screenName") 
     36    password    = dict.valueForKey("TwitterPreference.password") 
     37    [screen_name.to_s, password] 
     38  end 
     39 
     40  def make_request_with_cocoa(content) 
    3241    u = 'http://' + name_pass + '@twitter.com/statuses/update.json' 
    33     # Shared.logger.info(u.to_s) 
     42    Shared.logger.info(u.to_s) 
    3443 
    3544    req = OSX::NSMutableURLRequest.alloc.initWithURL(OSX::NSURL.URLWithString(u)) 
     
    3948    req 
    4049  end 
     50 
     51  def request_with_cocoa(req) 
     52    con = OSX::NSURLConnection.connectionWithRequest_delegate(req, self) 
     53    Shared.logger.info(con ? "request succeeded" : "request failed") 
     54  end 
     55 
     56  def make_request(content) 
     57    req = Net::HTTP::Post.new('/statuses/update.json') 
     58    np = name_and_pass 
     59    req.basic_auth np[0], np[1] 
     60    req.body = Kconv.toutf8(content) 
     61    req 
     62  end 
     63 
     64  def request(req) 
     65    http = if ENV['http_proxy'] 
     66      u = URI.parse(ENV['http_proxy']) 
     67      Net::HTTP::Proxy(u.host, u.port).new('twitter.com') 
     68    else 
     69      Net::HTTP.new('twitter.com') 
     70    end 
     71 
     72    res = http.request(req) 
     73    Shared.logger.info(res.message) 
     74    res 
     75  end 
    4176     
    4277  def post_to(arg, friend) 
    4378    str = arg.stringValue.to_s 
    4479    if str == '/reload' 
     80      Shared.logger.info('reload') 
    4581      reload 
    4682      return arg 
     
    5490    begin 
    5591      content = 'source=QSTwitter&status=' + CGI.escape(str) 
    56       req = make_request(content) 
    57       con = OSX::NSURLConnection.connectionWithRequest_delegate(req, self) 
    58       # Shared.logger.info(con ? "request succeeded" : "request failed") 
     92      Thread.new { 
     93        request(make_request(content)) 
     94      } 
    5995    rescue 
    6096    end 
     
    74110 
    75111  # 
    76   # callbacks 
     112  # callbacks for Cocoa HTTP request 
    77113  # 
    78114  def connection_didReceiveResponse(con, res) 
    79     #Shared.logger.info("connection_didReceiveResponse") 
     115    Shared.logger.info('connection_didReceiveResponse' + res.statusCode.to_s) 
    80116  end 
    81117 
    82118  def connection_didReceiveData(con, data) 
    83     #Shared.logger.info("connection_didReceiveData") 
     119    Shared.logger.info('connection_didReceiveData' + data.to_s) 
    84120    #OSX::QSShowNotifierWithAttributes({'QSTwitter' => OSX::QSNotifierTitle, 'posted' => OSX::QSNotifierText}) 
    85121  end 
    86122 
    87123  def connection_didFailWithErro(con, err) 
    88     #Shared.logger.info("connection_didFailWithErro") 
     124    Shared.logger.info('connection_didFailWithErro' + err.to_s) 
    89125  end 
    90126 
    91127  def connectiondidFinishLoading(con) 
    92     #Shared.logger.info("connectiondidFinishLoading") 
     128    Shared.logger.info("connectiondidFinishLoading") 
    93129  end 
    94130end # Action