include(config.m4)dnl #!__CMD_AWK__ -f # __CGIPATH__/account # # Show details for an account include(src/config.awk) incl(src/api.awk) incl(src/cache.awk) incl(src/cgi.awk) incl(src/sqlite.awk) incl(src/util.awk) incl(src/web.awk) function main( acct, cmd, col, cols, count, descr, dir, email, iaout, id, item_server, item_size, out, sel, signature, str, thumb, title, type, url) { count = split(search, parts, "/") acct = parts[1] email = parts[2] signature = sprintf("account/%s/%s", acct, email) str = cache_init(signature) if (length(str) > 0) { print str return } out = cache_begin() iaout = gettemp() url = api_endpoint "/metadata/" acct api_request(url, "GET", iaout) # format search results as a gopher directory (menu) cmd = sprintf("%s <%s 2>&1", cmd_json2tsv, iaout) FS = "\t" cols = 0 delete col descr = "" dir = "" id = "" item_server = "" item_size = 0 title = "" thumb = "" type = "" while ((cmd | getline) > 0) { if ($1 == ".dir" && $2 == "s") { dir = $3 } else if ($1 == ".files[].name" && $2 == "s") { if ($3 == "__ia_thumb.jpg") { thumb = $3 } } else if ($1 == ".item_size" && $2 == "n") { item_size = $3 } else if ($1 == ".metadata.collection" && $2 == "s") { cols++ col[cols] = $3 } else if ($1 == ".metadata.collection[]" && $2 == "s") { cols++ col[cols] = $3 } else if ($1 == ".metadata.description" && $2 == "s") { descr = $3 } else if ($1 == ".metadata.identifier" && $2 == "s") { id = $3 } else if ($1 == ".metadata.mediatype" && $2 == "s") { type = $3 } else if ($1 == ".metadata.title" && $2 == "s") { title = $3 } else if ($1 == ".server" && $2 == "s") { item_server = $3 } } close(cmd) if (length(id) == 0) { print_not_found(out, url) cache_end() unlink(iaout) return } info(out, "Account: " acct) if (length(thumb) > 0) { url = sprintf("http://%s%s/%s", item_server, dir, thumb) sel = cgipath "/raw/" url item(out, "I", "Thumbnail", sel, server, port) } print_html(out, descr) if (length(email) > 0) { sel = cgipath "/search?uploader:" email "/sortaddeddate desc" item(out, "1", "Uploads", sel, server, port) } sel = cgipath "/search?anyfield:" acct "/sortaddeddate desc" item(out, "1", "Items", sel, server, port) sel = cgipath "/lists?" acct item(out, "1", "Lists", sel, server, port) info(out, "") info(out, sprintf("%-20s %s\r\n", "Identifier:", id)) if (item_size > 0) { info(out, sprintf("%-20s %d\r\n", "Item Size:", item_size)) } info(out, sprintf("%-20s %s\r\n", "Media Type:", type)) info(out, "") sel = sprintf("URL:%s/details?%s", api_ssl_endpoint, uri_encode(id)) item(out, "h", "Account web page", sel, server, port) item(out, "1", "PHAROS", docpath, server, port) cache_end() unlink(iaout) exit 0 } BEGIN { config_init() cgi_init() uri_encode_init() main() }