|
|
|
@ -876,6 +876,59 @@ grpc_credentials *grpc_fake_oauth2_credentials_create( |
|
|
|
|
return &c->base; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* -- Oauth2 Access Token credentials. -- */ |
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
grpc_credentials base; |
|
|
|
|
grpc_credentials_md_store *access_token_md; |
|
|
|
|
} grpc_access_token_credentials; |
|
|
|
|
|
|
|
|
|
static void access_token_destroy(grpc_credentials *creds) { |
|
|
|
|
grpc_access_token_credentials *c = (grpc_access_token_credentials *)creds; |
|
|
|
|
grpc_credentials_md_store_unref(c->access_token_md); |
|
|
|
|
gpr_free(c); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int access_token_has_request_metadata(const grpc_credentials *creds) { |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int access_token_has_request_metadata_only( |
|
|
|
|
const grpc_credentials *creds) { |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void access_token_get_request_metadata(grpc_credentials *creds, |
|
|
|
|
grpc_pollset *pollset, |
|
|
|
|
const char *service_url, |
|
|
|
|
grpc_credentials_metadata_cb cb, |
|
|
|
|
void *user_data) { |
|
|
|
|
grpc_access_token_credentials *c = (grpc_access_token_credentials *)creds; |
|
|
|
|
cb(user_data, c->access_token_md->entries, 1, GRPC_CREDENTIALS_OK); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static grpc_credentials_vtable access_token_vtable = { |
|
|
|
|
access_token_destroy, access_token_has_request_metadata, |
|
|
|
|
access_token_has_request_metadata_only, access_token_get_request_metadata, |
|
|
|
|
NULL}; |
|
|
|
|
|
|
|
|
|
grpc_credentials *grpc_access_token_credentials_create( |
|
|
|
|
const char *access_token) { |
|
|
|
|
grpc_access_token_credentials *c = |
|
|
|
|
gpr_malloc(sizeof(grpc_access_token_credentials)); |
|
|
|
|
char *token_md_value; |
|
|
|
|
memset(c, 0, sizeof(grpc_access_token_credentials)); |
|
|
|
|
c->base.type = GRPC_CREDENTIALS_TYPE_OAUTH2; |
|
|
|
|
c->base.vtable = &access_token_vtable; |
|
|
|
|
gpr_ref_init(&c->base.refcount, 1); |
|
|
|
|
c->access_token_md = grpc_credentials_md_store_create(1); |
|
|
|
|
gpr_asprintf(&token_md_value, "Bearer %s", access_token); |
|
|
|
|
grpc_credentials_md_store_add_cstrings( |
|
|
|
|
c->access_token_md, GRPC_AUTHORIZATION_METADATA_KEY, token_md_value); |
|
|
|
|
gpr_free(token_md_value); |
|
|
|
|
return &c->base; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* -- Fake transport security credentials. -- */ |
|
|
|
|
|
|
|
|
|
static void fake_transport_security_credentials_destroy( |
|
|
|
|