crown 0.0.11 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/ChangeLog +11 -3
  2. data/README.rdoc +23 -1
  3. data/Rakefile +1 -1
  4. data/VERSION +1 -1
  5. data/crown.gemspec +28 -7
  6. data/example/cgmcount.rb +65 -0
  7. data/example/feedcount.rb +50 -0
  8. data/example/sbmcount.rb +5 -1
  9. data/lib/crown.rb +4 -14
  10. data/lib/crown/backtype.rb +29 -25
  11. data/lib/crown/backtype/counter.rb +79 -0
  12. data/lib/crown/buzzurl.rb +15 -28
  13. data/lib/crown/buzzurl/counter.rb +88 -0
  14. data/lib/crown/cgm.rb +98 -0
  15. data/lib/crown/cgm/countable.rb +130 -0
  16. data/lib/crown/cgm/summarizable.rb +130 -0
  17. data/lib/crown/delicious.rb +14 -29
  18. data/lib/crown/delicious/counter.rb +88 -0
  19. data/lib/crown/facebook.rb +32 -27
  20. data/lib/crown/facebook/counter.rb +76 -0
  21. data/lib/crown/facebook/entry.rb +86 -0
  22. data/lib/crown/hatena/bookmark.rb +26 -168
  23. data/lib/crown/hatena/bookmark/counter.rb +82 -0
  24. data/lib/crown/hatena/bookmark/entry.rb +108 -0
  25. data/lib/crown/hatena/bookmark/linktrace.rb +135 -0
  26. data/lib/crown/http-wrapper.rb +201 -0
  27. data/lib/crown/livedoor/clip.rb +15 -18
  28. data/lib/crown/livedoor/clip/counter.rb +96 -0
  29. data/lib/crown/livedoor/reader.rb +16 -19
  30. data/lib/crown/livedoor/reader/counter.rb +82 -0
  31. data/lib/crown/topsy.rb +20 -21
  32. data/lib/crown/topsy/counter.rb +78 -0
  33. data/lib/crown/tweetmeme.rb +20 -21
  34. data/lib/crown/tweetmeme/counter.rb +78 -0
  35. data/lib/crown/twitter.rb +14 -31
  36. data/lib/crown/{http.rb → twitter/uri.rb} +24 -39
  37. data/lib/crown/twitter/uri/counter.rb +86 -0
  38. data/lib/crown/twitter/user.rb +76 -0
  39. data/lib/crown/twitter/user/counter.rb +85 -0
  40. data/lib/crown/twitter/user/entry.rb +96 -0
  41. data/lib/crown/yahoo.rb +7 -3
  42. data/lib/crown/yahoo/bookmark.rb +23 -28
  43. data/lib/crown/yahoo/bookmark/counter.rb +84 -0
  44. data/test/{crown_test.rb → crown-test.rb} +46 -21
  45. data/test/{test_helper.rb → test-helper.rb} +1 -1
  46. metadata +30 -9
  47. data/lib/crown/amazon.rb +0 -157
  48. data/lib/crown/amazon/ecs.rb +0 -385
@@ -0,0 +1,78 @@
1
+ # -*- coding: utf-8 -*-
2
+ # --------------------------------------------------------------------------- #
3
+ #
4
+ # tweetmeme/counter.rb
5
+ #
6
+ # Copyright (c) 2008 - 2012, clown.
7
+ #
8
+ # Redistribution and use in source and binary forms, with or without
9
+ # modification, are permitted provided that the following conditions
10
+ # are met:
11
+ #
12
+ # - Redistributions of source code must retain the above copyright
13
+ # notice, this list of conditions and the following disclaimer.
14
+ # - Redistributions in binary form must reproduce the above copyright
15
+ # notice, this list of conditions and the following disclaimer in the
16
+ # documentation and/or other materials provided with the distribution.
17
+ # - No names of its contributors may be used to endorse or promote
18
+ # products derived from this software without specific prior written
19
+ # permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
27
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28
+ # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+ #
33
+ # --------------------------------------------------------------------------- #
34
+ module Crown
35
+ class TweetMeme
36
+ class URICounter
37
+ require 'cgi'
38
+ require 'crown/cgm/countable'
39
+ require 'rubygems'
40
+ require 'json'
41
+
42
+ # ------------------------------------------------------------------- #
43
+ # Mix-in modules
44
+ # ------------------------------------------------------------------- #
45
+ include Crown::CGM::Countable
46
+
47
+ private
48
+ # --------------------------------------------------------------- #
49
+ # address
50
+ # --------------------------------------------------------------- #
51
+ def address()
52
+ return 'api.tweetmeme.com'
53
+ end
54
+
55
+ # --------------------------------------------------------------- #
56
+ # path
57
+ # --------------------------------------------------------------- #
58
+ def path()
59
+ return '/url_info.json'
60
+ end
61
+
62
+ # --------------------------------------------------------------- #
63
+ # query
64
+ # --------------------------------------------------------------- #
65
+ def query(uri, options)
66
+ return '?url=' + CGI.escape(uri)
67
+ end
68
+
69
+ # --------------------------------------------------------------- #
70
+ # parse
71
+ # --------------------------------------------------------------- #
72
+ def parse(body)
73
+ json = JSON.parse(body)
74
+ return json["story"]["url_count"].to_i
75
+ end
76
+ end # URICounter
77
+ end # TweetMeme
78
+ end # Crown
data/lib/crown/twitter.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # twitter.rb
5
5
  #
