# W3C Library Packages and Interfaces

Libwww consists of a set of APIs called packages which covers multiple related source modules; on Wintel packages are organized into DLLs and on Unix we organize them into separate libraries. A package interface is exported via a single include file of the type WWW*.h, for example WWWCore.h.

- Basic Utility Pagages - basic container classes etc
- Core Packages - the libwww core which is essential a registry and nothing else
- Initialization Packages - provides help setting up much of the functionality in libwww
- High Level Application Packages - simple application APIs for resolving a URI etc.
- Transport Packages - access to TCP, local file system etc.
- MIME Packages - handles basic MIME parsing
- Protocol Packages - access to HTTP, FTP, Gopher, file, telnet, etc.
- Persistent Cacing Packages - including HTTP/1.1 persistent cache
- Stream Packages - including zlib compression, content length counter etc.
- HTML and XML Packages - including a wrapper for the Expat XML parser
- Database Access Packages - access to MySQL etc.

You can also have a look at the complete list of all public functions.

## Basic Utility Packages

The core interfaces must be included in all applications.

### Windows Specific Package

This is a small interface that handles trace messages on Windows

- Wintel DLL: wwwdll.dll
- Definition list of exported API

### Basic Utility Package

The basic utility package contains mostly container modules, dynamic strings and other stuff that you can't live without when building applications. The modules are used by all other libwww packages but can also be used by the application.

- Wintel DLL: wwwutil.dll
- Unix lib: libwwwutil.a
- Package include file: WWWUtil.h
- Exported Classes and Functions

### Libwww Core Package

The libwww core package is designed as a set of registration modules where features can be registered dynamically by the application. Examples of features that the application may want to register is HTTP access, local file access, HTML parser, etc. In the application package, you can find a set of default profiles helping you registering the most commonly used features.

- Wintel DLL: wwwcore.dll
- Unix lib: libwwwcore.a
- Package include file: WWWCore.h
- Exported Classes and Functions

## Libwww Initialization Packages

These packages help the application set up functionality.

### Profile Initialization Package

Libwww is a framework for adding functionality. It has hooks for adding protocol modules, like for example HTTP, FTP, and also for adding streams that can convert from one media type to some other type, or presenting the result to the user. In the distribution file of the Library you will find a large set of protocol modules and streams already implemented. However, in order to use these you need to initialize them. This can be done by using the services provided by the WWWInit module.

- Wintel DLL: wwwinit.dll
- Unix lib: libwwwinit.a
- Package include file: WWWInit.h
- Exported Classes and Functions

## High Level Application Packages

These packages provides services including handling proxies, gateways, configuration files, support for `PUT`, `POST`, `OPTIONS`, `HEAD`, etc. requests.

### Application Utilities

This application package handles a lot of features that many applications need: dialogs and progress notifications, high level URI resolving, rule files etc.

- Wintel DLL: wwwapp.dll
- Unix lib: libwwwapp.a
- Package include file: WWWApp.h
- Exported Classes and Functions

## Transport Packages

Transports are registered dynamically in libwww. This means that libwww is independent of the transport being used (for example TCP) and you can therefore use libwww in any context you like. Each transport is registered with a set of parameters describing how the transport behaves, for example whether it supports preemptive access etc.

### TCP and Local File Transport Package

This is the package that provides the TCP and Local file transports used by the protocol packages.

- Wintel DLL: wwwtrans.dll
- Unix lib: libwwwtrans.a
- Package include file: WWWTrans.h
- Exported Classes and Functions

### WebMUX Transport Package - Experimental!!!

This is a very experimental package that provides pieces of the WebMUX specification

- Wintel DLL: wwwmux.dll
- Unix lib: libwwwmux.a
- Package include file: WWWMux.h
- Exported Classes and Functions

## MIME Packages

These packages handle MIME and the like.

### MIME Parser and Generator

The MIME parser package contains all the libwww functionality for handling RFC822/MIME parsing and generation including multipart MIME etc.

- Wintel DLL: wwwmime.dll
- Unix lib: libwwwmime.a
- Package include file: WWWMIME.h
- Exported Classes and Functions

## Protocol Packages

