Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
void BaseExecutionContext::setIncludePath(CStrRef path) {
  m_include_paths = f_explode(":", path);
}