diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c index da11f4afe..1c55c296f 100644 --- a/src/tool_cfgable.c +++ b/src/tool_cfgable.c @@ -96,6 +96,8 @@ void free_config_fields(struct Configurable *config) Curl_safefree(config->krblevel); Curl_safefree(config->trace_dump); + Curl_safefree(config->xoauth2_bearer); + config->trace_stream = NULL; /* closed elsewhere when appropriate */ Curl_safefree(config->writeout); diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h index 144552e84..a12bdcd32 100644 --- a/src/tool_cfgable.h +++ b/src/tool_cfgable.h @@ -208,6 +208,7 @@ struct Configurable { #ifdef CURLDEBUG bool test_event_based; #endif + char *xoauth2_bearer; /* XOAUTH2 bearer token */ }; /* struct Configurable */ void free_config_fields(struct Configurable *config); diff --git a/src/tool_getparam.c b/src/tool_getparam.c index d9deb3b2b..813cc70c0 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -75,6 +75,7 @@ static const struct LongShort aliases[]= { {"*", "url", TRUE}, {"*a", "random-file", TRUE}, {"*b", "egd-file", TRUE}, + {"*B", "bearer", TRUE}, {"*c", "connect-timeout", TRUE}, {"*d", "ciphers", TRUE}, {"*e", "disable-epsv", FALSE}, @@ -498,6 +499,9 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ case 'b': /* egd-file */ GetStr(&config->egd_file, nextarg); break; + case 'B': /* XOAUTH2 Bearer */ + GetStr(&config->xoauth2_bearer, nextarg); + break; case 'c': /* connect-timeout */ err = str2udouble(&config->connecttimeout, nextarg); if(err) @@ -1632,9 +1636,11 @@ ParameterError getparameter(char *flag, /* f or -long-flag */ /* user:password */ GetStr(&config->userpwd, nextarg); cleanarg(nextarg); - err = checkpasswd("host", &config->userpwd); - if(err) - return err; + if(!config->xoauth2_bearer) { + err = checkpasswd("host", &config->userpwd); + if(err) + return err; + } break; case 'U': /* Proxy user:password */ diff --git a/src/tool_operate.c b/src/tool_operate.c index 60d09ff25..a37e0c84d 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -977,6 +977,9 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) else if(!config->use_metalink) my_setopt(curl, CURLOPT_HEADER, config->include_headers?1L:0L); + if(config->xoauth2_bearer) + my_setopt_str(curl, CURLOPT_XOAUTH2_BEARER, config->xoauth2_bearer); + #if !defined(CURL_DISABLE_PROXY) { /* TODO: Make this a run-time check instead of compile-time one. */