Module: Crown::CGM::Countable

Overview

——————————————————————- #

Countable

はてなブックマークのブックマーク数や Twitter のツイート数の
ように,ある URL に対して何らかのカウント値を API 経由で提供
している CGM 用の Mix-in.

——————————————————————- #

Instance Method Summary collapse

Instance Method Details

#addressObject

————————————————————— #

address

カウント値を取得する API のドメインを返すメソッド.
インクルードしたクラスが再定義する必要がある.

————————————————————— #



56
57
58
# File 'lib/crown/cgm/countable.rb', line 56

def address()
    return 'example.com'
end

#count(uri, options = {}) ⇒ Object

————————————————————— #

count

————————————————————— #



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/crown/cgm/countable.rb', line 109

def count(uri, options = {})
    begin
        proxy_addr = nil
        proxy_port = nil
        if (options.class == Hash)
            proxy_addr = options[:proxy_address] if (options.has_key?(:proxy_address))
            proxy_port = options[:proxy_port] if (options.has_key?(:proxy_port))
        end
        
        Crown::HTTPWrapper.start(address(), port(), proxy_addr, proxy_port) { |session|
            str = path() + query(uri, options)
            response = session.get(str)
            return error_value() if (response == nil || response.code.to_i != 200)
            return parse(response.body)
        }
    rescue Exception => e
        return error_value()
    end
end

#error_valueObject

————————————————————— #

error_value

何らかの理由で指定した CGM からカウント値が取得できなかった
場合に返す値を定義するためのメソッド.

————————————————————— #



102
103
104
# File 'lib/crown/cgm/countable.rb', line 102

def error_value()
    return -1
end

#parse(body) ⇒ Object

————————————————————— #

parse

————————————————————— #



90
91
92
# File 'lib/crown/cgm/countable.rb', line 90

def parse(body)
    return error_value()
end

#pathObject

————————————————————— #

path

————————————————————— #



76
77
78
# File 'lib/crown/cgm/countable.rb', line 76

def path()
    return '/'
end

#portObject

————————————————————— #

port

カウント値を取得する API のポート番号を返すメソッド.
多くの場合は標準の HTTP 通信(ポート番号 80)で通信が行われる
ので,必要な場合のみ再定義する.

————————————————————— #



69
70
71
# File 'lib/crown/cgm/countable.rb', line 69

def port()
    return 80
end

#query(uri, options) ⇒ Object

————————————————————— #

query

————————————————————— #



83
84
85
# File 'lib/crown/cgm/countable.rb', line 83

def query(uri, options)
    return uri
end