HEMiDEMi4r 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
+