1/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2/*
3 * Copyright (C) 2007 Novell, Inc.
4 */
5
6#ifndef __SOUP_AUTH_DOMAIN_H__
7#define __SOUP_AUTH_DOMAIN_H__ 1
8
9#include <libsoup/soup-types.h>
10
11G_BEGIN_DECLS
12
13#define SOUP_TYPE_AUTH_DOMAIN (soup_auth_domain_get_type ())
14#define SOUP_AUTH_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_AUTH_DOMAIN, SoupAuthDomain))
15#define SOUP_AUTH_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH_DOMAIN, SoupAuthDomainClass))
16#define SOUP_IS_AUTH_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_AUTH_DOMAIN))
17#define SOUP_IS_AUTH_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_AUTH_DOMAIN))
18#define SOUP_AUTH_DOMAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH_DOMAIN, SoupAuthDomainClass))
19
20struct _SoupAuthDomain {
21 GObject parent;
22
23};
24
25typedef struct {
26 GObjectClass parent_class;
27
28 char * (*accepts) (SoupAuthDomain *domain,
29 SoupMessage *msg,
30 const char *header);
31 char * (*challenge) (SoupAuthDomain *domain,
32 SoupMessage *msg);
33 gboolean (*check_password) (SoupAuthDomain *domain,
34 SoupMessage *msg,
35 const char *username,
36 const char *password);
37
38 /* Padding for future expansion */
39 void (*_libsoup_reserved2) (void);
40 void (*_libsoup_reserved3) (void);
41 void (*_libsoup_reserved4) (void);
42} SoupAuthDomainClass;
43
44#define SOUP_AUTH_DOMAIN_REALM "realm"
45#define SOUP_AUTH_DOMAIN_PROXY "proxy"
46#define SOUP_AUTH_DOMAIN_ADD_PATH "add-path"
47#define SOUP_AUTH_DOMAIN_REMOVE_PATH "remove-path"
48#define SOUP_AUTH_DOMAIN_FILTER "filter"
49#define SOUP_AUTH_DOMAIN_FILTER_DATA "filter-data"
50#define SOUP_AUTH_DOMAIN_GENERIC_AUTH_CALLBACK "generic-auth-callback"
51#define SOUP_AUTH_DOMAIN_GENERIC_AUTH_DATA "generic-auth-data"
52
53typedef gboolean (*SoupAuthDomainFilter) (SoupAuthDomain *domain,
54 SoupMessage *msg,
55 gpointer user_data);
56
57typedef gboolean (*SoupAuthDomainGenericAuthCallback) (SoupAuthDomain *domain,
58 SoupMessage *msg,
59 const char *username,
60 gpointer user_data);
61
62SOUP_AVAILABLE_IN_2_4
63GType soup_auth_domain_get_type (void);
64
65SOUP_AVAILABLE_IN_2_4
66void soup_auth_domain_add_path (SoupAuthDomain *domain,
67 const char *path);
68SOUP_AVAILABLE_IN_2_4
69void soup_auth_domain_remove_path (SoupAuthDomain *domain,
70 const char *path);
71
72SOUP_AVAILABLE_IN_2_4
73void soup_auth_domain_set_filter (SoupAuthDomain *domain,
74 SoupAuthDomainFilter filter,
75 gpointer filter_data,
76 GDestroyNotify dnotify);
77
78SOUP_AVAILABLE_IN_2_4
79const char *soup_auth_domain_get_realm (SoupAuthDomain *domain);
80
81SOUP_AVAILABLE_IN_2_4
82void soup_auth_domain_set_generic_auth_callback (SoupAuthDomain *domain,
83 SoupAuthDomainGenericAuthCallback auth_callback,
84 gpointer auth_data,
85 GDestroyNotify dnotify);
86SOUP_AVAILABLE_IN_2_4
87gboolean soup_auth_domain_check_password (SoupAuthDomain *domain,
88 SoupMessage *msg,
89 const char *username,
90 const char *password);
91
92SOUP_AVAILABLE_IN_2_4
93gboolean soup_auth_domain_covers (SoupAuthDomain *domain,
94 SoupMessage *msg);
95SOUP_AVAILABLE_IN_2_4
96char *soup_auth_domain_accepts (SoupAuthDomain *domain,
97 SoupMessage *msg);
98SOUP_AVAILABLE_IN_2_4
99void soup_auth_domain_challenge (SoupAuthDomain *domain,
100 SoupMessage *msg);
101
102/* protected */
103SOUP_AVAILABLE_IN_2_4
104gboolean soup_auth_domain_try_generic_auth_callback (SoupAuthDomain *domain,
105 SoupMessage *msg,
106 const char *username);
107
108G_END_DECLS
109
110#endif /* __SOUP_AUTH_DOMAIN_H__ */
111