2817c6f81dd844b54f6232d688c001e6a12f9ebb
hiram
  Wed Feb 13 11:17:54 2019 -0800
beginning to partition the code out to files refs #18869

diff --git src/hg/hubApi/getData.c src/hg/hubApi/getData.c
new file mode 100644
index 0000000..ead339d
--- /dev/null
+++ src/hg/hubApi/getData.c
@@ -0,0 +1,55 @@
+/* manage endpoint /getData/ functions */
+
+#include "dataApi.h"
+
+void getTrackData()
+/* return data from a track */
+{
+}
+
+void getSequenceData()
+/* return DNA sequence, given at least a db=name and chrom=chr,
+   optionally start and end  */
+{
+char *db = cgiOptionalString("db");
+char *chrom = cgiOptionalString("chrom");
+char *start = cgiOptionalString("start");
+char *end = cgiOptionalString("end");
+
+if (isEmpty(db))
+    jsonErrAbort("missing URL db=<ucscDb> name for endpoint '/getData/sequence");
+if (isEmpty(chrom))
+    jsonErrAbort("missing URL chrom=<name> for endpoint '/getData/sequence?db=%s", db);
+if (chromSeqFileExists(db, chrom))
+    {
+    struct chromInfo *ci = hGetChromInfo(db, chrom);
+    struct dnaSeq *seq = NULL;
+    if (isEmpty(start) || isEmpty(end))
+	seq = hChromSeqMixed(db, chrom, 0, 0);
+    else
+	seq = hChromSeqMixed(db, chrom, sqlSigned(start), sqlSigned(end));
+    if (NULL == seq)
+        jsonErrAbort("can not find sequence for chrom=%s for endpoint '/getData/sequence?db=%s&chrom=%s", chrom, db, chrom);
+    struct jsonWrite *jw = jsonStartOutput();
+    jsonWriteString(jw, "db", db);
+    jsonWriteString(jw, "chrom", chrom);
+    if (isEmpty(start) || isEmpty(end))
+	{
+        jsonWriteNumber(jw, "start", (long long)0);
+        jsonWriteNumber(jw, "end", (long long)ci->size);
+	}
+    else
+	{
+        jsonWriteNumber(jw, "start", (long long)sqlSigned(start));
+        jsonWriteNumber(jw, "end", (long long)sqlSigned(end));
+	}
+    jsonWriteString(jw, "dna", seq->dna);
+    jsonWriteObjectEnd(jw);
+    fputs(jw->dy->string,stdout);
+    freeDnaSeq(&seq);
+    }
+else
+    jsonErrAbort("can not find specified chrom=%s in sequence for endpoint '/getData/sequence?db=%s&chrom=%s", chrom, db, chrom);
+}
+
+