def sign(self, operation_name, request):
"""Sign a request before it goes out over the wire.
:type operation_name: string
:param operation_name: The name of the current operation, e.g.
``ListBuckets``.
:type request: KSRequest
:param request: The request object to be sent over the wire.
"""
signature_version = self._signature_version
# Allow overriding signature version. A response of a blank
# string means no signing is performed. A response of ``None``
# means that the default signing method is used.
handler, response = self._event_emitter.emit_until_response(
'choose-signer.{0}.{1}'.format(self._service_name, operation_name),
signing_name=self._signing_name, region_name=self._region_name,
signature_version=signature_version)
if response is not None:
signature_version = response
# Allow mutating request before signing
self._event_emitter.emit(
'before-sign.{0}.{1}'.format(self._service_name, operation_name),
request=request, signing_name=self._signing_name,
region_name=self._region_name,
signature_version=signature_version, request_signer=self)
if signature_version != kscore.UNSIGNED:
signer = self.get_auth_instance(self._signing_name,
self._region_name,
signature_version)
signer.add_auth(request=request)
评论列表
文章目录