`
Hooopo
  • 浏览: 335421 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 

 

 

分享到:
评论
11 楼 poshboytl 2009-09-15  
rubynroll 写道
看来什么时候我也搞个RubyGnome2版的JE闲聊客户端?呵呵~


强烈支持....虽然我没法用...
10 楼 mubenchi 2009-09-05  
Hooopo 写道
mubenchi 写道
弱问一下,官网没法上啊 怎么办。http://shoooes.net

见此贴:http://www.iteye.com/topic/454528

谢谢!
9 楼 rubynroll 2009-09-03  
看来什么时候我也搞个RubyGnome2版的JE闲聊客户端?呵呵~
8 楼 Hooopo 2009-09-03  
mubenchi 写道
弱问一下,官网没法上啊 怎么办。http://shoooes.net

见此贴:http://www.iteye.com/topic/454528
7 楼 mubenchi 2009-09-03  
弱问一下,官网没法上啊 怎么办。http://shoooes.net
6 楼 Hooopo 2009-03-09  
火星叔叔马丁 写道
早点让大家测试 ^_^
今天测试了muder和fins的 等你的作品

好的!我尽快。
5 楼 Hooopo 2009-03-09  
fins 写道
有截图吗?

额,我的界面弄的很难看。。
4 楼 fins 2009-03-09  
有截图吗?
3 楼 Hooopo 2009-03-09  
robbin 写道
很有意思的想法阿! 可惜的是我的MacOS上面运行这个程序总是报Shoes无法加载json,尽管我已经安装了json的gem。等换到XP上面安装看看

windows上面shoes已经装好了json库。
show,create,delete等方法都已经写好了。不过在用shoes的过程中出现了很多问题。
button控件用汉字(utf8)会出现乱码,而para、title要设置成utf8编码和:font才能正确显示汉字。不知道这是为什么。
还有就是不知道如何去掉滚动条,我把stack的:scroll设置成false也没有用。
2 楼 wosmvp 2009-03-08  
加载Gem的写法有问题

Shoes.setup do
  gem 'json'
end

Shoes不能共享Ruby安装的Gem,会自己再安装一套
1 楼 robbin 2009-03-08  
很有意思的想法阿! 可惜的是我的MacOS上面运行这个程序总是报Shoes无法加载json,尽管我已经安装了json的gem。等换到XP上面安装看看

相关推荐

    javaEye客户端

    JavaEye客户端是一款基于Java开发的开源软件,专为学习和理解客户端编程技术而设计,尤其适合初学者。这个客户端代码库包含了许多与网络通信相关的功能,主要集中在HTTP协议的使用和数据解析上。通过深入研究JavaEye...

    android javaeye客户端

    《Android JavaEye客户端详解》 JavaEye作为知名的IT社区,为开发者提供了丰富的资讯与交流平台。而Android JavaEye客户端则是该社区为了满足移动用户需求,专门开发的一款应用程序,旨在让用户随时随地获取最新的...

    javaeye 基于android客户端

    JavaEye是一个基于Android平台的应用程序,它展示了在移动设备上构建功能丰富的软件的可能性。这个小应用旨在为开发者提供灵感和指导,帮助他们更好地理解和实践Android应用开发。让我们深入探讨一下这个应用背后的...

    网站Android客户端制作帮助文档

    - 实现了JavaEye闲聊功能,允许用户进行即时聊天。 - 支持站内短信功能,方便用户发送和接收站内消息。 - 集成了收藏功能,让用户能够收藏感兴趣的内容。 - **发布情况**:该应用已经成功上线Android Market,即...

    麦库客户端模仿javaeye插入代码高亮插件

    【标题】:“麦库客户端模仿javaeye插入代码高亮插件” 这个标题表明我们要讨论的是一个针对麦库(Maiku)客户端的修改或增强,它借鉴了JavaEye网站的代码高亮显示功能。JavaEye是一个知名的中国IT社区,其代码高亮...

    JavaEye Client SourceCode

    JavaEye Client SourceCode是一个开源项目,专为Android平台设计,提供了JavaEYE的客户端实现。这个项目的源代码为我们提供了一个深入了解Android应用开发以及Java编程在移动设备上的实践的宝贵资源。接下来,我们将...

    javaeye android client

    经过2个半星期的努力… lordhong和mqqqvpppm, 轩[kop]一起开发了JavaEye的android客户端alpha版本. 当前版本包括闲聊, 站内短信, 和收藏. 功能安装当前API上的描述来开发

    javaeye被黑

    javaeye被黑 大家看看

    JavaEye3.0开发手记

    ### JavaEye3.0开发手记之开发环境搭建详解 #### 一、开发环境搭建概述 随着JavaEye3.0开发计划的启动,本篇文章将详细介绍如何为该项目搭建高效的开发环境。开发过程中不仅需要考虑软件的选择,还需要针对操作...

    javaeye热点阅读

    19. Ruby on Rails:Ruby on Rails是一个流行的Web开发框架,文中探讨了其在企业开发、嵌入式开发中的应用,以及工作流实现。 20. AJAX技术:包括ExtJS基础教程和jQuery图片循环效果,展示了AJAX如何提升用户体验。...

    JavaEye新闻月刊_-_2009年3月_-_总第13期

    同期,Ruby on Rails 2.3最终版发布,该版本引入了Rack中间件的使用和支持新Engine的增强等关键特性,增强了Ruby on Rails的可扩展性和性能。 在开源技术领域,Linux有潜力成为Java的操作系统(OS),以及Google ...

    ruby watir教程

    - **Ruby操作Excel**:`http://www.javaeye.com/topic/46768` 提供了Ruby操作Excel的方法。 - **Ruby自带教程**:位于 `C:\ruby\doc\ProgrammingRuby.chm` ,提供了详细的Ruby教程。 - **Ruby自带示例**:位于 `C:\...

    JavaEye+技术架构

    JavaEye+技术架构,讲述java框架的应用

    ruby study

    - `*`表示匹配前一个字符0次或多次,例如`/Hello*/`可以匹配`Hello`或`HelloJavaeye`。 - `+`表示匹配前一个字符1次或多次,例如`/a+c/`可以匹配`abc`或`abbc`等。 - `{n}`表示精确匹配前一个字符n次,例如`/d{3}/`...

    javaeye的信息提示框代码之js

    javaeye的信息提示框代码之css,application.js

    JavaEye2.0_on_rails

    ### JavaEye2.0_on_rails:敏捷Web开发实践与Ruby on Rails的应用 #### 敏捷软件开发方法 - **背景**:传统软件工程方法在实际应用中面临着项目延期、成本超支以及软件质量不高的问题。为了克服这些挑战,业界提出...

    ruby勇士,边玩边学习

    ruby勇士,初学者边游戏边学习ruby的好玩的东西。具体玩法在 http://www.javaeye.com/topic/383938,或者Google一下“ruby勇士”。因为下载游戏的网站有时访问不了,上传一下提供下载。

Global site tag (gtag.js) - Google Analytics