javaeye
最近在学习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
相关阅读
新博客地址昨天遇到了这个问题,在网页端可以正常使用QQ通讯组件,但是放到了移动端就不行。试了好久终于搞定,在此分享一下我的经验,如
1.File Zilla File Zilla是一个开源的,跨平台的Linux FTP客户端。File Zilla有一个标签式的用户界面,允许用户查看正在传输的
SVN客户端使用——如何访问库文件本地选择一个空间足够大的存储盘,新建一个名为SVN_WORK 文件夹专门用来存放SVN文件,在SVN_WORK文
打开终端输入:open -n /Applications/WeChat.app/Contents/MacOS/WeChat即可完成微信的双开。
1. 运行环境 (1) 操作系统 :windows10 (2) JDK:1.7 (3) IDE:Myeclipse10 (4)服务器:tomcat72. 服务端搭建步骤 (1) 在myeclipse中创建 Web