Sha256: 73b90fe73191fc28b863886d5fc77c834b6b01595606b0c20d70f1bb146833e1
Contents?: true
Size: 1.7 KB
Versions: 11
Compression:
Stored size: 1.7 KB
Contents
module Aws module Plugins # The Amazon Route 53 API returns hosted zones and request Ids as strings # formatted like: # # '/hostedzone/ID' # '/change/ID' # # However, their API does not accept Ids with the '/hostedzone/' or # '/change/' prefixes. This plugin removes those prefixes before # serializing their Ids onto the request. This allows a user to # use the prefixed Ids returned in {Aws::Route53::Client} responses. class Route53IdFix < Seahorse::Client::Plugin class Handler < Seahorse::Client::Handler def call(context) remove_id_prefixes(context.params) @handler.call(context) end private def remove_id_prefixes(params) # Many operations accept of :id or :hosted_zone_id as a root-level # param, pruning prefixes from those. [:id, :hosted_zone_id].each do |key| params[key] = remove_prefix(params[key]) if params[key] end # The `#change_resource_record_sets operation` has a deeply nested # target with a :hosted_zone_id that needs to be pruned. if params[:change_batch] params[:change_batch][:changes].each do |batch| if target = batch[:resource_record_set][:alias_target] target[:hosted_zone_id] = remove_prefix(target[:hosted_zone_id]) end end end end def remove_prefix(str) str.sub(/^\/(hostedzone|change)\//, '') end end # Run this handler after params have been validated, but before # they are serialized onto the request handler(Handler, priority: 99, step: :build) end end end
Version data entries
11 entries across 11 versions & 1 rubygems