* Takes a request headers object, validates it and sets defaults, and returns * the resulting headers in object format and NgHeaders string list format. * @returns {object}
(headers, session)
| 709 | * @returns {object} |
| 710 | */ |
| 711 | function prepareRequestHeadersObject(headers, session) { |
| 712 | const headersObject = ObjectAssign({ __proto__: null }, headers); |
| 713 | |
| 714 | if (headersObject[HTTP2_HEADER_METHOD] === undefined) { |
| 715 | headersObject[HTTP2_HEADER_METHOD] = HTTP2_METHOD_GET; |
| 716 | } |
| 717 | |
| 718 | const connect = headersObject[HTTP2_HEADER_METHOD] === HTTP2_METHOD_CONNECT; |
| 719 | |
| 720 | if (!connect || headersObject[HTTP2_HEADER_PROTOCOL] !== undefined) { |
| 721 | if (getAuthority(headersObject) === undefined) |
| 722 | headersObject[HTTP2_HEADER_AUTHORITY] = session[kAuthority]; |
| 723 | if (headersObject[HTTP2_HEADER_SCHEME] === undefined) |
| 724 | headersObject[HTTP2_HEADER_SCHEME] = session[kProtocol].slice(0, -1); |
| 725 | if (headersObject[HTTP2_HEADER_PATH] === undefined) |
| 726 | headersObject[HTTP2_HEADER_PATH] = '/'; |
| 727 | } else { |
| 728 | if (headersObject[HTTP2_HEADER_AUTHORITY] === undefined) |
| 729 | throw new ERR_HTTP2_CONNECT_AUTHORITY(); |
| 730 | if (headersObject[HTTP2_HEADER_SCHEME] !== undefined) |
| 731 | throw new ERR_HTTP2_CONNECT_SCHEME(); |
| 732 | if (headersObject[HTTP2_HEADER_PATH] !== undefined) |
| 733 | throw new ERR_HTTP2_CONNECT_PATH(); |
| 734 | } |
| 735 | |
| 736 | const headersList = buildNgHeaderString( |
| 737 | headersObject, |
| 738 | assertValidPseudoHeader, |
| 739 | session[kStrictSingleValueFields], |
| 740 | ); |
| 741 | |
| 742 | return { |
| 743 | headersObject, |
| 744 | headersList, |
| 745 | scheme: headersObject[HTTP2_HEADER_SCHEME], |
| 746 | authority: getAuthority(headersObject), |
| 747 | method: headersObject[HTTP2_HEADER_METHOD], |
| 748 | }; |
| 749 | } |
| 750 | |
| 751 | const emptyArray = []; |
| 752 | const kNeverIndexFlag = StringFromCharCode(NGHTTP2_NV_FLAG_NO_INDEX); |
no test coverage detected
searching dependent graphs…