crown 0.0.1 → 0.0.2
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/VERSION +1 -1
- data/crown.gemspec +6 -3
- data/lib/crown.rb +5 -1
- data/lib/crown/backtype.rb +64 -0
- data/lib/crown/buzzurl.rb +2 -1
- data/lib/crown/delicious.rb +2 -1
- data/lib/crown/facebook.rb +72 -0
- data/lib/crown/hatena/bookmark.rb +12 -16
- data/lib/crown/livedoor/clip.rb +3 -2
- data/lib/crown/topsy.rb +62 -0
- data/lib/crown/tweetmeme.rb +62 -0
- data/lib/crown/twitter.rb +10 -11
- data/lib/crown/yahoo/bookmark.rb +2 -1
- data/test/crown_test.rb +41 -0
- metadata +8 -5
- data/lib/crown.gemspec +0 -0
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.0. | 
| 1 | 
            +
            0.0.2
         | 
    
        data/crown.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{crown}
         | 
| 8 | 
            -
              s.version = "0.0. | 
| 8 | 
            +
              s.version = "0.0.2"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["clown"]
         | 
| 12 | 
            -
              s.date = %q{2011-02- | 
| 12 | 
            +
              s.date = %q{2011-02-19}
         | 
| 13 13 | 
             
              s.description = %q{crown is uncategorized ruby libraries, which is added according to author's mood :-D}
         | 
| 14 14 | 
             
              s.email = %q{tt.clown@gmail.com}
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -26,15 +26,18 @@ Gem::Specification.new do |s| | |
| 26 26 | 
             
                 "Rakefile",
         | 
| 27 27 | 
             
                 "VERSION",
         | 
| 28 28 | 
             
                 "crown.gemspec",
         | 
| 29 | 
            -
                 "lib/crown.gemspec",
         | 
| 30 29 | 
             
                 "lib/crown.rb",
         | 
| 30 | 
            +
                 "lib/crown/backtype.rb",
         | 
| 31 31 | 
             
                 "lib/crown/buzzurl.rb",
         | 
| 32 32 | 
             
                 "lib/crown/delicious.rb",
         | 
| 33 | 
            +
                 "lib/crown/facebook.rb",
         | 
| 33 34 | 
             
                 "lib/crown/hatena.rb",
         | 
| 34 35 | 
             
                 "lib/crown/hatena/bookmark.rb",
         | 
| 35 36 | 
             
                 "lib/crown/http.rb",
         | 
| 36 37 | 
             
                 "lib/crown/livedoor.rb",
         | 
| 37 38 | 
             
                 "lib/crown/livedoor/clip.rb",
         | 
| 39 | 
            +
                 "lib/crown/topsy.rb",
         | 
| 40 | 
            +
                 "lib/crown/tweetmeme.rb",
         | 
| 38 41 | 
             
                 "lib/crown/twitter.rb",
         | 
| 39 42 | 
             
                 "lib/crown/yahoo.rb",
         | 
| 40 43 | 
             
                 "lib/crown/yahoo/bookmark.rb",
         | 
    
        data/lib/crown.rb
    CHANGED
    
    | @@ -40,7 +40,11 @@ require 'crown/livedoor' | |
| 40 40 | 
             
            require 'crown/buzzurl'
         | 
| 41 41 | 
             
            require 'crown/yahoo'
         | 
| 42 42 | 
             
            require 'crown/twitter'
         | 
| 43 | 
            +
            require 'crown/topsy'
         | 
| 44 | 
            +
            require 'crown/tweetmeme'
         | 
| 45 | 
            +
            require 'crown/backtype'
         | 
| 46 | 
            +
            require 'crown/facebook'
         | 
| 43 47 |  | 
| 44 48 | 
             
            module Crown
         | 
| 45 | 
            -
              VERSION = '0.0. | 
| 49 | 
            +
              VERSION = '0.0.2'
         | 
| 46 50 | 
             
            end
         | 
| @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            +
            # --------------------------------------------------------------------------- #
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
            #  backtype.rb
         | 
| 5 | 
            +
            #
         | 
| 6 | 
            +
            #  Copyright (c) 2008 - 2011, 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 BackType
         | 
| 36 | 
            +
                    require 'cgi'
         | 
| 37 | 
            +
                    require 'net/http'
         | 
| 38 | 
            +
                    require 'crown/http'
         | 
| 39 | 
            +
                    require 'rubygems'
         | 
| 40 | 
            +
                    require 'json'
         | 
| 41 | 
            +
                    Net::HTTP.version_1_2
         | 
| 42 | 
            +
                    
         | 
| 43 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 44 | 
            +
                    #  count
         | 
| 45 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 46 | 
            +
                    def count(uri, api_key, proxy_host = nil, proxy_port = nil)
         | 
| 47 | 
            +
                        return 0 if (api_key == nil)
         | 
| 48 | 
            +
                        
         | 
| 49 | 
            +
                        begin
         | 
| 50 | 
            +
                            session = Net::HTTP.new("api.backtype.com", 80, proxy_host, proxy_port)
         | 
| 51 | 
            +
                            path = "/tweetcount.json?q=" + CGI.escape(uri) + "&key=" + api_key
         | 
| 52 | 
            +
                            response = Crown::HTTP.get(session, path)
         | 
| 53 | 
            +
                            return nil if (response == nil || response.code.to_i != 200)
         | 
| 54 | 
            +
                            
         | 
| 55 | 
            +
                            json = JSON.parse(response.body)
         | 
| 56 | 
            +
                            return json["tweetcount"].to_i
         | 
| 57 | 
            +
                        rescue Exception
         | 
| 58 | 
            +
                            return 0
         | 
| 59 | 
            +
                        end
         | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
                    
         | 
| 62 | 
            +
                    module_function :count
         | 
| 63 | 
            +
                end # BackTweets
         | 
| 64 | 
            +
            end # Crown
         | 
    
        data/lib/crown/buzzurl.rb
    CHANGED
    
    | @@ -49,7 +49,8 @@ module Crown | |
| 49 49 | 
             
                    #  を指定する.
         | 
| 50 50 | 
             
                    #
         | 
| 51 51 | 
             
                    # ------------------------------------------------------------------- #
         | 
| 52 | 
            -
                    def count(uri,  | 
| 52 | 
            +
                    def count(uri, proxy_host = nil, proxy_port = nil)
         | 
| 53 | 
            +
                        session = Net::HTTP.new('api.buzzurl.jp', 80, proxy_host, proxy_port)
         | 
| 53 54 | 
             
                        path = '/api/counter/v1/json?url=' + CGI.escape(uri)
         | 
| 54 55 |  | 
| 55 56 | 
             
                        begin
         | 
    
        data/lib/crown/delicious.rb
    CHANGED
    
    | @@ -49,7 +49,8 @@ module Crown | |
| 49 49 | 
             
                    #  を指定する.
         | 
| 50 50 | 
             
                    #
         | 
| 51 51 | 
             
                    # ------------------------------------------------------------------- #
         | 
| 52 | 
            -
                    def count(uri,  | 
| 52 | 
            +
                    def count(uri, proxy_host = nil, proxy_port = nil)
         | 
| 53 | 
            +
                        session = Net::HTTP.new('feeds.delicious.com', 80, proxy_host, proxy_port)
         | 
| 53 54 | 
             
                        path = '/v2/json/urlinfo/blogbadge?hash=' + Digest::MD5.hexdigest(uri)
         | 
| 54 55 |  | 
| 55 56 | 
             
                        begin
         | 
| @@ -0,0 +1,72 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            +
            # --------------------------------------------------------------------------- #
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
            #  facebook.rb
         | 
| 5 | 
            +
            #
         | 
| 6 | 
            +
            #  Copyright (c) 2008 - 2011, 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 Facebook
         | 
| 36 | 
            +
                    require 'cgi'
         | 
| 37 | 
            +
                    require 'net/http'
         | 
| 38 | 
            +
                    require 'crown/http'
         | 
| 39 | 
            +
                    require 'rexml/document'
         | 
| 40 | 
            +
                    Net::HTTP.version_1_2
         | 
| 41 | 
            +
                    
         | 
| 42 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 43 | 
            +
                    #  structures
         | 
| 44 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 45 | 
            +
                    Counter = Struct.new(:like, :total, :share, :click)
         | 
| 46 | 
            +
                    
         | 
| 47 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 48 | 
            +
                    #  count
         | 
| 49 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 50 | 
            +
                    def count(uri, proxy_host = nil, proxy_port = nil)
         | 
| 51 | 
            +
                        begin
         | 
| 52 | 
            +
                            session = Net::HTTP.new("api.facebook.com", 80, proxy_host, proxy_port)
         | 
| 53 | 
            +
                            query = "select like_count, total_count, share_count, click_count from link_stat where url=\"" + uri + '"'
         | 
| 54 | 
            +
                            path = "/method/fql.query?query=" + CGI.escape(query)
         | 
| 55 | 
            +
                            response = Crown::HTTP.get(session, path)
         | 
| 56 | 
            +
                            return nil if (response == nil || response.code.to_i != 200)
         | 
| 57 | 
            +
                            
         | 
| 58 | 
            +
                            xml = REXML::Document.new(response.body)
         | 
| 59 | 
            +
                            result = Counter.new
         | 
| 60 | 
            +
                            result.like  = xml.elements['/fql_query_response/link_stat/like_count'].text.to_i
         | 
| 61 | 
            +
                            result.total = xml.elements['/fql_query_response/link_stat/total_count'].text.to_i
         | 
| 62 | 
            +
                            result.share = xml.elements['/fql_query_response/link_stat/share_count'].text.to_i
         | 
| 63 | 
            +
                            result.click = xml.elements['/fql_query_response/link_stat/click_count'].text.to_i
         | 
| 64 | 
            +
                            return result
         | 
| 65 | 
            +
                        rescue Exception
         | 
| 66 | 
            +
                            return nil
         | 
| 67 | 
            +
                        end
         | 
| 68 | 
            +
                    end
         | 
| 69 | 
            +
                    
         | 
| 70 | 
            +
                    module_function :count
         | 
| 71 | 
            +
                end # Facebook
         | 
| 72 | 
            +
            end # Crown
         | 
| @@ -57,13 +57,13 @@ module Crown | |
| 57 57 | 
             
                            # ----------------------------------------------------------- #
         | 
| 58 58 | 
             
                            #  initialize
         | 
| 59 59 | 
             
                            # ----------------------------------------------------------- #
         | 
| 60 | 
            -
                            def initialize(path,  | 
| 60 | 
            +
                            def initialize(path, proxy_host = nil, proxy_port = nil)
         | 
| 61 | 
            +
                                @session = Net::HTTP.new("b.hatena.ne.jp", 80, proxy_host, proxy_port)
         | 
| 61 62 | 
             
                                @basename = String.new
         | 
| 62 63 | 
             
                                @basename.concat("/") if (path[0] != 47)
         | 
| 63 64 | 
             
                                @basename.concat(path)
         | 
| 64 65 | 
             
                                @basename.concat("/") if (@basename.match(/^\/[\w\-]+$/) != nil && !@@reserved.include?(@basename))
         | 
| 65 66 | 
             
                                @path = String.new(@basename)
         | 
| 66 | 
            -
                                @session = session
         | 
| 67 67 | 
             
                            end
         | 
| 68 68 |  | 
| 69 69 | 
             
                            # ----------------------------------------------------------- #
         | 
| @@ -150,12 +150,11 @@ module Crown | |
| 150 150 | 
             
                        #
         | 
| 151 151 | 
             
                        #  count
         | 
| 152 152 | 
             
                        #
         | 
| 153 | 
            -
                        #  uri に指定したページのブックマーク数を取得する. | 
| 154 | 
            -
                        #  には Net::HTTP クラス,またはその派生クラスのインスタンス
         | 
| 155 | 
            -
                        #  を指定する.
         | 
| 153 | 
            +
                        #  uri に指定したページのブックマーク数を取得する.
         | 
| 156 154 | 
             
                        #
         | 
| 157 155 | 
             
                        # --------------------------------------------------------------- #
         | 
| 158 | 
            -
                        def count(uri,  | 
| 156 | 
            +
                        def count(uri, proxy_host = nil, proxy_port = nil)
         | 
| 157 | 
            +
                            session = Net::HTTP.new('api.b.st-hatena.com', 80, proxy_host, proxy_port)
         | 
| 159 158 | 
             
                            path = "/entry.count?url=" + CGI.escape(uri)
         | 
| 160 159 | 
             
                            begin
         | 
| 161 160 | 
             
                                result = Crown::HTTP.get(session, path)
         | 
| @@ -170,12 +169,11 @@ module Crown | |
| 170 169 | 
             
                        #
         | 
| 171 170 | 
             
                        #  get
         | 
| 172 171 | 
             
                        #
         | 
| 173 | 
            -
                        #  uri に指定したページのブックマーク情報を取得する. | 
| 174 | 
            -
                        #  には Net::HTTP クラス,またはその派生クラスのインスタンス
         | 
| 175 | 
            -
                        #  を指定する.
         | 
| 172 | 
            +
                        #  uri に指定したページのブックマーク情報を取得する.
         | 
| 176 173 | 
             
                        #
         | 
| 177 174 | 
             
                        # --------------------------------------------------------------- #
         | 
| 178 | 
            -
                        def get(uri,  | 
| 175 | 
            +
                        def get(uri, proxy_host = nil, proxy_port = nil)
         | 
| 176 | 
            +
                            session = Net::HTTP.new('b.hatena.ne.jp', 80, proxy_host, proxy_port)
         | 
| 179 177 | 
             
                            path = '/entry/json/?url=' + CGI.escape(uri)
         | 
| 180 178 |  | 
| 181 179 | 
             
                            begin
         | 
| @@ -211,17 +209,15 @@ module Crown | |
| 211 209 | 
             
                        #  each
         | 
| 212 210 | 
             
                        #
         | 
| 213 211 | 
             
                        #  LinkTrace クラスを使用してブックマークされている記事の URL
         | 
| 214 | 
            -
                        #  一覧を取得し,それらのブックマーク情報を順に返す. | 
| 215 | 
            -
                        #  には Net::HTTP クラス,またはその派生クラスのインスタンス
         | 
| 216 | 
            -
                        #  を指定する.
         | 
| 212 | 
            +
                        #  一覧を取得し,それらのブックマーク情報を順に返す.
         | 
| 217 213 | 
             
                        #
         | 
| 218 214 | 
             
                        # --------------------------------------------------------------- #
         | 
| 219 | 
            -
                        def each(query,  | 
| 220 | 
            -
                            tracer = LinkTrace.new(query,  | 
| 215 | 
            +
                        def each(query, proxy_host = nil, proxy_port = nil)
         | 
| 216 | 
            +
                            tracer = LinkTrace.new(query, proxy_host, proxy_port)
         | 
| 221 217 | 
             
                            while (tracer.more?)
         | 
| 222 218 | 
             
                                uris = tracer.get
         | 
| 223 219 | 
             
                                uris.each { |uri|
         | 
| 224 | 
            -
                                    result = Bookmark.get(uri,  | 
| 220 | 
            +
                                    result = Bookmark.get(uri, proxy_host, proxy_port)
         | 
| 225 221 | 
             
                                    yield(result) if (result != nil)
         | 
| 226 222 | 
             
                                }
         | 
| 227 223 | 
             
                            end
         | 
    
        data/lib/crown/livedoor/clip.rb
    CHANGED
    
    | @@ -44,9 +44,10 @@ module Crown | |
| 44 44 | 
             
                        #  uri に指定したページのクリップ数を取得する.
         | 
| 45 45 | 
             
                        #
         | 
| 46 46 | 
             
                        # --------------------------------------------------------------- #
         | 
| 47 | 
            -
                        def count(uri)
         | 
| 47 | 
            +
                        def count(uri, proxy_host = nil, proxy_port = nil)
         | 
| 48 48 | 
             
                            begin
         | 
| 49 | 
            -
                                 | 
| 49 | 
            +
                                proxy = proxy_host + ':' + proxy_port.to_s if (proxy_host && proxy_port)
         | 
| 50 | 
            +
                                session = XMLRPC::Client.new2('http://rpc.clip.livedoor.com/count', proxy, 10).proxy('clip')
         | 
| 50 51 | 
             
                                session.getCount(uri).each { |key, value|
         | 
| 51 52 | 
             
                                    return value.to_i
         | 
| 52 53 | 
             
                                }
         | 
    
        data/lib/crown/topsy.rb
    ADDED
    
    | @@ -0,0 +1,62 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            +
            # --------------------------------------------------------------------------- #
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
            #  topsy.rb
         | 
| 5 | 
            +
            #
         | 
| 6 | 
            +
            #  Copyright (c) 2008 - 2011, 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 Topsy
         | 
| 36 | 
            +
                    require 'cgi'
         | 
| 37 | 
            +
                    require 'net/http'
         | 
| 38 | 
            +
                    require 'crown/http'
         | 
| 39 | 
            +
                    require 'rubygems'
         | 
| 40 | 
            +
                    require 'json'
         | 
| 41 | 
            +
                    Net::HTTP.version_1_2
         | 
| 42 | 
            +
                    
         | 
| 43 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 44 | 
            +
                    #  count
         | 
| 45 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 46 | 
            +
                    def count(uri, proxy_host = nil, proxy_port = nil)
         | 
| 47 | 
            +
                        begin
         | 
| 48 | 
            +
                            session = Net::HTTP.new("otter.topsy.com", 80, proxy_host, proxy_port)
         | 
| 49 | 
            +
                            path = "urlinfo.json?url=" + CGI.escape(uri)
         | 
| 50 | 
            +
                            response = Crown::HTTP.get(session, path)
         | 
| 51 | 
            +
                            return nil if (response == nil || response.code.to_i != 200)
         | 
| 52 | 
            +
                            
         | 
| 53 | 
            +
                            json = JSON.parse(response.body)
         | 
| 54 | 
            +
                            return json["response"]["trackback_total"].to_i
         | 
| 55 | 
            +
                        rescue Exception
         | 
| 56 | 
            +
                            return 0
         | 
| 57 | 
            +
                        end
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
                    
         | 
| 60 | 
            +
                    module_function :count
         | 
| 61 | 
            +
                end # Topsy
         | 
| 62 | 
            +
            end # Crown
         | 
| @@ -0,0 +1,62 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            +
            # --------------------------------------------------------------------------- #
         | 
| 3 | 
            +
            #
         | 
| 4 | 
            +
            #  tweetmeme.rb
         | 
| 5 | 
            +
            #
         | 
| 6 | 
            +
            #  Copyright (c) 2008 - 2011, 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 TweetMeme
         | 
| 36 | 
            +
                    require 'cgi'
         | 
| 37 | 
            +
                    require 'net/http'
         | 
| 38 | 
            +
                    require 'crown/http'
         | 
| 39 | 
            +
                    require 'rubygems'
         | 
| 40 | 
            +
                    require 'json'
         | 
| 41 | 
            +
                    Net::HTTP.version_1_2
         | 
| 42 | 
            +
                    
         | 
| 43 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 44 | 
            +
                    #  count
         | 
| 45 | 
            +
                    # ------------------------------------------------------------------- #
         | 
| 46 | 
            +
                    def count(uri, proxy_host = nil, proxy_port = nil)
         | 
| 47 | 
            +
                        begin
         | 
| 48 | 
            +
                            session = Net::HTTP.new("api.tweetmeme.com", 80, proxy_host, proxy_port)
         | 
| 49 | 
            +
                            path = "/url_info.json?url=" + CGI.escape(uri)
         | 
| 50 | 
            +
                            response = Crown::HTTP.get(session, path)
         | 
| 51 | 
            +
                            return nil if (response == nil || response.code.to_i != 200)
         | 
| 52 | 
            +
                            
         | 
| 53 | 
            +
                            json = JSON.parse(response.body)
         | 
| 54 | 
            +
                            return json["story"]["url_count"].to_i
         | 
| 55 | 
            +
                        rescue Exception => e
         | 
| 56 | 
            +
                            return 0
         | 
| 57 | 
            +
                        end
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
                    
         | 
| 60 | 
            +
                    module_function :count
         | 
| 61 | 
            +
                end # TweetMeme
         | 
| 62 | 
            +
            end # Crown
         | 
    
        data/lib/crown/twitter.rb
    CHANGED
    
    | @@ -32,13 +32,14 @@ | |
| 32 32 | 
             
            #
         | 
| 33 33 | 
             
            # --------------------------------------------------------------------------- #
         | 
| 34 34 | 
             
            module Crown
         | 
| 35 | 
            -
                require 'net/http'
         | 
| 36 | 
            -
                require 'crown/http'
         | 
| 37 | 
            -
                require 'rubygems'
         | 
| 38 | 
            -
                require 'json'
         | 
| 39 | 
            -
                Net::HTTP.version_1_2
         | 
| 40 | 
            -
                
         | 
| 41 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
         | 
| 42 | 
            +
                    
         | 
| 42 43 | 
             
                    # ------------------------------------------------------------------- #
         | 
| 43 44 | 
             
                    #  structures
         | 
| 44 45 | 
             
                    # ------------------------------------------------------------------- #
         | 
| @@ -47,10 +48,10 @@ module Crown | |
| 47 48 | 
             
                    # ------------------------------------------------------------------- #
         | 
| 48 49 | 
             
                    #  count
         | 
| 49 50 | 
             
                    # ------------------------------------------------------------------- #
         | 
| 50 | 
            -
                    def count(screen_name)
         | 
| 51 | 
            +
                    def count(screen_name, proxy_host = nil, proxy_port = nil)
         | 
| 51 52 | 
             
                        begin
         | 
| 52 | 
            -
                            session = Net::HTTP.new("api.twitter.com", 80)
         | 
| 53 | 
            -
                            path = "/1/users/show.json?screen_name=" + screen_name
         | 
| 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)
         | 
| 54 55 | 
             
                            response = Crown::HTTP.get(session, path)
         | 
| 55 56 | 
             
                            return nil if (response == nil || response.code.to_i != 200)
         | 
| 56 57 |  | 
| @@ -65,8 +66,6 @@ module Crown | |
| 65 66 | 
             
                        rescue Exception
         | 
| 66 67 | 
             
                            return nil
         | 
| 67 68 | 
             
                        end
         | 
| 68 | 
            -
                        
         | 
| 69 | 
            -
                        return nil
         | 
| 70 69 | 
             
                    end
         | 
| 71 70 |  | 
| 72 71 | 
             
                    module_function :count
         | 
    
        data/lib/crown/yahoo/bookmark.rb
    CHANGED
    
    | @@ -49,7 +49,8 @@ module Crown | |
| 49 49 | 
             
                        #  を指定する.
         | 
| 50 50 | 
             
                        #
         | 
| 51 51 | 
             
                        # --------------------------------------------------------------- #
         | 
| 52 | 
            -
                        def count(uri,  | 
| 52 | 
            +
                        def count(uri, proxy_host = nil, proxy_port = nil)
         | 
| 53 | 
            +
                            session = Net::HTTP.new('num.bookmarks.yahoo.co.jp', 80, proxy_host, proxy_port)
         | 
| 53 54 | 
             
                            path = '/yjnostb.php?urls=' + CGI.escape(uri)
         | 
| 54 55 |  | 
| 55 56 | 
             
                            begin
         | 
    
        data/test/crown_test.rb
    CHANGED
    
    | @@ -95,6 +95,47 @@ class CrownTest < Test::Unit::TestCase | |
| 95 95 | 
             
                    }
         | 
| 96 96 | 
             
                end
         | 
| 97 97 |  | 
| 98 | 
            +
                # ----------------------------------------------------------------------- #
         | 
| 99 | 
            +
                #  test_facebook_count
         | 
| 100 | 
            +
                # ----------------------------------------------------------------------- #
         | 
| 101 | 
            +
                def test_facebook_count
         | 
| 102 | 
            +
                    @@valid_uris.each { |uri|
         | 
| 103 | 
            +
                        counter = Crown::Facebook.count(uri)
         | 
| 104 | 
            +
                        assert(counter != nil, "failed in Crown::Facebook.count: " + uri)
         | 
| 105 | 
            +
                        assert(counter.like > 0, "wrong like count: " + uri)
         | 
| 106 | 
            +
                        assert(counter.total > 0, "wrong total count: " + uri)
         | 
| 107 | 
            +
                        assert(counter.share > 0, "wrong share count: " + uri)
         | 
| 108 | 
            +
                        assert(counter.click > 0, "wrong click count: " + uri)
         | 
| 109 | 
            +
                    }
         | 
| 110 | 
            +
                end
         | 
| 111 | 
            +
                
         | 
| 112 | 
            +
                # ----------------------------------------------------------------------- #
         | 
| 113 | 
            +
                #  test_topsy_count
         | 
| 114 | 
            +
                # ----------------------------------------------------------------------- #
         | 
| 115 | 
            +
                def test_topsy_count
         | 
| 116 | 
            +
                    @@valid_uris.each { |uri|
         | 
| 117 | 
            +
                        assert(Crown::Topsy.count(uri) > 0, "failed in " + uri)
         | 
| 118 | 
            +
                    }
         | 
| 119 | 
            +
                end
         | 
| 120 | 
            +
                
         | 
| 121 | 
            +
                # ----------------------------------------------------------------------- #
         | 
| 122 | 
            +
                #  test_tweetmeme_count
         | 
| 123 | 
            +
                # ----------------------------------------------------------------------- #
         | 
| 124 | 
            +
                def test_tweetmeme_count
         | 
| 125 | 
            +
                    @@valid_uris.each { |uri|
         | 
| 126 | 
            +
                        assert(Crown::TweetMeme.count(uri) > 0, "failed in " + uri)
         | 
| 127 | 
            +
                    }
         | 
| 128 | 
            +
                end
         | 
| 129 | 
            +
                
         | 
| 130 | 
            +
                # ----------------------------------------------------------------------- #
         | 
| 131 | 
            +
                #  test_backtype_count
         | 
| 132 | 
            +
                # ----------------------------------------------------------------------- #
         | 
| 133 | 
            +
                def test_backtype_count
         | 
| 134 | 
            +
                    @@valid_uris.each { |uri|
         | 
| 135 | 
            +
                        assert(Crown::BackType.count(uri, "your_api_key") > 0, "failed in " + uri)
         | 
| 136 | 
            +
                    }
         | 
| 137 | 
            +
                end
         | 
| 138 | 
            +
                
         | 
| 98 139 | 
             
                # ----------------------------------------------------------------------- #
         | 
| 99 140 | 
             
                #  test_twitter_count
         | 
| 100 141 | 
             
                # ----------------------------------------------------------------------- #
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: crown
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 27
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 0
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.0. | 
| 9 | 
            +
              - 2
         | 
| 10 | 
            +
              version: 0.0.2
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - clown
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2011-02- | 
| 18 | 
            +
            date: 2011-02-19 00:00:00 +09:00
         | 
| 19 19 | 
             
            default_executable: 
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -51,15 +51,18 @@ files: | |
| 51 51 | 
             
            - Rakefile
         | 
| 52 52 | 
             
            - VERSION
         | 
| 53 53 | 
             
            - crown.gemspec
         | 
| 54 | 
            -
            - lib/crown.gemspec
         | 
| 55 54 | 
             
            - lib/crown.rb
         | 
| 55 | 
            +
            - lib/crown/backtype.rb
         | 
| 56 56 | 
             
            - lib/crown/buzzurl.rb
         | 
| 57 57 | 
             
            - lib/crown/delicious.rb
         | 
| 58 | 
            +
            - lib/crown/facebook.rb
         | 
| 58 59 | 
             
            - lib/crown/hatena.rb
         | 
| 59 60 | 
             
            - lib/crown/hatena/bookmark.rb
         | 
| 60 61 | 
             
            - lib/crown/http.rb
         | 
| 61 62 | 
             
            - lib/crown/livedoor.rb
         | 
| 62 63 | 
             
            - lib/crown/livedoor/clip.rb
         | 
| 64 | 
            +
            - lib/crown/topsy.rb
         | 
| 65 | 
            +
            - lib/crown/tweetmeme.rb
         | 
| 63 66 | 
             
            - lib/crown/twitter.rb
         | 
| 64 67 | 
             
            - lib/crown/yahoo.rb
         | 
| 65 68 | 
             
            - lib/crown/yahoo/bookmark.rb
         | 
    
        data/lib/crown.gemspec
    DELETED
    
    | 
            File without changes
         |