6
- # Copyright (c) 2008 - 2011, clown.
6
+ # Copyright (c) 2008 - 2012, clown.
7
7
  #
8
8
  # Redistribution and use in source and binary forms, with or without
9
9
  # modification, are permitted provided that the following conditions
@@ -33,39 +33,22 @@
33
33
  # --------------------------------------------------------------------------- #
34
34
  module Crown
35
35
  module Twitter
36
- require 'cgi'
37
- require 'net/http'
38
- require 'crown/http'
39
- require 'rubygems'
40
- require 'json'
41
- Net::HTTP.version_1_2
36
+ require 'crown/twitter/user'
37
+ require 'crown/twitter/uri'
42
38
 
43
39
  # ------------------------------------------------------------------- #
44
- # structures
40
+ #
41
+ # count (deprecated)
42
+ #
43
+ # あるユーザに関する各種情報を取得する.
44
+ # Crown::Twitter::User.summary(screen_name, options) と等しい.
45
+ #
46
+ # NOTE: このメソッドは将来的に削除される予定なので,
47
+ # 代替のメソッドを使用する事.
48
+ #
45
49
  # ------------------------------------------------------------------- #
46
- Counter = Struct.new(:status, :favorite, :friend, :follower, :list)
47
-
48
- # ------------------------------------------------------------------- #
49
- # count
50
- # ------------------------------------------------------------------- #
51
- def count(screen_name, proxy_host = nil, proxy_port = nil)
52
- begin
53
- session = Net::HTTP.new('api.twitter.com', 80, proxy_host, proxy_port)
54
- path = '/1/users/show.json?screen_name=' + CGI.escape(screen_name)
55
- response = Crown::HTTP.get(session, path)
56
- return nil if (response == nil || response.code.to_i != 200)
57
-
58
- json = JSON.parse(response.body)
59
- result = Counter.new
60
- result.status = json["statuses_count"].to_i
61
- result.favorite = json["favourites_count"].to_i
62
- result.friend = json["friends_count"].to_i
63
- result.follower = json["followers_count"].to_i
64
- result.list = json["listed_count"].to_i
65
- return result
66
- rescue Exception
67
- return nil
68
- end
50
+ def count(screen_name, options = nil)
51
+ return Crown::Twitter::User.summary(screen_name, options)
69
52
  end
70
53
 
71
54
  module_function :count
@@ -1,9 +1,9 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # --------------------------------------------------------------------------- #
3
3
  #
4
- # http.rb
4
+ # twitter/uri.rb
5
5
  #
6
- # Copyright (c) 2008 - 2011, clown.
6
+ # Copyright (c) 2008 - 2012, clown.
7
7
  #
8
8
  # Redistribution and use in source and binary forms, with or without
9
9
  # modification, are permitted provided that the following conditions
@@ -32,45 +32,30 @@
32
32
  #
33
33
  # --------------------------------------------------------------------------- #
34
34
  module Crown
35
- module HTTP
36
- require 'net/http'
37
- Net::HTTP.version_1_2
38
-
39
- # ------------------------------------------------------------------- #
35
+ module Twitter
36
+ # --------------------------------------------------------------- #
40
37
  #
41
- # get
38
+ # URI
42
39
  #
43
- # サーバの状況によって失敗する事があるので,最大で limit get()
44
- # を試す.session には Net::HTTP クラス,またはその派生クラスの
45
- # インスタンスを指定する.
40
+ # Twitter API 経由である URL に対する各種情報を取得するクラス.
46
41
  #
47
- # ------------------------------------------------------------------- #
48
- def get(session, path, limit = 3)
49
- n = 0
50
- begin
51
- session.start if (!session.active?)
52
- response = session.get(path)
53
- while (response.code.to_i == 301)
54
- session.finish if (session.active?)
55
- uri = URI.parse(response['Location'])
56
- session = Net::HTTP.new(uri.host, uri.port, session.proxy_address, session.proxy_port)
57
- path = String.new(uri.path)
58
- if (uri.query != nil)
59
- path.concat("?")
60
- path.concat(uri.query)
61
- end
62
- response = session.get(path)
63
- end
64
- return response
65
- rescue Exception
66
- session.finish if (session.active?)
67
- if (n < limit)
68
- n += 1
69
- retry
70
- end
71
- return nil
42
+ # --------------------------------------------------------------- #
43
+ class URI
44
+ require 'crown/twitter/uri/counter'
45
+
46
+ # ----------------------------------------------------------- #
47
+ # URI.count
48
+ # ----------------------------------------------------------- #
49
+ def URI.count(uri, options = nil)
50
+ return Crown::Twitter::URICounter.new.count(uri, options)
72
51
  end
73
- end
74
- module_function :get
75
- end # HTTP
52
+
53
+ # ----------------------------------------------------------- #
54
+ # count
55
+ # ----------------------------------------------------------- #
56
+ def count(uri, options = nil)
57
+ return Crown::Twitter::URICounter.new.count(uri, options)
58
+ end
59
+ end # URI
60
+ end # Twitter
76
61
  end # Crown
@@ -0,0 +1,86 @@
1
+ # -*- coding: utf-8 -*-
2
+ # --------------------------------------------------------------------------- #
3
+ #
4
+ # twitter/uri/counter.rb
5
+ #
6
+ # Copyright (c) 2008 - 2012, clown.
7
+ #
8
+ # Redistribution and use in source and binary forms, with or without
9
+ # modification, are permitted provided that the following conditions
10
+ # are met:
11
+ #
12
+ # - Redistributions of source code must retain the above copyright
13
+ # notice, this list of conditions and the following disclaimer.
14
+ # - Redistributions in binary form must reproduce the above copyright
15
+ # notice, this list of conditions and the following disclaimer in the
16
+ # documentation and/or other materials provided with the distribution.
17
+ # - No names of its contributors may be used to endorse or promote
18
+ # products derived from this software without specific prior written
19
+ # permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
27
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28
+ # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+ #
33
+ # --------------------------------------------------------------------------- #
34
+ module Crown
35
+ module Twitter
36
+ # --------------------------------------------------------------- #
37
+ #
38
+ # URICounter
39
+ #
40
+ # 指定した URL へのツイート数を取得するクラス.
41
+ #
42
+ # --------------------------------------------------------------- #
43
+ class URICounter
44
+ require 'cgi'
45
+ require 'crown/cgm/countable'
46
+ require 'rubygems'
47
+ require 'json'
48
+
49
+ # --------------------------------------------------------------- #
50
+ # Mix-in modules
51
+ # --------------------------------------------------------------- #
52
+ include Crown::CGM::Countable
53
+
54
+ private
55
+ # --------------------------------------------------------------- #
56
+ # address
57
+ # --------------------------------------------------------------- #
58
+ def address()
59
+ return 'urls.api.twitter.com'
60
+ end
61
+
62
+ # --------------------------------------------------------------- #
63
+ # path
64
+ # --------------------------------------------------------------- #
65
+ def path()
66
+ return '/1/urls/count.json'
67
+ end
68
+
69
+ # --------------------------------------------------------------- #
70
+ # query
71
+ # --------------------------------------------------------------- #
72
+ def query(uri, options)
73
+ return '?url=' + CGI.escape(uri)
74
+ end
75
+
76
+ # --------------------------------------------------------------- #
77
+ # parse
78
+ # --------------------------------------------------------------- #
79
+ def parse(body)
80
+ json = JSON.parse(body)
81
+ return json['count'].to_i
82
+ return error_value()
83
+ end
84
+ end # URICounter
85
+ end # Twitter
86
+ end # Crown
@@ -0,0 +1,76 @@
1
+ # -*- coding: utf-8 -*-
2
+ # --------------------------------------------------------------------------- #
3
+ #
4
+ # twitter/user.rb
5
+ #
6
+ # Copyright (c) 2008 - 2012, clown.
7
+ #
8
+ # Redistribution and use in source and binary forms, with or without
9
+ # modification, are permitted provided that the following conditions
10
+ # are met:
11
+ #
12
+ # - Redistributions of source code must retain the above copyright
13
+ # notice, this list of conditions and the following disclaimer.
14
+ # - Redistributions in binary form must reproduce the above copyright
15
+ # notice, this list of conditions and the following disclaimer in the
16
+ # documentation and/or other materials provided with the distribution.
17
+ # - No names of its contributors may be used to endorse or promote
18
+ # products derived from this software without specific prior written
19
+ # permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
27
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28
+ # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+ #
33
+ # --------------------------------------------------------------------------- #
34
+ module Crown
35
+ module Twitter
36
+ # --------------------------------------------------------------- #
37
+ #
38
+ # User
39
+ #
40
+ # Twitter API 経由であるユーザに対する各種情報を取得するクラス.
41
+ #
42
+ # --------------------------------------------------------------- #
43
+ class User
44
+ require 'crown/twitter/user/counter'
45
+ require 'crown/twitter/user/entry'
46
+
47
+ # ----------------------------------------------------------- #
48
+ # User.count
49
+ # ----------------------------------------------------------- #
50
+ def User.count(screen_name, options = nil)
51
+ return Crown::Twitter::TweetCounter.new.count(screen_name, options)
52
+ end
53
+
54
+ # ----------------------------------------------------------- #
55
+ # User.summary
56
+ # ----------------------------------------------------------- #
57
+ def User.summary(screen_name, options = nil)
58
+ return Crown::Twitter::UserEntry.new.summary(screen_name, options)
59
+ end
60
+
61
+ # ----------------------------------------------------------- #
62
+ # count
63
+ # ----------------------------------------------------------- #
64
+ def count(screen_name, options = nil)
65
+ return Crown::Twitter::TweetCounter.new.count(screen_name, options)
66
+ end
67
+
68
+ # ----------------------------------------------------------- #
69
+ # summary
70
+ # ----------------------------------------------------------- #
71
+ def summary(screen_name, options = nil)
72
+ return Crown::Twitter::UserEntry.new.summary(screen_name, options)
73
+ end
74
+ end # User
75
+ end # Twitter
76
+ end # Crown
@@ -0,0 +1,85 @@
1
+ # -*- coding: utf-8 -*-
2
+ # --------------------------------------------------------------------------- #
3
+ #
4
+ # twitter/user/counter.rb
5
+ #
6
+ # Copyright (c) 2008 - 2012, clown.
7
+ #
8
+ # Redistribution and use in source and binary forms, with or without
9
+ # modification, are permitted provided that the following conditions
10
+ # are met:
11
+ #
12
+ # - Redistributions of source code must retain the above copyright
13
+ # notice, this list of conditions and the following disclaimer.
14
+ # - Redistributions in binary form must reproduce the above copyright
15
+ # notice, this list of conditions and the following disclaimer in the
16
+ # documentation and/or other materials provided with the distribution.
17
+ # - No names of its contributors may be used to endorse or promote
18
+ # products derived from this software without specific prior written
19
+ # permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
27
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28
+ # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+ #
33
+ # --------------------------------------------------------------------------- #
34
+ module Crown
35
+ module Twitter
36
+ # --------------------------------------------------------------- #
37
+ #
38
+ # TweetCounter
39
+ #
40
+ # ���郆�[�U�̃c�C�[�g�����擾����N���X�D
41
+ #
42
+ # --------------------------------------------------------------- #
43
+ class TweetCounter
44
+ require 'cgi'
45
+ require 'crown/cgm/countable'
46
+ require 'rubygems'
47
+ require 'json'
48
+
49
+ # --------------------------------------------------------------- #
50
+ # Mix-in modules
51
+ # --------------------------------------------------------------- #
52
+ include Crown::CGM::Countable
53
+
54
+ private
55
+ # --------------------------------------------------------------- #
56
+ # address
57
+ # --------------------------------------------------------------- #
58
+ def address()
59
+ return 'api.twitter.com'
60
+ end
61
+
62
+ # --------------------------------------------------------------- #
63
+ # path
64
+ # --------------------------------------------------------------- #
65
+ def path()
66
+ return '/1/users/show.json'
67
+ end
68
+
69
+ # --------------------------------------------------------------- #
70
+ # query
71
+ # --------------------------------------------------------------- #
72
+ def query(screen_name, options)
73
+ return '?screen_name=' + CGI.escape(screen_name)
74
+ end
75
+
76
+ # --------------------------------------------------------------- #
77
+ # parse
78
+ # --------------------------------------------------------------- #
79
+ def parse(body)
80
+ json = JSON.parse(body)
81
+ return json["statuses_count"].to_i
82
+ end
83
+ end # TweetCounter
84
+ end # Twitter
85
+ end # Crown