mirror of
https://github.com/deltachat/deltachat-core.git
synced 2025-10-06 03:50:08 +02:00
add DC_EVENT_HTTP_POST, needed to regenerate OAuth2 tokens
This commit is contained in:
parent
fee032b513
commit
1c5ab7444d
3 changed files with 43 additions and 3 deletions
|
@ -67,17 +67,33 @@ static uintptr_t receive_event(dc_context_t* context, int event, uintptr_t data1
|
|||
break;
|
||||
|
||||
case DC_EVENT_HTTP_GET:
|
||||
case DC_EVENT_HTTP_POST:
|
||||
{
|
||||
char* url = dc_strdup((char*)data1);
|
||||
char* param = strchr(url, '?');
|
||||
if (param) {
|
||||
*param = 0;
|
||||
param++;
|
||||
}
|
||||
else {
|
||||
param = "";
|
||||
}
|
||||
|
||||
char* ret = NULL;
|
||||
char* tempFile = dc_get_fine_pathNfilename(context, context->blobdir, "curl.result");
|
||||
char* cmd = dc_mprintf("curl --silent --location --fail --insecure %s > %s", (char*)data1, tempFile); /* --location = follow redirects */
|
||||
char* cmd = event==DC_EVENT_HTTP_GET?
|
||||
dc_mprintf("curl --silent --location --fail --insecure %s%s%s > %s", url, param[0]? "?" : "", param, tempFile) :
|
||||
dc_mprintf("curl --silent -d \"%s\" %s > %s", param, url, tempFile);
|
||||
|
||||
int error = system(cmd);
|
||||
if (error == 0) { /* -1=system() error, !0=curl errors forced by -f, 0=curl success */
|
||||
size_t bytes = 0;
|
||||
dc_read_file(context, tempFile, (void**)&ret, &bytes);
|
||||
}
|
||||
|
||||
free(cmd);
|
||||
free(tempFile);
|
||||
free(url);
|
||||
return (uintptr_t)ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -1059,4 +1059,8 @@ void stress_functions(dc_context_t* context)
|
|||
assert( res->id != 0 );
|
||||
dc_lot_unref(res);
|
||||
}
|
||||
|
||||
{
|
||||
context->cb(context, DC_EVENT_HTTP_POST, (uintptr_t)"https://accounts.google.com/o/oauth2/token?client_id=959970109878-t6pl4k9fmsdvfnobae862urapdmhfvbe.apps.googleusercontent.com&client_secret=g2f_Gc1YUJ-fWjnTkdsuk4Xo&&grant_type=refresh_token&refresh_token=1/RMq1d0QKVF-BN4yJSuBwjzukWTF_puI3IBYtIjtPhi8&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob", 0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1062,20 +1062,40 @@ time_t dc_lot_get_timestamp (const dc_lot_t*);
|
|||
|
||||
|
||||
/**
|
||||
* Request a HTTP-file or HTTPS-file from the frontend.
|
||||
* Request a HTTP-file or HTTPS-file from the frontend using HTTP-GET.
|
||||
*
|
||||
* @param data1 (const char*) Null-terminated UTF-8 string containing the URL.
|
||||
* The string starts with https:// or http://.
|
||||
* Must not be free()'d or modified and is valid only until the callback returns.
|
||||
* @param data2 0
|
||||
* @return (const char*) The content of the requested file as a null-terminated UTF-8 string;
|
||||
* Response headers, encodings etc. must be stripped, only the raw file, which may be binary, should be returned.
|
||||
* Response headers, encodings etc. must be stripped.
|
||||
* Only the raw file should be returned.
|
||||
* CAVE: The string will be free()'d by the core,
|
||||
* so make sure it is allocated using malloc() or a compatible function.
|
||||
* If you cannot provide the content, just return 0 or an empty string.
|
||||
*/
|
||||
#define DC_EVENT_HTTP_GET 2100
|
||||
|
||||
|
||||
/**
|
||||
* Request a HTTP-file or HTTPS-file from the frontend using HTTP-POST.
|
||||
*
|
||||
* @param data1 (const char*) Null-terminated UTF-8 string containing the URL.
|
||||
* The string starts with https:// or http://.
|
||||
* Must not be free()'d or modified and is valid only until the callback returns.
|
||||
* Parameter to POST are added to the url after `?`.
|
||||
* @param data2 0
|
||||
* @return (const char*) The content of the requested file as a null-terminated UTF-8 string;
|
||||
* Response headers, encodings etc. must be stripped.
|
||||
* Only the raw file should be returned.
|
||||
* CAVE: The string will be free()'d by the core,
|
||||
* so make sure it is allocated using malloc() or a compatible function.
|
||||
* If you cannot provide the content, just return 0 or an empty string.
|
||||
*/
|
||||
#define DC_EVENT_HTTP_POST 2110
|
||||
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue