Class: OnlinePayments::SDK::Communication::ResponseHeader

Inherits:
Object
  • Object
show all
Defined in:
lib/onlinepayments/sdk/communication/response_header.rb

Overview

Represents HTTP response headers Each header is immutable has a #name and #value attribute

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, value) ⇒ ResponseHeader

Create a new header using the name and value given as parameters.

Raises:

  • (ArgumentError)


12
13
14
15
16
# File 'lib/onlinepayments/sdk/communication/response_header.rb', line 12

def initialize(name, value)
  raise ArgumentError.new('name is required') if name.nil? or name.strip.empty?
  @name = name
  @value = value
end

Instance Attribute Details

#nameString (readonly)

HTTP header name

Returns:

  • (String)

    the current value of name



9
10
11
# File 'lib/onlinepayments/sdk/communication/response_header.rb', line 9

def name
  @name
end

#valueString (readonly)

HTTP header value

Returns:

  • (String)

    the current value of value



9
10
11
# File 'lib/onlinepayments/sdk/communication/response_header.rb', line 9

def value
  @value
end

Class Method Details

.get_disposition_filename(headers) ⇒ Object

Returns the value of the filename parameter of the Content-Disposition header from parameter headers If this Response does not contain a header with the given name, return nil instead



51
52
53
54
55
56
57
58
59
60
# File 'lib/onlinepayments/sdk/communication/response_header.rb', line 51

def self.get_disposition_filename(headers)
  header_value = get_header_value(headers, "Content-Disposition")
  unless header_value.nil?
    if header_value =~ /(?:^|;)\s*filename\s*=\s*(.*?)\s*(?:;|$)/i
      return trim_quotes($1)
    end
  end

  return nil
end

.get_header(headers, header_name) ⇒ Object

Return the OnlinePayments::SDK::Communication::ResponseHeader that goes by the given header_name, If this Response does not contain a header with the given name, return nil instead



27
28
29
30
31
32
33
34
# File 'lib/onlinepayments/sdk/communication/response_header.rb', line 27

def self.get_header(headers, header_name)
  selected_headers = headers.select { |h| h.name.casecmp(header_name) == 0 }
  if selected_headers.nil? || selected_headers.length == 0
    return nil
  else
    return selected_headers[0]
  end
end

.get_header_value(headers, header_name) ⇒ Object

Returns the header value of the header that goes by the given header_name, If this response does not contain a header with the given name, return nil instead



38
39
40
41
42
43
44
45
46
# File 'lib/onlinepayments/sdk/communication/response_header.rb', line 38

def self.get_header_value(headers, header_name)
  header = get_header(headers, header_name)
  return (
    if header.nil?
      nil
    else
      header.value
    end)
end

.trim_quotes(filename) ⇒ Object

Trims the single or double quotes at the beginning and end of parameter filename if they exist If they don’t exist, it returns the original filename instead



66
67
68
69
70
71
72
73
74
# File 'lib/onlinepayments/sdk/communication/response_header.rb', line 66

def self.trim_quotes(filename)
  unless filename.length < 2
    if (filename.chars.first == '\'' && filename.chars.last == '\'') ||
       (filename.chars.first == '"' && filename.chars.last == '"')
      return filename[1...-1]
    end
  end
  filename
end

Instance Method Details

#to_sObject



21
22
23
# File 'lib/onlinepayments/sdk/communication/response_header.rb', line 21

def to_s
  "#{name}:#{value}"
end