all files / lib/languages/ http.js

94.12% Statements 16/17
50% Branches 1/2
100% Functions 2/2
100% Lines 13/13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68                                                                                                             
"use strict";
 
Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.http = undefined;
 
var _utils = require("../utils");
 
var _javascript = require("./javascript");
 
var _markup = require("./markup");
 
function _defineProperty(obj, key, value) { Iif (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
 
var http = {
    "request-line": {
        pattern: /^(POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b\shttps?:\/\/\S+\sHTTP\/[0-9.]+/m,
        inside: {
            // HTTP Verb
            property: /^(POST|GET|PUT|DELETE|OPTIONS|PATCH|TRACE|CONNECT)\b/,
            // Path or query argument
            "attr-name": /:\w+/,
            _order: ["property", "attr-name"]
        }
    },
    "response-status": {
        pattern: /^HTTP\/1.[01] [0-9]+.*/m,
        inside: {
            // Status, e.g. 200 OK
            property: {
                pattern: /(^HTTP\/1.[01] )[0-9]+.*/i,
                lookbehind: true
            },
            _order: ["property"]
        }
    },
    // HTTP header name
    "header-name": {
        pattern: /^[\w-]+:(?=.)/m,
        alias: "keyword"
    },
    _order: ["request-line", "response-status", "header-name"]
};
 
// Create a mapping of Content-Type headers to language definitions
var httpLanguages = {
    "application/json": _javascript.javascript,
    "application/xml": _markup.markup,
    "text/xml": _markup.markup,
    "text/html": _markup.markup
};
 
// Insert each content type parser that has its associated language
// currently loaded.
Object.keys(httpLanguages).forEach(function (contentType) {
    var _options;
 
    var options = (_options = {}, _defineProperty(_options, contentType, {
        pattern: new RegExp("(content-type:\\s*\"" + contentType + "[\\w\\W]*?)(?:\\r?\\n|\\r){2}[\\w\\W]*", "i"),
        lookbehind: true,
        inside: httpLanguages[contentType]
    }), _defineProperty(_options, "_order", [contentType]), _options);
 
    _utils.lang.insertBefore(http, "header-name", options);
});
 
exports.http = http;