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.
Files changed (2) hide show
  1. data/lib/hemidemi.rb +65 -0
  2. 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
+