/* htmlMimeTest - test mime-encoded posts using htmlPage module. */
#include "common.h"
#include "options.h"
#include "verbose.h"
#include "htmlPage.h"
#include "obscure.h"
#include "qa.h"
void usage()
/* Explain usage and exit */
{
errAbort(
"htmlMimeTest - post mime-encoded page with series on input sizes\n"
"usage:\n"
" htmlMimeTest url-to-hgBlat dnaText startSize endSize\n"
"e.g. htmlMimeTest http://hgwdev-${user}.cse.ucsc.edu/cgi-bin/hgBlat input/htmlMime.txt 100 200\n"
"options:\n"
" -asFile - send data as type FILE upload (seqFile) instead of TEXTAREA (userSeq) \n"
);
}
static struct optionSpec options[] = {
{"asFile", OPTION_BOOLEAN},
{NULL, 0},
};
void htmlMimeTest(char *url, char *dnaFileName, int size)
/* Submit a sequence to hgBlat which will exercise mime parsing code
* because the form uses ENCTYPE="multipart/form-data" */
{
struct htmlPage *rootPage, *page;
struct htmlForm *form, *mainForm;
struct qaStatus *qs;
struct htmlFormVar *orgVar;
char *dna, *dnaSeg;
qs = qaPageGet(url, &rootPage);
if (qs->errMessage)
errAbort("%s",qs->errMessage);
if (qs->hardError)
errAbort("hard error");
htmlPageValidateOrAbort(rootPage);
if (verboseLevel() == 2)
{
for (form = rootPage->forms; form != NULL; form = form->next)
htmlFormPrint(form, stderr);
}
if ((mainForm = htmlFormGet(rootPage, "mainForm")) == NULL)
errAbort("Couldn't get main form");
readInGulp(dnaFileName, &dna, NULL);
dnaSeg = cloneStringZ(dna,size);
verbose(2,"dna=[%s]\n",dnaSeg);
if (optionExists("asFile"))
htmlPageSetVar(rootPage, mainForm, "seqFile", dnaFileName);
else
htmlPageSetVar(rootPage, mainForm, "userSeq", dnaSeg);
qs = qaPageFromForm(rootPage, mainForm,
"Submit", "submit", &page);
if (qs->errMessage)
errAbort("%s",qs->errMessage);
if (qs->hardError)
errAbort("hard error");
htmlPageValidateOrAbort(page);
verbose(2,"full html response = [%s]\n",page->fullText);
fprintf(stdout,"%d ok\n",size);
freez(&dnaSeg);
freez(&dna);
htmlPageFree(&page);
htmlPageFree(&rootPage);
}
int main(int argc, char *argv[])
/* Process command line. */
{
int start, end, i;
optionInit(&argc, argv, options);
if (argc != 5)
usage();
start = atoi(argv[3]);
end = atoi(argv[4]);
for (i=start; i<=end; ++i)
htmlMimeTest(argv[1],argv[2],i);
return 0;
}