HEMiDEMi4r 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/hemidemi.rb +65 -0
 - metadata +46 -0
 
    
        data/lib/hemidemi.rb
    ADDED
    
    | 
         @@ -0,0 +1,65 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class HEMiDEMi
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'open-uri'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'hpricot'
         
     | 
| 
      
 5 
     | 
    
         
            +
            =begin
         
     | 
| 
      
 6 
     | 
    
         
            +
            Format:
         
     | 
| 
      
 7 
     | 
    
         
            +
              rss/bookmark/[recent|popular|recommendation|recent_recommendation|recent_popular].xml
         
     | 
| 
      
 8 
     | 
    
         
            +
              rss/user/xxx/bookmark/[recent|recommendation].xml
         
     | 
| 
      
 9 
     | 
    
         
            +
              rss/group/xxx/bookmark/[recent|popular|recommendation|recent_recommendation|recent_popular].xml
         
     | 
| 
      
 10 
     | 
    
         
            +
              rss/bookmark/tag/[tagname].xml
         
     | 
| 
      
 11 
     | 
    
         
            +
              rss/user/xxx/bookmark/tag/[tagname].xml
         
     | 
| 
      
 12 
     | 
    
         
            +
              rss/group/xxx/bookmark/tag/[tagname].xml
         
     | 
| 
      
 13 
     | 
    
         
            +
            =end
         
     | 
| 
      
 14 
     | 
    
         
            +
              HEMiDEMi_URL = "http://www.hemidemi.com/"
         
     | 
| 
      
 15 
     | 
    
         
            +
              BOOKMARKS_URL = HEMiDEMi_URL + "rss/bookmark/"
         
     | 
| 
      
 16 
     | 
    
         
            +
              USER_BOOKMARKS_URL = HEMiDEMi_URL + "rss/user/"
         
     | 
| 
      
 17 
     | 
    
         
            +
              GROUP_BOOKMARKS_URL = HEMiDEMi_URL + "rss/group/"
         
     | 
| 
      
 18 
     | 
    
         
            +
              def method_missing(m_id, options=nil, *args)
         
     | 
| 
      
 19 
     | 
    
         
            +
                # options => Hash
         
     | 
| 
      
 20 
     | 
    
         
            +
                # {:user => "garylin", :group => "ruby_and_ror", :tag => "tag"}
         
     | 
| 
      
 21 
     | 
    
         
            +
                bkms = $1 if m_id.to_s =~ /^get_(\w+)_bookmarks/
         
     | 
| 
      
 22 
     | 
    
         
            +
                ubkms = $1 if m_id.to_s =~ /^get_(\w+)_bookmarks_by_user/
         
     | 
| 
      
 23 
     | 
    
         
            +
                gbkms = $1 if m_id.to_s =~ /^get_(\w+)_bookmarks_by_group/
         
     | 
| 
      
 24 
     | 
    
         
            +
                tags = $1 if m_id.to_s =~ /^get_tag_bookmarks_by_(\w+)/
         
     | 
| 
      
 25 
     | 
    
         
            +
                from, type = $1, $2 if m_id.to_s =~ /^get_url_by_(\w+)_(\w+)/
         
     | 
| 
      
 26 
     | 
    
         
            +
                type = $1 if m_id.to_s =~ /^get_url_by_(\w+)/
         
     | 
| 
      
 27 
     | 
    
         
            +
                
         
     | 
| 
      
 28 
     | 
    
         
            +
                super(m_id) if (bkms.nil? && ubkms.nil? && gbkms.nil? && tags.nil? && type.nil?)
         
     | 
| 
      
 29 
     | 
    
         
            +
                # Get Bookmarks in recent or others
         
     | 
| 
      
 30 
     | 
    
         
            +
                @url = BOOKMARKS_URL + bkms.to_s + ".xml" unless (bkms.nil? || bkms.size < 1)
         
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
                # Get Bookmarks in recent or recommend by user
         
     | 
| 
      
 33 
     | 
    
         
            +
                @url = USER_BOOKMARKS_URL + options.to_s + "/bookmark/" + ubkms.to_s + ".xml" if (options.is_a?(String) && (!ubkms.nil? || (ubkms.size > 0) if ubkms.is_a?(String)))
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                # Get bookmarks in recent of others by group
         
     | 
