7c04d352647faab3ca7f194dc5f11f764d876ce3
hiram
  Tue Mar 21 13:44:35 2023 -0700
adding some chromAlias recognition for some getData functions refs #30544

diff --git src/hg/hubApi/dataApi.h src/hg/hubApi/dataApi.h
index 1dea88f..32ec4c0 100644
--- src/hg/hubApi/dataApi.h
+++ src/hg/hubApi/dataApi.h
@@ -1,251 +1,255 @@
 /* dataApi.h - functions for API access to UCSC data resources */
 
 #ifndef DATAAPH_H
 
 #include "common.h"
 #include "linefile.h"
 #include "hash.h"
 #include "options.h"
 #include "jksql.h"
 #include "htmshell.h"
 #include "web.h"
 #include "cheapcgi.h"
 #include "cart.h"
 #include "hui.h"
 #include "udc.h"
 #include "knetUdc.h"
 #include "genbank.h"
 #include "trackHub.h"
 #include "hgConfig.h"
 #include "hCommon.h"
 #include "hPrint.h"
 #include "bigWig.h"
 #include "hubConnect.h"
 #include "obscure.h"
 #include "errCatch.h"
 #include "vcf.h"
 #include "bedTabix.h"
 #include "bamFile.h"
 #include "jsonParse.h"
 #include "jsonWrite.h"
 #include "chromInfo.h"
 #include "wiggle.h"
 #include "hubPublic.h"
 #include "cartTrackDb.h"
+#include "chromAlias.h"
 
 #ifdef USE_HAL
 #include "halBlockViz.h"
 #endif
 
 /* reference for these error codes:
  * https://www.restapitutorial.com/httpstatuscodes.html
  */
 /* error return codes */
 #define err206	206
 #define err206Msg	"Partial Content"
 #define err301	301
 #define err301Msg	"Moved Permanently"
 #define err400	400
 #define err400Msg	"Bad Request"
 #define err403	403
 #define err403Msg	"Forbidden"
 #define err404	404
 #define err404Msg	"Not Found"
 #define err415	415
 #define err415Msg	"Unsupported track type"
 #define err429	429
 #define err429Msg	"Too Many Requests"
 #define err500	500
 #define err500Msg	"Internal Server Error"
 
 /* list of all potential arguments */
 #define argHubUrl	"hubUrl"
 #define argGenome	"genome"
 #define argTrackLeavesOnly	"trackLeavesOnly"
 #define argTrack	"track"
 #define argChrom	"chrom"
 #define argStart	"start"
 #define argEnd	"end"
 #define argMaxItemsOutput	"maxItemsOutput"
 #define argJsonOutputArrays	"jsonOutputArrays"
 #define argCategories "categories"
 #define argSearchTerm "search"
 
 /* valid argument listings to verify extraneous arguments
  *  initialized in hubApi.c
  */
 extern char *argListPublicHubs[];
 extern char *argListUcscGenomes[];
 extern char *argListHubGenomes[];
 extern char *argListTracks[];
 extern char *argListChromosomes[];
 extern char *argListSchema[];
 extern char *argGetDataTrack[];
 extern char *argGetDataSequence[];
 extern char *argSearch[];
 
 /* maximum number of words expected in PATH_INFO parsing
  *   so far only using 2
  */
 #define MAX_PATH_INFO 32
 
 /* maximum amount of DNA allowed in a get sequence request */
 #define MAX_DNA_LENGTH	499999999
 /* this size is directly related to the max limit in needMem used in
  * jsonWriteString
  */
 
 extern long enteredMainTime;	/* will become = clock1000() on entry */
 
 /* limit amount of output to a maximum to avoid overload */
 extern int maxItemsOutput;	/* can be set in URL maxItemsOutput=N */
 extern long long itemsReturned;	/* for getData functions, number of items returned */
 extern boolean reachedMaxItems;	/* during getData, signal to return */
 
 /* downloadUrl for use in error exits when reachedMaxItems */
 extern struct dyString *downloadUrl;
 
 /* supportedTypes will be initialized to a known supported set */
 extern struct slName *supportedTypes;
 
 /* for debugging purpose, current bot delay value */
 extern int botDelay;
 extern boolean debug;	/* can be set in URL debug=1, to turn off: debug=0 */
 
 /* default is to list all trackDb entries, composite containers too.
  * This option will limit to only the actual track entries with data
  */
 extern boolean trackLeavesOnly;	/* set by CGI parameter 'trackLeavesOnly' */
 
 /* this selects output type 'arrays', where the default type is: objects */
 extern boolean jsonOutputArrays; /* set by CGI parameter 'jsonOutputArrays' */
 
 extern boolean measureTiming;	/* set by CGI parameters */
 
 /*  functions in hubApi.c */
 struct hubPublic *hubPublicDbLoadAll();
 
 struct dbDb *ucscDbDb();
 /* return the dbDb table as an slList */
 
 char *verifyLegalArgs(char *validArgList[]);
 /* validArgList is an array of strings for valid arguments
  * returning string of any other arguments not on that list found in
  * cgiVarList(), NULL when none found.
  */
 
 /* ######################################################################### */
 /*  functions in apiUtils.c */
 
 void startProcessTiming();
 /* for measureTiming, beginning processing */
 
 void apiFinishOutput(int errorCode, char *errorString, struct jsonWrite *jw);
 /* finish json output, potential output an error code other than 200 */
 
 void apiErrAbort(int errorCode, char *errString, char *format, ...);
 /* Issue an error message in json format, and exit(0) */
 
 struct jsonWrite *apiStartOutput();
 /* begin json output with standard header information for all requests */
 
 extern char *jsonTypeStrings[];
 #define JSON_STRING	0	//    "string",	/* type 0 */
 #define JSON_NUMBER	1	//    "number",	/* type 1 */
 #define JSON_OBJECT	2	//    "object",	/* type 2 */
 #define JSON_ARRAY	3	//    "array",	/* type 3 */
 #define JSON_BOOLEAN	4	//    "boolean",	/* type 4 */
 #define JSON_NULL	5	//    "null"	/* type 5 */
 #define JSON_DOUBLE	6	//    UCSC json type double	/* type 6 */
 
 int autoSqlToJsonType(char *asType);
 /* convert an autoSql field type to a Json type */
 
 int tableColumns(struct sqlConnection *conn, char *table,
    char ***nameReturn, char ***typeReturn, int **jsonTypes);
 /* return the column names, the MySQL data type, and json data type
  *   for the given table return number of columns (aka 'fields')
  */
 
 struct trackHub *errCatchTrackHubOpen(char *hubUrl);
 /* use errCatch around a trackHub open in case it fails */
 
 struct trackDb *obtainTdb(struct trackHubGenome *genome, char *db);
 /* return a full trackDb fiven the hub genome pointer, or ucsc database name */
 
 struct trackDb *findTrackDb(char *track, struct trackDb *tdb);
 /* search tdb structure for specific track, recursion on subtracks */
 
 struct bbiFile *bigFileOpen(char *trackType, char *bigDataUrl);
 /* open bigDataUrl for correct trackType and error catch if failure */
 
 int chromInfoCmp(const void *va, const void *vb);
 /* Compare to sort based on size */
 
 boolean allowedBigBedType(char *type);
 /* return TRUE if the big* type is to be supported
  * add to this list as the big* supported types are expanded
  */
 
 /* temporarily from table browser until proven works, then move to library */
 struct asObject *asForTable(struct sqlConnection *conn, char *table,
     struct trackDb *tdb);
 /* Get autoSQL description if any associated with table. */
 /* Wrap some error catching around asForTable. */
 
 struct trackHubGenome *findHubGenome(struct trackHub *hub, char *genome,
     char *endpoint, char *hubUrl);
 /* given open 'hub', find the specified 'genome' called from 'endpoint' */
 
 struct dbDb *ucscDbDb();
 /* return the dbDb table as an slList */
 
 boolean isSupportedType(char *type);
 /* is given type in the supportedTypes list ? */
 
 void wigColumnTypes(struct jsonWrite *jw);
 /* output column headers for a wiggle data output schema */
 
 void outputSchema(struct trackDb *tdb, struct jsonWrite *jw,
     char *columnNames[], char *columnTypes[], int jsonTypes[],
 	struct hTableInfo *hti, int columnCount, int asColumnCount,
 	    struct asColumn *columnEl);
 /* print out the SQL schema for this trackDb */
 
 void bigColumnTypes(struct jsonWrite *jw, struct sqlFieldType *fiList,
     struct asObject *as);
 /* show the column types from a big file autoSql definitions */
 
 boolean trackHasData(struct trackDb *tdb);
 /* check if this is actually a data track:
  *	TRUE when has data, FALSE if has no data
  * When NO trackDb, can't tell at this point, will check that later
  */
 
 #define trackHasNoData(tdb) (!trackHasData(tdb))
 
 boolean protectedTrack(char *db, struct trackDb *tdb, char *trackName);
 /* determine if track is off-limits protected data */
 
 boolean isWiggleDataTable(char *type);
 /* is this a wiggle data track table */
 
+char *chrOrAlias(char *db, char *hubUrl);
+/* get incoming chr name, may be an alias, return the native chr name */
+
 /* ######################################################################### */
 /*  functions in getData.c */
 
 void apiGetData(char *words[MAX_PATH_INFO]);
 /* 'getData' function, words[1] is the subCommand */
 
 /* ######################################################################### */
 /*  functions in list.c */
 
 void apiList(char *words[MAX_PATH_INFO]);
 /* 'list' function words[1] is the subCommand */
 
 /* ######################################################################### */
 /*  functions in search.c */
 
 void apiSearch(char *words[MAX_PATH_INFO]);
 /* search function */
 
 #endif	/*	 DATAAPH_H	*/