code: func CredentialsHandlerImpl(w http.ResponseWriter, r *http.Request, auditLogger audit.AuditLogger, credentialsManager credentials.Manager, credentialsID string, errPrefix string) {
  	responseJSON, arn, roleType, errorMessage, err := processCredentialsRequest(credentialsManager, r, credentialsID, errPrefix)
  	if err != nil {
  		errResponseJSON, _ := json.Marshal(errorMessage)
  		writeCredentialsRequestResponse(w, r, errorMessage.HTTPErrorCode, audit.GetCredentialsEventType(roleType), arn, auditLogger, errResponseJSON)
  		return
  	}
  
  	writeCredentialsRequestResponse(w, r, http.StatusOK, audit.GetCredentialsEventType(roleType), arn, auditLogger, responseJSON)
  }
docs: // CredentialsHandlerImpl is the major logic in CredentialsHandler, abstract this out
  // because v2.CredentialsHandler also uses the same logic.