open method

  1. @override
Future<HttpClientRequest> open(
  1. String method,
  2. String host,
  3. int port,
  4. String path,
)
override

Opens an HTTP request with APM tracking capabilities

Implementation

@override
Future<HttpClientRequest> open(
  String method,
  String host,
  int port,
  String path,
) {
  const int hashMark = 0x23;
  const int questionMark = 0x3f;
  int fragmentStart = path.length;
  int queryStart = path.length;
  for (int i = path.length - 1; i >= 0; i--) {
    var char = path.codeUnitAt(i);
    if (char == hashMark) {
      fragmentStart = i;
      queryStart = i;
    } else if (char == questionMark) {
      queryStart = i;
    }
  }
  String? query;
  if (queryStart < fragmentStart) {
    query = path.substring(queryStart + 1, fragmentStart);
    path = path.substring(0, queryStart);
  }
  Uri uri = Uri(
    scheme: 'http',
    host: host,
    port: port,
    path: path,
    query: query,
  );
  return _openUrl(method, uri);
}