class TxOcr::Base

Constants

HOST

Public Instance Methods

encode_parameters() click to toggle source
# File lib/tx_ocr/base.rb, line 43
def encode_parameters
  new_hash = fixed_paramaters
  new_hash['Action'] = @ocr_type
  new_hash['ImageUrl'] = encoded_image_url
  to_params(new_hash)
end
fixed_paramaters() click to toggle source
# File lib/tx_ocr/base.rb, line 50
def fixed_paramaters
  { 'Nonce' => '2373', 'Region' => region, 'SecretId' => secret_id, 'Timestamp' => Time.now.to_i.to_s, 'Version' => '2018-11-19' }
end
full_request_url() click to toggle source
# File lib/tx_ocr/base.rb, line 74
def full_request_url
  url + request_params
end
indent_result() click to toggle source
# File lib/tx_ocr/base.rb, line 95
def indent_result
  if json['Response']['Error']
    json
  else
    new_content = raw_result.join('')

    new_content = new_content.gsub('。', "。\n\n")

    new_content
  end
end
json() click to toggle source
# File lib/tx_ocr/base.rb, line 82
def json
  JSON.parse(request_object.body)
end
orginal_parameters() click to toggle source
# File lib/tx_ocr/base.rb, line 36
def orginal_parameters
  new_hash = fixed_paramaters
  new_hash['Action'] = @ocr_type
  new_hash['ImageUrl'] = remote_image_url
  to_params(new_hash)
end
raw_result() click to toggle source
# File lib/tx_ocr/base.rb, line 86
def raw_result
  if json['Response']['Error']
    json
  else
    original_data = json['Response']['TextDetections']
    original_data.map { |h| h['DetectedText'] }
  end
end
region() click to toggle source
# File lib/tx_ocr/base.rb, line 20
def region
  TxOcr.config[:region]
end
request_object() click to toggle source
# File lib/tx_ocr/base.rb, line 78
def request_object
  HTTParty.get(url + request_params)
end
request_params() click to toggle source
# File lib/tx_ocr/base.rb, line 70
def request_params
  "/?#{encode_parameters}&Signature=#{signature}"
end
secret_id() click to toggle source
# File lib/tx_ocr/base.rb, line 28
def secret_id
  TxOcr.config[:secret_id]
end
secret_key() click to toggle source
# File lib/tx_ocr/base.rb, line 32
def secret_key
  TxOcr.config[:secret_key]
end
signature() click to toggle source
# File lib/tx_ocr/base.rb, line 63
def signature
  digest = OpenSSL::Digest.new('sha1')
  hmac = OpenSSL::HMAC.digest(digest, secret_key, string_for_sign)
  encrypt = Base64.encode64(hmac).delete("\n")
  encrypt.gsub('+', '%2B') # 处理 + 号
end
string_for_sign() click to toggle source
# File lib/tx_ocr/base.rb, line 59
def string_for_sign
  "GET#{HOST}/?" + orginal_parameters
end
to_params(original_hash) click to toggle source
# File lib/tx_ocr/base.rb, line 54
def to_params(original_hash)
  sorted_by_key = Hash[original_hash.sort]
  sorted_by_key.map { |x| "#{x[0]}=#{x[1]}" }.join('&')
end
url() click to toggle source
# File lib/tx_ocr/base.rb, line 24
def url
  "https://#{HOST}"
end