Protocols are also registered dynamically in libwww. They are registered to use a specific transport and whether they support preemptive access etc. See the application level packages for how to resolve URIs using libwww

### Local File Access

This is the include file for resolving file: addresses or equivalent

- Wintel DLL: wwwfile.dll
- Unix lib: libwwwfile.a
- Package include file: WWWFile.h
- Exported Classes and Functions

### FTP Access

This is the include file for resolving ftp: addresses or equivalent

- Wintel DLL: wwwftp.dll
- Unix lib: libwwwftp.a
- Package include file: WWWFTP.h
- Exported Classed and Functions

### Gopher Access

This is the include file for resolving gopher: addresses or equivalent

- Wintel DLL: wwwgophe.dll
- Unix lib: libwwwgopher.a
- Package include file: WWWGophe.h
- Exported Classes and Functions

### HTTP Access

This is the include file for resolving http: addresses or equivalent

- Wintel DLL: wwwhttp.dll
- Unix lib: libwwwhttp.a
- Package include file: WWWHTTP.h
- Exported Classes and Functions

### News Access

This is the include file for resolving news: and nntp: addresses or equivalent.

- Wintel DLL: wwwnews.dll
- Unix lib: libwwwnews.a
- Package include file: WWWNews.h
- Exported Classes and Functions

### Telnet Access

This is the include file for resolving telnet:, rlogin:, tn3270: addresses or equivalent.

- Wintel DLL: wwwtelnt.dll
- Unix lib: libwwwtelnt.a
- Package include file: WWWTelnt.h
- Exported Classes and Functions

### WAIS Access

This is the include file for resolving wais: addresses or equivalent

- Wintel DLL: wwwwais.dll
- Unix lib: libwwwwais.a
- Package include file: WWWWAIS.h
- Exported Classes and Functions

## Persistent Caching Packages

These packages handle persistent management of information

### HTTP/1.1 Persistent Cache Package

This module implements a HTTP/1.1 persistent cache manager.

- Wintel DLL: wwwcache.dll
- Unix lib: libwwwmime.a
- Package include file: WWWCache.h
- Exported Classes and Functions

## Stream Packages

Streams and converters are an essential part of libwww - all dataflow happens using streams.

### Special Streams Package

This interface provides a set of specialized stream. For example a stream for guessing unknown media types from magic words. It also contains streams for downloading a document into a memory buffer, counting content length and much more.

- Wintel DLL: wwwstream.dll
- Unix lib: libwwwstream.a
- Package include file: WWWStream.h
- Exported Classes and Functions

### Directory Browsing Package

The directory browsing pacakge contains code for handling browsing folders in both local files including handling icons and the like.

- Wintel DLL: wwwdir.dll
- Unix lib: libwwwdir.a
- Package include file: WWWDir.h
- Exported Classes and Functions

### ZLib Compression and Decompression Streams Package

Libwww can use zlib to compress/decompress content on the fly. This requires that zlib is available to link against, see the instructions on how to interact with external packages for detail.

- Wintel DLL: wwwzip.dll
- Unix lib: libwwwzip.a
- Package include file: WWWZip.h
- Exported Classes and Functions

## HTML and XML Parser Packages

### HTML Parser and Generator

This is the default libwww HTML parser based on a simple callback scheme into the application. It also contains code for generating HTML.

- Wintel DLL: wwwhtml.dll
- Unix lib: libwwwhtml.a
- Package include file: WWWHTML.h
- Exported Classes and Functions

### Expat XML Wrapper Package

Libwww can use the Expat XML parser to handle XML. This requires that the expat parser is available, see the instructions on how to interact with external packages for detail

- Wintel DLL: wwwhtml.dll
- Unix lib: libwwwhtml.a
- Package include file: WWWXML.h
- Exported Classes and Functions

## Database Access Packages

Database access can for example be used to handle logging etc.

### MySQL Access Package

Libwww can use MySQL for various types of logging etc. This requires that the mysql client library is available, see the instructions on how to interact with external packages for detail

- Wintel DLL: wwwsql.dll
- Unix lib: libwwwsql.a
- Package include file: WWWSQL.h
- Exported Classes and Functions