Sha256: 10520af80c621ad0f3a786ca4bcbdce7e5c62477ca18f65ee17db89415744f65
Contents?: true
Size: 1.83 KB
Versions: 42
Compression:
Stored size: 1.83 KB
Contents
# frozen_string_literal: true require 'time' require 'base64' module Aws module Rest module Request class Headers include Seahorse::Model::Shapes # @param [Seahorse::Model::ShapeRef] rules def initialize(rules) @rules = rules end # @param [Seahorse::Client::Http::Request] http_req # @param [Hash] params def apply(http_req, params) @rules.shape.members.each do |name, ref| value = params[name] next if value.nil? case ref.location when 'header' then apply_header_value(http_req.headers, ref, value) when 'headers' then apply_header_map(http_req.headers, ref, value) end end end private def apply_header_value(headers, ref, value) value = apply_json_trait(value) if ref['jsonvalue'] headers[ref.location_name] = case ref.shape when TimestampShape then timestamp(ref, value) else value.to_s end end def timestamp(ref, value) case ref['timestampFormat'] || ref.shape['timestampFormat'] when 'unixTimestamp' then value.to_i when 'iso8601' then value.utc.iso8601 else # header default to rfc822 value.utc.httpdate end end def apply_header_map(headers, ref, values) prefix = ref.location_name || '' values.each_pair do |name, value| headers["#{prefix}#{name}"] = value.to_s end end # With complex headers value in json syntax, # base64 encodes value to aviod weird characters # causing potential issues in headers def apply_json_trait(value) Base64.strict_encode64(value) end end end end end
Version data entries
42 entries across 42 versions & 1 rubygems
Version | Path |
---|---|
aws-sdk-core-3.102.0 | lib/aws-sdk-core/rest/request/headers.rb |
aws-sdk-core-3.101.0 | lib/aws-sdk-core/rest/request/headers.rb |