PeerCastStation.HTTP.HTTPPushSourceConnection.Handshake C# (CSharp) Method

Handshake() private method

private Handshake ( CancellationToken cancel_token ) : Task
cancel_token System.Threading.CancellationToken
return Task
    private async Task Handshake(CancellationToken cancel_token)
    {
      var request = await HTTPRequestReader.ReadAsync(connection.Stream, cancel_token);
      if (request==null) new HTTPError(HttpStatusCode.BadRequest);
      if (request.Method!="POST") new HTTPError(HttpStatusCode.MethodNotAllowed);
      Logger.Debug("POST requested");

      string encodings;
      if (request.Headers.TryGetValue("TRANSFER-ENCODING", out encodings)) {
        var codings = encodings.Split(',')
          .Select(token => token.Trim())
          .Distinct()
          .ToArray();
        if (codings.Length>1 ||
            codings[0].ToLowerInvariant()!="chunked") {
          new HTTPError(HttpStatusCode.NotImplemented);
        }
        chunked = true;
        Logger.Debug("chunked encoding");
      }

      if (request.Headers.ContainsKey("CONTENT-TYPE")) {
        Logger.Debug("Content-Type: {0}", request.Headers["CONTENT-TYPE"]);
      }

      if (!request.Headers.TryGetValue("USER-AGENT", out clientName)) {
        clientName = "";
      }
    }