| 
      
 36 
     | 
    
         
            +
                @url = GROUP_BOOKMARKS_URL + options.to_s + "/bookmark/" + gbkms.to_s + ".xml" if (options.is_a?(String) && (!gbkms.nil? || (gbkms.size > 0) if gbkms.is_a?(String)))
         
     | 
| 
      
 37 
     | 
    
         
            +
                
         
     | 
| 
      
 38 
     | 
    
         
            +
                # Get bookmarks by tag
         
     | 
| 
      
 39 
     | 
    
         
            +
                # @url = tags.to_s + user + "/bookmark/tag/" + tag + ".xml"
         
     | 
| 
      
 40 
     | 
    
         
            +
                case tags
         
     | 
| 
      
 41 
     | 
    
         
            +
                  when "user"
         
     | 
| 
      
 42 
     | 
    
         
            +
                    user, tag = options[:user], options[:tag] if options.is_a?(Hash)
         
     | 
| 
      
 43 
     | 
    
         
            +
                    @url = USER_BOOKMARKS_URL + user + "/bookmark/tag/" + tag + ".xml"
         
     | 
| 
      
 44 
     | 
    
         
            +
                  when "group"
         
     | 
| 
      
 45 
     | 
    
         
            +
                    group, tag = options[:group], options[:tag] if options.is_a?(Hash)
         
     | 
| 
      
 46 
     | 
    
         
            +
                    @url = GROUP_BOOKMARKS_URL + group + "/bookmark/tag/" + tag + ".xml"
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                return self.send("get_#{type.to_s.split("_")[1]}_bookmarks_by_#{from}", options) if (!from.nil? && !type.nil?)
         
     | 
| 
      
 50 
     | 
    
         
            +
                return self.send("get_#{type}_bookmarks") unless type.nil?
         
     | 
| 
      
 51 
     | 
    
         
            +
                return @url if !@url.nil?
         
     | 
| 
      
 52 
     | 
    
         
            +
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
              
         
     | 
| 
      
 54 
     | 
    
         
            +
              def get_rss(from="", name="", type="recent")
         
     | 
| 
      
 55 
     | 
    
         
            +
                doc = nil
         
     | 
| 
      
 56 
     | 
    
         
            +
                if (from.size > 0 && name.size > 0)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  doc = Hpricot(open(self.send("get_url_by_#{from}_#{type}", name)))
         
     | 
| 
      
 58 
     | 
    
         
            +
                else
         
     | 
| 
      
 59 
     | 
    
         
            +
                  doc = Hpricot(open(self.send("get_url_by_#{type}")))
         
     | 
| 
      
 60 
     | 
    
         
            +
                end
         
     | 
| 
      
 61 
     | 
    
         
            +
                search = doc.search("//channel/item")
         
     | 
| 
      
 62 
     | 
    
         
            +
                return [search, search.size]
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
              
         
     | 
| 
      
 65 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            rubygems_version: 0.9.2
         
     | 
| 
      
 3 
     | 
    
         
            +
            specification_version: 1
         
     | 
| 
      
 4 
     | 
    
         
            +
            name: HEMiDEMi4r
         
     | 
| 
      
 5 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 6 
     | 
    
         
            +
              version: 0.1.1
         
     | 
| 
      
 7 
     | 
    
         
            +
            date: 2007-06-21 00:00:00 +08:00
         
     | 
| 
      
 8 
     | 
    
         
            +
            summary: HEMiDEMi Library
         
     | 
| 
      
 9 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 10 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 11 
     | 
    
         
            +
            email: zusocfc@gmail.com
         
     | 
| 
      
 12 
     | 
    
         
            +
            homepage: http://zusocfc.blogspot.com
         
     | 
| 
      
 13 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            description: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 16 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 17 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 18 
     | 
    
         
            +
            has_rdoc: false
         
     | 
| 
      
 19 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Version::Requirement 
         
     | 
| 
      
 20 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 21 
     | 
    
         
            +
              - - ">"
         
     | 
| 
      
 22 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 23 
     | 
    
         
            +
                  version: 0.0.0
         
     | 
| 
      
 24 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 25 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 26 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 27 
     | 
    
         
            +
            cert_chain: 
         
     | 
| 
      
 28 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 29 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 30 
     | 
    
         
            +
            - CFC
         
     | 
| 
      
 31 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 32 
     | 
    
         
            +
            - lib/hemidemi.rb
         
     | 
| 
      
 33 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            dependencies: []
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     |