/*                                          W3C Sample Code Library libwww User Profile Class
                                  THE USER PROFILE CLASS
                                             
 */
/*
**      (c) COPYRIGHT MIT 1995.
**      Please first read the full copyright statement in the file COPYRIGH.
*/
/*

   The User profile class manages what we know about a _user on this host_. This can for
   example be the FQDN of the host, the user's email address, the time zone, the news
   server etc. Note that this information does not correspond to the actual information
   for the host but instead represents "the information that the user wants to show the
   world". The user may use an arbitrary email address to be used in a HTTP request, for
   example. The application may assign a context to each use which gives the application
   to extend the use of this class.
   
   This module is implemented by HTUser.c, and it is a part of the W3C Sample Code
   Library.
   
 */
#ifndef HTUSER_H
#define HTUSER_H

typedef struct _HTUserProfile HTUserProfile;
/*

CREATION AND DELETION METHODS

   The application may create any number of user profile objects. By default the Library
   creates a generic user which is the default value used to initialize a Request object.
   This can be replaced by other user profiles at any point in time.
   
  Create a User Profile
  
 */
extern HTUserProfile * HTUserProfile_new (const char * name, void * context);
/*

  Localize a User Profile
  
   Localize a user profile by filling in all the information that we can figure out
   automatically, for example the email address, news server etc.
   
 */
extern BOOL HTUserProfile_localize (HTUserProfile * up);
/*

  Delete a User Profile
  
 */
extern BOOL HTUserProfile_delete (HTUserProfile * up);
/*

USER PROFILE CLASS METHODS

  Fully Qualified Domain Name (FQDN)
  
   The FQDN is a fully qualified domain name in that it contains both a local host name
   and the domain name. It turns out that this is in fact very difficult to obtain a FQDN
   on a variety of platforms.
   
 */
extern char * HTUserProfile_fqdn (HTUserProfile * up);
extern BOOL HTUserProfile_setFqdn (HTUserProfile * up, const char * fqdn);
/*

  User Email Address
  
   This is the email address that the user wants to send out for example as a "password"
   when using anonymous FTP access and as a "From" field in a HTTP request.
   
 */
extern char * HTUserProfile_email (HTUserProfile * up);
extern BOOL HTUserProfile_setEmail (HTUserProfile * up, const char * email);
/*

  News Server
  
   Control the news server that this user wishes to use
   
 */
extern char * HTUserProfile_news (HTUserProfile * host);
extern BOOL HTUserProfile_setNews (HTUserProfile * host, const char * news);
/*

  Location of Temporary Files
  
   Control the location for temporary files for this profile. The format _must_ be in URL
   format which is different from local file syntax as URL syntaz _always_ uses '/' as
   delimiters and also encoding of special characters. See the documentation on URLs for
   more information about URL syntax.
   
 */
extern char * HTUserProfile_tmp (HTUserProfile * host);
extern BOOL HTUserProfile_setTmp (HTUserProfile * host, const char * tmp);
/*

  Local Time Zone (in seconds)
  
   Another widely used piece information that is very hard toobtain is the local time
   zone. As we often must convert to and from GMT (Universal Time) we must have the
   correct time zone. If we for some reason guesses wrong then the user must change it
   manually.
   
 */
extern time_t HTUserProfile_timezone (HTUserProfile * up);
extern BOOL HTUserProfile_setTimezone (HTUserProfile * up, time_t timezone);
/*

  User Profile Context
  
   The applicatoin may have additional information that it wishes to assign to a user
   profile. It can do this using the user context which is handled as follows:
   
 */
extern void * HTUserProfile_context (HTUserProfile * up);
extern BOOL HTUserProfile_setContext (HTUserProfile * up, void * context);
/*

 */
#endif /* HTUser_H */
/*

   
   ___________________________________
   
                             @(#) $Id: HTUser.html,v 2.3 1997/02/16 18:43:12 frystyk Exp $
                                                                                          
    */
