Sha256: 866fc9e530c193356bc346bfaad6627655828bd6918c0341f780ef8bee5b0744

Contents?: true

Size: 1.24 KB

Versions: 10

Compression:

Stored size: 1.24 KB

Contents

//
//  HTTP.cc
//  snowcrash
//
//  Created by Zdenek Nemec on 7/11/13.
//  Copyright (c) 2013 Apiary Inc. All rights reserved.
//

#include "HTTP.h"

using namespace snowcrash;

const std::string HTTPHeaderName::Accept = "Accept";
const std::string HTTPHeaderName::ContentLength = "Content-Length";
const std::string HTTPHeaderName::ContentType = "Content-Type";
const std::string HTTPHeaderName::TransferEncoding = "Transfer-Encoding";

const std::string HTTPMethodName::Head = "HEAD";
const std::string HTTPMethodName::Connect = "CONNECT";

StatusCodeTraits snowcrash::GetStatusCodeTrait(HTTPStatusCode code)
{
    StatusCodeTraits traits;
    traits.code = code;

    // Following status codes MUST NOT contain response body
    if (code == 204 || code == 304 || code/100 == 1) {
        traits.allowBody = false;
    }

    return traits;
}

HTTPMethodTraits snowcrash::GetMethodTrait(HTTPMethod method)
{
    HTTPMethodTraits traits;
    traits.method = method;

    // Following HTTP methods MUST NOT contain response body
    // FIXME: When refactoring traits don't forget that 'CONNECT' has no body only when 1xx-2xx
    if (method == HTTPMethodName::Head || method == HTTPMethodName::Connect) {
        traits.allowBody = false;
    }

    return traits;
}

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
redsnow-0.2.1 ext/snowcrash/src/HTTP.cc
redsnow-0.2.0 ext/snowcrash/src/HTTP.cc
redsnow-0.1.6 ext/snowcrash/src/HTTP.cc
redsnow-0.1.5 ext/snowcrash/src/HTTP.cc
redsnow-0.1.4 ext/snowcrash/src/HTTP.cc
redsnow-0.1.3 ext/snowcrash/src/HTTP.cc
redsnow-0.1.2 ext/snowcrash/src/HTTP.cc
redsnow-0.1.1 ext/snowcrash/src/HTTP.cc
redsnow-0.1.0 ext/snowcrash/src/HTTP.cc
redsnow-0.0.8 ext/snowcrash/src/HTTP.cc