Pseudo map associating String to String for HTTP exchanges

This structure differs from Map as each key can have multiple associations and the order of insertion is important to some services.

Introduced properties

fun [](k: String): Array[String]

curl :: HeaderMap :: []

Get a list of the keys associated to key
fun []=(key: String, value: String)

curl :: HeaderMap :: []=

Add a value associated to key
private var _array: Array[Couple[String, String]]

curl :: HeaderMap :: _array

private fun array: Array[Couple[String, String]]

curl :: HeaderMap :: array

private fun array=(array: Array[Couple[String, String]])

curl :: HeaderMap :: array=

fun is_empty: Bool

curl :: HeaderMap :: is_empty

Is this map empty?
fun iterator: MapIterator[String, String]

curl :: HeaderMap :: iterator

Iterate over all the associations in self
fun join_pairs(sep: String): Array[String]

curl :: HeaderMap :: join_pairs

Concatenate couple of 'key value' separated by 'sep' in Array
fun length: Int

curl :: HeaderMap :: length

Number of values in self
private fun to_url_encoded(curl: Curl): String

curl :: HeaderMap :: to_url_encoded

Get self as a single string for HTTP POST

Redefined properties

redef type SELF: HeaderMap

curl $ HeaderMap :: SELF

Type of this instance, automatically specialized in every class

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun [](k: String): Array[String]

curl :: HeaderMap :: []

Get a list of the keys associated to key
fun []=(key: String, value: String)

curl :: HeaderMap :: []=

Add a value associated to key
private var _array: Array[Couple[String, String]]

curl :: HeaderMap :: _array

private fun array: Array[Couple[String, String]]

curl :: HeaderMap :: array

private fun array=(array: Array[Couple[String, String]])

curl :: HeaderMap :: array=

protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
fun is_empty: Bool

curl :: HeaderMap :: is_empty

Is this map empty?
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun iterator: MapIterator[String, String]

curl :: HeaderMap :: iterator

Iterate over all the associations in self
fun join_pairs(sep: String): Array[String]

curl :: HeaderMap :: join_pairs

Concatenate couple of 'key value' separated by 'sep' in Array
fun length: Int

curl :: HeaderMap :: length

Number of values in self
private intern fun native_class_name: CString

core :: Object :: native_class_name

The class name of the object in CString format.
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
private fun to_url_encoded(curl: Curl): String

curl :: HeaderMap :: to_url_encoded

Get self as a single string for HTTP POST
package_diagram curl::HeaderMap HeaderMap core::Object Object curl::HeaderMap->core::Object

Parents

interface Object

core :: Object

The root of the class hierarchy.

Class definitions

curl $ HeaderMap
# Pseudo map associating `String` to `String` for HTTP exchanges
#
# This structure differs from `Map` as each key can have multiple associations
# and the order of insertion is important to some services.
class HeaderMap
	private var array = new Array[Couple[String, String]]

	# Add a `value` associated to `key`
	fun []=(key, value: String)
	do
		array.add new Couple[String, String](key, value)
	end

	# Get a list of the keys associated to `key`
	fun [](k: String): Array[String]
	do
		var res = new Array[String]
		for c in array do if c.first == k then res.add c.second
		return res
	end

	# Iterate over all the associations in `self`
	fun iterator: MapIterator[String, String] do return new HeaderMapIterator(self)

	# Get `self` as a single string for HTTP POST
	#
	# Require: `curl.is_ok`
	private fun to_url_encoded(curl: Curl): String
	do
		assert curl.is_ok

		var lines = new Array[String]
		for k, v in self do
			if k.length == 0 then continue

			k = curl.native.escape(k)
			v = curl.native.escape(v)
			lines.add "{k}={v}"
		end
		return lines.join("&")
	end

	# Concatenate couple of 'key value' separated by 'sep' in Array
	fun join_pairs(sep: String): Array[String]
	do
		var col = new Array[String]
		for k, v in self do col.add("{k}{sep}{v}")
		return col
	end

	# Number of values in `self`
	fun length: Int do return array.length

	# Is this map empty?
	fun is_empty: Bool do return array.is_empty
end
lib/curl/curl.nit:601,1--656,3