-
Notifications
You must be signed in to change notification settings - Fork 786
/
RequestCookieJar.scala
79 lines (66 loc) · 2.97 KB
/
RequestCookieJar.scala
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
69
70
71
72
73
74
75
76
77
78
79
/*
* Copyright 2013 http4s.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.http4s
@deprecated("Use the CookieJar middleware instead", "0.21.20")
object RequestCookieJar {
def empty: RequestCookieJar = new RequestCookieJar(Nil)
def apply(cookies: RequestCookie*): RequestCookieJar = new RequestCookieJar(cookies.toList)
}
@deprecated("Use the CookieJar middleware instead", "0.21.20")
class RequestCookieJar private (val cookies: List[RequestCookie]) extends AnyVal {
def iterator: Iterator[RequestCookie] = cookies.iterator
def empty: RequestCookieJar = RequestCookieJar.empty
def get(key: String): Option[RequestCookie] = cookies.find(_.name == key)
def apply(key: String): RequestCookie = get(key).getOrElse(default(key))
def contains(key: String): Boolean = cookies.exists(_.name == key)
def getOrElse(key: String, default: => String): RequestCookie =
get(key).getOrElse(RequestCookie(key, default))
def default(key: String): RequestCookie =
throw new NoSuchElementException("Can't find RequestCookie " + key)
def keySet: Set[String] = cookies.map(_.name).toSet
/** Collects all keys of this map in an iterable collection.
*
* @return the keys of this map as an iterable.
*/
def keys: Iterable[String] = keySet
/** Collects all values of this map in an iterable collection.
*
* @return the values of this map as an iterable.
*/
def values: Iterable[String] = cookies.map(_.content)
/** Creates an iterator for all keys.
*
* @return an iterator over all keys.
*/
def keysIterator: Iterator[String] = keys.iterator
/** Creates an iterator for all values in this map.
*
* @return an iterator over all values that are associated with some key in this map.
*/
def valuesIterator: Iterator[Any] = values.iterator
/** Filters this map by retaining only keys satisfying a predicate.
*
* @param p the predicate used to test keys
* @return an immutable map consisting only of those key value pairs of this map where the key satisfies
* the predicate `p`. The resulting map wraps the original map without copying any elements.
*/
def filterKeys(p: String => Boolean): RequestCookieJar =
new RequestCookieJar(cookies.filter(c => p(c.name)))
override def toString(): String =
s"RequestCookieJar(${cookies.iterator.map(_.renderString).mkString("\n")})"
def ++(cookies: collection.Iterable[RequestCookie]) =
new RequestCookieJar(this.cookies ++ cookies)
}