The append-transform plugin appends text to the body of an HTTP response. It obtains this text from a file; the name of the file containing the append text is a parameter you specify in plugin.config, as follows:
append-transform.so path/to/file
The append-transform plugin is based on null-transform.c. The only difference is that after the plugin feeds the document through the transformation, it adds text to the response.
Below is a list of the functions in append-transform.c, in the order they appear in the source code. Below each entry is a description of what the function does:
``my_data_alloc``
Allocates and initializes a MyData structure. The plugin defines a struct, MyData, as follows:
:::c
typedef struct {
TSVIO output_vio;
TSIOBuffer output_buffer;
TSIOBufferReader output_reader;
int append_needed;
} MyData;
The MyData structure is used to represent data that the transformation (vconnection) needs. The transformation’s data pointer is set to a MyData pointer using TSContDataSet in the handle_transform routine.
``my_data_destroy``
Destroys objects of type MyData. To deallocate the transform’s data, the append_transform routine (see below) calls my_data_destroy when the transformation is complete.
``handle_transform``
This function does the actual data transformation. The transformation is created in transform_add (see below). handle_transform is called by append_transform.
``append_transform``
This is the handler function for the transformation vconnection created in transform_add. It is the implementation of the vconnection.
``transformable``
The plugin transforms only documents that have a content type of text/html. This function examines the Content-Type MIME header field in the response header. If the value of the MIME field is text/html, then the function returns 1; otherwise, it returns zero.
``transform_add``
Creates the transformation for the current transaction and sets up a transformation hook. The handler function for the transformation is append_transform.
``transform_plugin``
This is the handler function for the main continuation for the plugin. Traffic Server calls this function whenever it reads an HTTP response header. transform_plugin does the following:
``load``
Opens the file containing the text to be appended and loads the contents of the file into an TSIOBuffer called append_buffer.
``TSPluginInit``
Does the following: