Changeset 7663

Show
Ignore:
Timestamp:
03/08/08 23:37:04 (5 years ago)
Author:
cho45
Message:

lang/ruby/net-irc/trunk/examples/tig.rb:

1.8.4 で動いてなかったので戻した。uri.query 設定しないとだめ? よくわからない

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/net-irc/trunk/examples/tig.rb

    r7215 r7663  
    425425        def api(path, q={}) 
    426426                ret     = {} 
    427                 headers = { 
     427                header = { 
    428428                        "User-Agent"               => @user_agent, 
     429                        "Authorization"            => "Basic " + ["#{@real}:#{@pass}"].pack("m"), 
     430                        "If-Modified-Since"        => q.key?("since") ? q["since"] : "", 
    429431                        "X-Twitter-Client"         => api_source, 
    430432                        "X-Twitter-Client-Version" => server_version, 
    431433                        "X-Twitter-Client-URL"     => "http://coderepos.org/share/browser/lang/ruby/misc/tig.rb", 
    432434                } 
    433                 if q.key?("since") 
    434                         headers["If-Modified-Since"] = q["since"].to_s #q.delete("since").to_s 
    435                 end 
     435 
    436436                q["source"] ||= api_source 
    437437                q = q.inject([]) {|r,(k,v)| v.inject(r) {|r,i| r << "#{k}=#{URI.escape(i, /[^-.!~*'()\w]/n)}" } }.join("&") 
     438 
    438439                uri = api_base.dup 
    439                 uri.path = path.sub(%r{^/*}, "/") << ".json" 
     440                uri.path  = path.sub(%r{^/*}, "/") << ".json" 
     441                uri.query = q 
     442 
    440443                http = Net::HTTP.new(uri.host, uri.port) 
    441444                if uri.scheme == "https" 
     
    443446                        http.verify_mode = OpenSSL::SSL::VERIFY_NONE # FIXME 
    444447                end 
    445                 case uri.path 
    446                 when "/statuses/update.json", "/direct_messages/new.json" 
    447                         req = Net::HTTP::Post.new(uri.request_uri, headers) 
    448                         req.body = q 
    449                 else 
    450                         uri.query = q 
    451                         req = Net::HTTP::Get.new(uri.request_uri, headers) 
    452                 end 
    453                 req.basic_auth(@real, @pass) 
    454                 @log.debug uri.inspect 
    455                 ret = http.request req 
    456                 @log.debug ret.inspect 
     448                http.start do 
     449                        case uri.path 
     450                        when "/statuses/update.json", "/direct_messages/new.json" 
     451                                ret = http.post(uri.request_uri, q, header) 
     452                        else 
     453                                ret = http.get(uri.request_uri, header) 
     454                        end 
     455                end 
     456 
    457457                case ret 
    458458                when Net::HTTPOK # 200 
    459                         JSON.parse(ret.body.gsub(/'(y(?:es)?|no?|true|false|null)'/, '"\1"')) 
     459                        ret = JSON.parse(ret.body.gsub(/'(y(?:es)?|no?|true|false|null)'/, '"\1"')) 
     460                        raise ApiFailed, "Server Returned Error: #{ret["error"]}" if ret.kind_of?(Hash) && ret["error"] 
     461                        ret 
    460462                when Net::HTTPNotModified # 304 
    461463                        []