class Subs::SubDB

Public Class Methods

new() { |self| ... } click to toggle source
Calls superclass method Subs::Provider::new
# File lib/subs/providers/sub_db.rb, line 8
def initialize(&block)
  agent = "SubDB/1.0 (subs/#{Subs::VERSION}; http://github.com/ForeverZer0/subs)"
  super('TheSubDB.com', URI('http://api.thesubdb.com/'), agent)
  yield self if block_given?
end

Public Instance Methods

all_supported_languages() click to toggle source
# File lib/subs/providers/sub_db.rb, line 71
def all_supported_languages
  request = Net::HTTP::Get.new(@uri.path + Subs.query_string(action: 'languages'))
  request['User-Agent'] = @user_agent
  Net::HTTP.start(@uri.host, @uri.port) do |net|
    body = net.request(request).body
    body.split(',').map { |value| Subs::Language.from_alpha2(value) }.compact
  end
end
compute_hash(path) click to toggle source
# File lib/subs/providers/sub_db.rb, line 14
def compute_hash(path)
  size = 64 * 1024
  File.open(path, 'rb') do |io|
    buffer = io.read(size)
    io.seek(-size, IO::SEEK_END)
    buffer << io.read
    return Digest::MD5.hexdigest(buffer)
  end
end
process_result(io, result) click to toggle source
Calls superclass method Subs::Provider#process_result
# File lib/subs/providers/sub_db.rb, line 24
def process_result(io, result)
  return false unless super
  hash = result.data
  lang = result.language.alpha2
  request = Net::HTTP::Get.new(@uri.path + Subs.query_string(action: :download, hash: hash, language: lang ))
  request['User-Agent'] = @user_agent
  begin
    Net::HTTP.start(@uri.host, @uri.port) do |net|
      response = net.request(request)
      return false unless response.code.to_i == 200
      io.write(response.body)
      Subs.log.debug { 'Success'.green }
      return true
    end
  rescue
    Subs.log.debug { 'Failed'.red }
    return false
  end
end
supported_languages(hash) click to toggle source
# File lib/subs/providers/sub_db.rb, line 62
def supported_languages(hash)
  request = Net::HTTP::Get.new(@uri.path + Subs.query_string(action: 'search', hash: hash))
  request['User-Agent'] = @user_agent
  Net::HTTP.start(@uri.host, @uri.port) do |net|
    body = net.request(request).body
    body.split(',').map { |value| Subs::Language.from_alpha2(value) }.compact
  end
end