class Nicos::Connector::Connector
Attributes
result[RW]
waitConfig[RW]
Public Class Methods
new()
click to toggle source
# File lib/classes/connector.rb, line 12 def initialize # デフォルトのウェイト設定 @seqTime = 0 @result = { :allDisabled => [], :notPublic => [], :limInCommunity => [], :notFound => [], :deleted => [], :noMovie => [], :deniedSeqReq => 0, :serverIsBusy => 0, :serviceUnavailable => 0, :timedOut => 0, :succeededNum => 0 } @waitConfig = @@waitConfig end
Public Instance Methods
getStatus()
click to toggle source
リクエスト結果を格納する変数を、MylistやMovie等の 単一リクエストメソッド用に構造を変換する。
# File lib/classes/connector.rb, line 142 def getStatus status = { :status => nil, :retry => {} } @result.each_key do |key| if @result[key].instance_of?(Array) && @result[key].length >= 1 status[:status] = key elsif key === :succeededNum && @result[key] >= 1 status[:status] = :success elsif @result[key].instance_of?(Fixnum) status[:retry][key] = @result[key] end end status end
Private Instance Methods
accessDisabled(exception)
click to toggle source
再試行しない例外の共通処理
# File lib/classes/connector.rb, line 38 def accessDisabled(exception) @result[exception].push(@nowAccess) { :order => :skip, :status => exception } end
allDisabled()
click to toggle source
# File lib/classes/connector.rb, line 43 def allDisabled # MylistAtomについて、全ての動画が非公開あるいはその他の理由でRSSフィードに掲載されない時。 puts "All movies are disabled." accessDisabled(:allDisabled) end
deleted()
click to toggle source
# File lib/classes/connector.rb, line 72 def deleted # マイリストは削除と404の区別がない? puts "This movie/mylist is deleted." accessDisabled(:deleted) end
deniedSeqReq()
click to toggle source
# File lib/classes/connector.rb, line 90 def deniedSeqReq puts "Denied sequential requests." exception(:deniedSeqReq) end
exception(exception)
click to toggle source
共通処理
# File lib/classes/connector.rb, line 80 def exception(exception) if @retryCount <= @waitConfig[exception][:retryLimit] { :order => :skip } else sleep @waitConfig[exception][:wait] @result[exception] += 1 { :order => :retry } end end
limInCommunity()
click to toggle source
# File lib/classes/connector.rb, line 56 def limInCommunity puts "This movie/mylist is limited in comunity members." # ex. item_id -> 1294702905 accessDisabled(:limInCommunity) end
noMovie()
click to toggle source
# File lib/classes/connector.rb, line 67 def noMovie puts "This movie/mylist contains no movie." accessDisabled(:noMovie) end
notFound()
click to toggle source
# File lib/classes/connector.rb, line 62 def notFound puts "This movie/mylist is not found." accessDisabled(:notFound) end
notPublic()
click to toggle source
# File lib/classes/connector.rb, line 49 def notPublic # マイリスト非公開のときに403になる。 # http://www.nicovideo.jp/mylist/25479830 puts "This movie/mylist is not public." accessDisabled(:notPublic) end
reachedLast()
click to toggle source
# File lib/classes/connector.rb, line 110 def reachedLast # TagAtom専用。MylistAtomは、allDisabledと結果が被ってしまう。 puts "Reached the last page." { :order => :terminate } end
serverIsBusy()
click to toggle source
# File lib/classes/connector.rb, line 95 def serverIsBusy puts "The server is busy." exception(:serverIsBusy) end
succeeded(resBody)
click to toggle source
# File lib/classes/connector.rb, line 116 def succeeded(resBody) @result[:succeededNum] += 1 sleep @waitConfig[:each] @seqTime += 1 if @seqTime >= @waitConfig[:seqAccLimit] sleep @waitConfig[:afterSeq] @seqTime = 0 end { :status => :success, :order => :afterTheSuccess, :body => resBody } end
timedOut()
click to toggle source
# File lib/classes/connector.rb, line 105 def timedOut puts "Request timed out." exception(:timedOut) end
wait(status)
click to toggle source
# File lib/classes/connector.rb, line 133 def wait(status) puts "Wait for " + waitTime + " second." sleep @waitConfig[status.to_s] end