From 86778d06b192f0c1bc57eedcdf3fcf2cb3962052 Mon Sep 17 00:00:00 2001 From: Carlos Esquerdo Bernat Date: Mon, 7 Jun 2021 10:18:40 +0200 Subject: [PATCH] net.http: add a Header.starting_with method, to get the first header, starting with a key (#10119) --- vlib/net/http/header.v | 10 ++++++++++ vlib/net/http/header_test.v | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/vlib/net/http/header.v b/vlib/net/http/header.v index 4069d5c434..bab883a069 100644 --- a/vlib/net/http/header.v +++ b/vlib/net/http/header.v @@ -469,6 +469,16 @@ pub fn (h Header) get_custom(key string, flags ...HeaderQueryConfig) ?string { return h.data[data_key][0] } +// Gets the first value of the header starting with key, or none if the key does not exist. +pub fn (h Header) starting_with(key string) ?string { + for k, _ in h.data { + if k.starts_with(key) { + return k + } + } + return none +} + // Gets all values for the CommonHeader. pub fn (h Header) values(key CommonHeader) []string { return h.custom_values(key.str()) diff --git a/vlib/net/http/header_test.v b/vlib/net/http/header_test.v index 3426113430..a7ee6ea793 100644 --- a/vlib/net/http/header_test.v +++ b/vlib/net/http/header_test.v @@ -115,6 +115,14 @@ fn test_get_custom() ? { } } +fn test_starting_with() ? { + mut h := http.new_header() + h.add_custom('Hello-1', 'world') ? + h.add_custom('Hello-21', 'world') ? + assert h.starting_with('Hello-') ? == 'Hello-1' + assert h.starting_with('Hello-2') ? == 'Hello-21' +} + fn test_custom_values() ? { mut h := http.new_header() h.add_custom('Hello', 'world') ?