diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2021-11-14 15:39:45 +0000 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2021-11-14 16:49:26 +0000 |
commit | 17bc5999ce9ee774afd82d8ede33f5a9be61a4af (patch) | |
tree | c6c92d342225656f64602db007b49066890bb659 /src/client/libwebidoidc-client.c | |
parent | 677aae3ffd5162ea9b630f051d4be17091ed1a16 (diff) |
Gui: bind the settings.
Diffstat (limited to 'src/client/libwebidoidc-client.c')
-rw-r--r-- | src/client/libwebidoidc-client.c | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/src/client/libwebidoidc-client.c b/src/client/libwebidoidc-client.c index 4937135..f31c100 100644 --- a/src/client/libwebidoidc-client.c +++ b/src/client/libwebidoidc-client.c @@ -107,9 +107,8 @@ disfluid_api_make_client (const struct DisfluidApi *api, { scm_jwk = scm_from_utf8_string (jwk); } - SCM object = - scm_call_3 (api->scm_make_client, scm_client_id, scm_redirect_uri, - scm_jwk); + SCM object = scm_call_3 (api->scm_make_client, scm_client_id, scm_jwk, + scm_redirect_uri); scm_dynwind_begin (0); *client = scm_malloc (sizeof (struct DisfluidClient)); scm_dynwind_unwind_handler (free, *client, 0); @@ -127,6 +126,17 @@ disfluid_client_free (struct DisfluidClient *client) free (client); } +void +disfluid_client_copy (const DisfluidClient * client, const DisfluidApi * api, + DisfluidClient ** copy) +{ + scm_dynwind_begin (0); + *copy = scm_malloc (sizeof (struct DisfluidClient)); + scm_dynwind_unwind_handler (free, *copy, 0); + (*copy)->object = scm_gc_protect_object (client->object); + scm_dynwind_end (); +} + static size_t copy_scm_string (SCM string, size_t start, size_t max, char *dest) { @@ -188,15 +198,15 @@ struct DisfluidAccount }; void -disfluid_api_make_account (const struct DisfluidApi *api, - struct DisfluidAccount **account, - const char *subject, - const char *issuer, - const char *key_pair, - const char *id_token_header, - const char *id_token, - const char *access_token, - const char *refresh_token) +disfluid_api_make_account_full (const struct DisfluidApi *api, + struct DisfluidAccount **account, + const char *subject, + const char *issuer, + const char *key_pair, + const char *id_token_header, + const char *id_token, + const char *access_token, + const char *refresh_token) { SCM scm_subject = scm_from_utf8_string (subject); SCM scm_issuer = scm_from_utf8_string (issuer); @@ -224,6 +234,17 @@ disfluid_api_make_account (const struct DisfluidApi *api, } void +disfluid_account_copy (const DisfluidAccount * account, + const DisfluidApi * api, DisfluidAccount ** copy) +{ + scm_dynwind_begin (0); + *copy = scm_malloc (sizeof (struct DisfluidAccount)); + scm_dynwind_unwind_handler (free, *copy, 0); + (*copy)->object = scm_gc_protect_object (account->object); + scm_dynwind_end (); +} + +void disfluid_account_free (struct DisfluidAccount *account) { if (account) |