include(config.m4)dnl #!__CMD_AWK__ -f # __CGIPATH__/lists # # Show a list of a user's lists include(src/config.awk) incl(src/api.awk) incl(src/cache.awk) incl(src/cgi.awk) incl(src/sqlite.awk) incl(src/util.awk) function main( cmd, count, fields, iaout, i, id, is_private, item, item_count, item_id, label, labelstr, name, out, record, records, sel, signature, str, url) { signature = sprintf("%s/lists", search) str = cache_init(signature) if (length(str) > 0) { print str return } out = cache_begin() iaout = gettemp() url = api_ssl_endpoint "/services/users/" search "/lists" api_request(url, "GET", iaout) # format list as a gopher directory (menu) cmd = sprintf("%s <%s 2>&1", cmd_json2tsv, iaout) FS = "\t" count = 0 delete fields[0] id = 0 is_private = 0 item = "" item_count = 0 item_id = "" name = "" record = "" delete records[0] while ((cmd | getline) > 0) { if ($1 == ".value[]" && $2 == "o") { # add information for previous list if (!is_private && length(name) > 0 && item_count > 0) { labelstr = shorten_left(name, 50) label = sprintf("%4d Items: %-50s", item_count, labelstr) sel = sprintf("%s/list?%s/%d", cgipath, search, id) item = item_str("1", label, sel, server, port) record = labelstr "\v" id "\v" item count++ records[count] = record } } else if ($1 == ".value[].list_name" && $2 == "s") { name = $3 id = 0 is_private = 0 item_count = 0 } else if ($1 == ".value[].is_private" && $2 == "b") { if ($3 == "true") { is_private = 1 } } else if ($1 == ".value[].id" && $2 == "n") { id = $3 } else if ($1 == ".value[].members[].identifier" && $2 == "s") { item_count++ } } close(cmd) # add information for previous list if (!is_private && length(name) > 0 && item_count > 0) { labelstr = shorten_left(name, 50) label = sprintf("%4d Items: %-50s", item_count, labelstr) sel = sprintf("%s/list?%s/%d", cgipath, search, id) item = item_str("1", label, sel, server, port) record = labelstr "\v" id "\v" item count++ records[count] = record } # sort lists by label and id if (count > 0) { hsort(records, count) } info(out, search "'s Lists") info(out, "") for (i = 1; i <= count; i++) { record = records[i] split(record, fields, /\v/) item = fields[3] printf "%s\r\n", item >>out } info(out, "") item(out, "1", "PHAROS", docpath, server, port) cache_end() unlink(iaout) return } BEGIN { config_init() cgi_init() uri_encode_init() main() }