diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c index da11f4afe4a6f56dc9089148b8a0b0775c229e7a..1c55c296fb8536ebac159eacbd573f136c0e7f5d 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 144552e8484e6b7d70614aac97621b15465e1c72..a12bdcd324ac82463d1f783499370d034aea9d55 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 d9deb3b2b1209da4055c2da9cc631f91267e3ff9..813cc70c0a58b6f8cf599615c1e9029c4da90bb7 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 60d09ff258bcd03ce967a4b1026aa1c5c15cae0c..a37e0c84d14ab0d5a6184b10760b816a306eda0e 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. */