Class: Aliyun::Oss::Utils

Inherits:
Object
  • Object
show all
Defined in:
lib/aliyun/oss/utils.rb

Class Method Summary collapse

Class Method Details

.content_size(content) ⇒ Integer

Calculate content length

Returns:

  • (Integer)


12
13
14
15
16
17
18
# File 'lib/aliyun/oss/utils.rb', line 12

def self.content_size(content)
  if content.respond_to?(:size)
    content.size
  elsif content.is_a?(IO)
    content.stat.size
  end
end

.dig_value(hash, *keys) ⇒ Object

Dig values in deep hash

Examples:

dig_value({ 'a' => { 'b' => { 'c' => 3 } } }, 'a', 'b', 'c')  # => 3


54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/aliyun/oss/utils.rb', line 54

def self.dig_value(hash, *keys)
  new_hash = hash.dup

  keys.each do |key|
    if new_hash.is_a?(Hash) && new_hash.key?(key)
      new_hash = new_hash[key]
    else
      return nil
    end
  end
  new_hash
end

.hash_slice(hash, *selected_keys) ⇒ Hash

Examples:

# { 'a' => 1, 'c' => 3 }
Utils.hash_slice({ 'a' => 1, 'b' => 2, 'c' => 3 }, 'a', 'c')

Returns:

  • (Hash)


32
33
34
35
36
# File 'lib/aliyun/oss/utils.rb', line 32

def self.hash_slice(hash, *selected_keys)
  new_hash = {}
  selected_keys.each { |k| new_hash[k] = hash[k] if hash.key?(k) }
  new_hash
end

.md5_digest(body) ⇒ String

Digest body with MD5 and then encoding with Base64

Returns:

  • (String)


23
24
25
# File 'lib/aliyun/oss/utils.rb', line 23

def self.md5_digest(body)
  Base64.encode64(Digest::MD5.digest(body)).strip
end

.to_data(file_or_bin) ⇒ Bin data

Convert File or Bin data to bin data

Returns:

  • (Bin data)


41
42
43
# File 'lib/aliyun/oss/utils.rb', line 41

def self.to_data(file_or_bin)
  file_or_bin.respond_to?(:read) ? IO.binread(file_or_bin) : file_or_bin
end

.to_xml(hash) ⇒ Object

nodoc



45
46
47
# File 'lib/aliyun/oss/utils.rb', line 45

def self.to_xml(hash) # nodoc
  %(<?xml version="1.0" encoding="UTF-8"?>#{Gyoku.xml(hash)})
end

.underscore(str) ⇒ Object

See Also:



68
69
70
71
72
73
74
75
76
# File 'lib/aliyun/oss/utils.rb', line 68

def self.underscore(str)
  word = str.to_s.dup
  word.gsub!(/::/, '/')
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
  word.tr!('-', '_')
  word.downcase!
  word
end

.wrap(object) ⇒ Object



79
80
81
82
83
84
85
86
87
# File 'lib/aliyun/oss/utils.rb', line 79

def self.wrap(object)
  if object.nil?
    []
  elsif object.respond_to?(:to_ary)
    object.to_ary || [object]
  else
    [object]
  end
end