JavaEye闲聊客户端[ruby]

最近在学习ruby的GUI工具Shoes,想用ruby做一个和JE Talker差不多的工具,所以就先写了个JavaEye的Client。

目前已完成认证,get_all(获取全站闲聊),get_list(获取自己订阅的闲聊),get_reply(获取@自己的闲聊)。

这是项目地址:http://javaeye-client-ruby.googlecode.com/svn/trunk/

code:

 

require'net/http'
require'json'
module JavaEye
  AUTH_URL="http://api.iteye.com/api/auth/verify"
  VIA="EyeShoes"
  LIST_URL="http://api.iteye.com/api/twitters/list"
  REPLY_URL='http://api.iteye.com/api/twitters/replies'
  ALL_URL='http://api.iteye.com/api/twitters/all'
  class User
    %W[name domain id logo].each do |attr|
      attr_accessor attr.to_sym
    end
    def initialize(hash)
      hash.each do |key,value|
        self.send("#{key}=",value)
      end
    end
  end
  class Twitter
    %W[user id created_at body name logo domain receiver reply_to_id via].each do |attr|
      attr_accessor attr.to_sym
    end
    def initialize(hash)
      hash.each do |key,value|
        if key=="user"
          self.send("#{key}=",User.new(value))
        else
        self.send("#{key}=",value)
        end
      end
    end
  end
  class Client
    attr_accessor:user
    attr_accessor:auth_code
    def initialize(username,password)
      @username=username
      @password=password
    end
    def auth
      @url=AUTH_URL
      @url=URI.parse(@url)
      Net::HTTP.start(@url.host) do |http|
        req=Net::HTTP::Get.new(@url.path)
        req.basic_auth @username,@password
        resp=http.request(req)
        case resp.code
        when "200"
          @auth_code="200"
          @user=User.new(JSON.parse(resp.body))
        when "400"
          @auth_code="400"
        when "401"
          @auth_code="401"
        end
      end
    end
    def option2query(option)
       query=''
       option.each do |key,value|
        query<<(key.to_s+'='+value.to_s+'&')
        query.chomp
      end
      query.chop
    end
    def get_request_uri(path,option)
      query=option2query(option)
      if query.empty?
        path
      else
        path+'?'+query
      end
    end
    def basic_get_request(url,option={})
      url=get_request_uri(url,option)
      url=URI.parse(url)
      Net::HTTP.start(url.host) do |http|
        req=Net::HTTP::Get.new(url.request_uri)
        req.basic_auth @username,@password
        resp=http.request(req)
        return resp
      end
    end
    def basic_post_request(url,data,option={})
      url=get_request_uri(url,option)
      url=URI.parse(url)
      Net::HTTP.start(url.host) do |http|
        req=Net::HTTP::Post.new(url.request_uri,data)
        req.basic_auth @username,@password
        resp=http.request(req)
        return resp
      end
    end
    def get_twitters(url,option)
      resp=basic_get_request(url,option)
      case resp.code
        when "200"
          @auth_code="200"
          twitters||=[]
          JSON.parse(resp.body).each do |twitter|
            twitters<<Twitter.new(twitter)
          end
          twitters
        when "400"
          @auth_code="400"
          nil
        when "401"
          @auth_code="401"
          nil
      end
    end
    def get_list(option={})
      get_twitters(LIST_URL,option)
    end
    def get_reply(option={})
      get_twitters(REPLY_URL,option)
    end
    def get_all(option={})
      get_twitters(ALL_URL,option)
    end
    def create
    end
    def delete
    end
  end
end

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值