Variant f_get_headers(CStrRef url, int format /* = 0 */) { Variant c = f_curl_init(); f_curl_setopt(c, k_CURLOPT_URL, url); f_curl_setopt(c, k_CURLOPT_RETURNTRANSFER, true); f_curl_setopt(c, k_CURLOPT_HEADER, 1); Variant res = f_curl_exec(c); if (same(res, false)) { return false; } String response = res.toString(); int pos = response.find("\r\n\r\n"); if (pos != String::npos) { response = response.substr(0, pos); } Array ret = f_explode("\r\n", response); if (!format) { return ret; } Array assoc; for (ArrayIter iter(ret); iter; ++iter) { Array tokens = f_explode(": ", iter.second(), 2); if (tokens.size() == 2) { assoc.set(tokens[0], tokens[1]); } else { assoc.append(iter.second()); } } return assoc; }
bool TestExtString::test_explode() { { String metric = "create stuff"; Array pieces = f_explode(" ", metric, 1); VS(pieces.size(), 1); VS(pieces[0], "create stuff"); } { String metric = "create stuff"; Array pieces = f_explode(" ", metric, 0); VS(pieces.size(), 1); VS(pieces[0], "create stuff"); } { String pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; Array pieces = f_explode(" ", pizza); VS(pieces[0], "piece1"); VS(pieces[1], "piece2"); } { String str = "one|two|three|four"; Array ret = f_explode("|", str, 2); VERIFY(ret.size() == 2); VS(ret[0], "one"); VS(ret[1], "two|three|four"); } { String str = "one|two|three|four"; Array ret = f_explode("|", str, -1); VERIFY(ret.size() == 3); VS(ret[0], "one"); VS(ret[1], "two"); VS(ret[2], "three"); } { String str = "ab"; Array ret = f_explode("b", str); VS(ret[0], "a"); VS(ret[1], ""); } { String str = "b"; Array ret = f_explode("b", str); VS(ret[0], ""); VS(ret[1], ""); } { String str = "bb"; Array ret = f_explode("b", str); VS(ret[0], ""); VS(ret[1], ""); VS(ret[2], ""); } { String str = ""; Array ret = f_explode("b", str); VS(ret[0], ""); } return Count(true); }
bool TestExtMailparse::test_mailparse_msg_create() { const char *files[] = { "mime", "phpcvs1", "qp", "uue" }; for (unsigned int i = 0; i < sizeof(files)/sizeof(files[0]); i++) { string file = files[i]; string testname = "test/ext/test_ext_mailparse." + file + ".txt"; string expname = "test/ext/test_ext_mailparse." + file + ".exp"; Variant mime = f_mailparse_msg_create(); PlainFile input; input.open(testname, "r"); while (!input.eof()) { String data = input.read(1024); if (!data.isNull()) { f_mailparse_msg_parse(mime, data); } } input.close(); Array arr = f_mailparse_msg_get_structure(mime); f_ob_start(); echo("Message: "); echo(file.c_str()); echo("\n"); for (ArrayIter iter(arr); iter; ++iter) { Variant partname = iter.second(); int depth = f_count(f_explode(".", partname)) - 1; String indent = f_str_repeat(" ", depth * 2); Variant subpart = f_mailparse_msg_get_part(mime, partname); if (subpart.isNull()) { f_var_dump(partname); echo("\n"); f_var_dump(arr); break; } Variant data = f_mailparse_msg_get_part_data(subpart); echo("\n"); echo(indent); echo("Part "); echo(partname); echo("\n"); f_ksort(ref(data)); for (ArrayIter iter(data); iter; ++iter) { String key = iter.first().toString(); if (key != "headers" && key != "ending-pos-body") { echo(indent); echo(key); echo(" => "); f_var_dump(iter.second()); } } } String output = f_ob_get_contents(); Variant expect = f_file_get_contents(expname.c_str()); VS(output, expect); f_ob_end_clean(); } return Count(true); }
void BaseExecutionContext::setIncludePath(CStrRef path) { m_include_paths = f_explode(":", path); }