summaryrefslogtreecommitdiff
path: root/frontends
diff options
context:
space:
mode:
authorMichael Drake <michael.drake@codethink.co.uk>2018-08-13 16:51:09 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2018-08-15 07:19:58 +0100
commit42d596bc11d920f953a8d19a46981cb359cf9144 (patch)
treec3a1419a7a54ed44e0dd7401339147e254d65aed /frontends
parent81a59f2f7c7cf06c1457893880ebfeba82e902cc (diff)
downloadnetsurf-42d596bc11d920f953a8d19a46981cb359cf9144.tar.gz
netsurf-42d596bc11d920f953a8d19a46981cb359cf9144.tar.bz2
Amiga: Update for new HTTP auth API.
Diffstat (limited to 'frontends')
-rwxr-xr-xfrontends/amiga/login.c52
-rwxr-xr-xfrontends/amiga/login.h8
2 files changed, 28 insertions, 32 deletions
diff --git a/frontends/amiga/login.c b/frontends/amiga/login.c
index db15b431d..6735f9350 100755
--- a/frontends/amiga/login.c
+++ b/frontends/amiga/login.c
@@ -53,7 +53,7 @@ struct gui_login_window {
struct ami_generic_window w;
struct Window *win;
Object *objects[GID_LAST];
- nserror (*cb)(bool proceed, void *pw);
+ nserror (*cb)(const char *username, const char *password, void *pw);
void *cbpw;
nsurl *url;
char *realm;
@@ -70,14 +70,20 @@ static const struct ami_win_event_table ami_login_table = {
@todo check if this prevents us from quitting NetSurf */
};
-void gui_401login_open(nsurl *url, const char *realm,
- nserror (*cb)(bool proceed, void *pw), void *cbpw)
+nserror gui_401login_open(nsurl *url, const char *realm,
+ const char *username, const char *password,
+ nserror (*cb)(const char *username,
+ const char *password,
+ void *pw),
+ void *cbpw)
{
- const char *auth;
struct gui_login_window *lw = calloc(1, sizeof(struct gui_login_window));
lwc_string *host = nsurl_get_component(url, NSURL_HOST);
+ size_t len;
assert(host != NULL);
+ assert(username != NULL);
+ assert(password != NULL);
lw->host = host;
lw->url = nsurl_ref(url);
@@ -85,25 +91,13 @@ void gui_401login_open(nsurl *url, const char *realm,
lw->cb = cb;
lw->cbpw = cbpw;
- auth = urldb_get_auth_details(lw->url, realm);
-
- if (auth == NULL) {
- lw->uname[0] = '\0';
- lw->pwd[0] = '\0';
- } else {
- const char *pwd;
- size_t pwd_len;
-
- pwd = strchr(auth, ':');
- assert(pwd && pwd < auth + sizeof(lw->uname));
- memcpy(lw->uname, auth, pwd - auth);
- lw->uname[pwd - auth] = '\0';
- ++pwd;
- pwd_len = strlen(pwd);
- assert(pwd_len < sizeof(lw->pwd));
- memcpy(lw->pwd, pwd, pwd_len);
- lw->pwd[pwd_len] = '\0';
- }
+ len = strlen(username);
+ assert(len < sizeof(lw->uname));
+ memcpy(lw->uname, username, len + 1);
+
+ len = strlen(password);
+ assert(len < sizeof(lw->pwd));
+ memcpy(lw->pwd, password, len + 1);
lw->objects[OID_MAIN] = WindowObj,
WA_ScreenTitle, ami_gui_get_screen_title(),
@@ -177,13 +171,15 @@ void gui_401login_open(nsurl *url, const char *realm,
lw->win = (struct Window *)RA_OpenWindow(lw->objects[OID_MAIN]);
ami_gui_win_list_add(lw, AMINS_LOGINWINDOW, &ami_login_table);
+
+ return NSERROR_OK;
}
static void ami_401login_close(struct gui_login_window *lw)
{
/* If continuation exists, then forbid refetch */
if (lw->cb != NULL)
- lw->cb(false, lw->cbpw);
+ lw->cb(NULL, NULL, lw->cbpw);
DisposeObject(lw->objects[OID_MAIN]);
lwc_string_unref(lw->host);
@@ -195,16 +191,12 @@ static void ami_401login_close(struct gui_login_window *lw)
static void ami_401login_login(struct gui_login_window *lw)
{
ULONG *user,*pass;
- STRPTR userpass;
GetAttr(STRINGA_TextVal,lw->objects[GID_USER],(ULONG *)&user);
GetAttr(STRINGA_TextVal,lw->objects[GID_PASS],(ULONG *)&pass);
- userpass = ASPrintf("%s:%s",user,pass);
- urldb_set_auth_details(lw->url,lw->realm,userpass);
- FreeVec(userpass);
-
- lw->cb(true, lw->cbpw);
+ /* TODO: Encoding conversion to UTF8 for `user` and `pass`? */
+ lw->cb(user, pass, lw->cbpw);
/* Invalidate continuation */
lw->cb = NULL;
diff --git a/frontends/amiga/login.h b/frontends/amiga/login.h
index 058fa5948..e2fdf1705 100755
--- a/frontends/amiga/login.h
+++ b/frontends/amiga/login.h
@@ -23,7 +23,11 @@
struct gui_login_window;
-void gui_401login_open(nsurl *url, const char *realm,
- nserror (*cb)(bool proceed, void *pw), void *cbpw);
+nserror gui_401login_open(nsurl *url, const char *realm,
+ const char *username, const char *password,
+ nserror (*cb)(const char *username,
+ const char *password,
+ void *pw),
+ void *cbpw);
#endif