classes/RestMethod/RestQueryKvp.psm1

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
class RestQueryKvp {
    
    #####################
    # HIDDEN PROPERTIES #
    #####################
    
    #####################
    # PUBLIC PROPERTIES #
    #####################
    
    [ValidateNotNullOrEmpty()]
    [string]
    $Key

    [ValidateNotNull()]
    [string]
    $Value

    ################
    # CONSTRUCTORS #
    ################

    RestQueryKvp(
        [string]$Key,
        [object]$Value
    ){
        $this.Key = $Key
        $this.Value = $Value.ToString()
    }

    ##################
    # HIDDEN METHODS #
    ##################

    ##################
    # PUBLIC METHODS #
    ##################

    [bool]
    Equals(
        [object]$obj
    ){
        return $obj.Key -eq $this.Key -and $obj.Value -eq $this.Value
    }

    #Adapted from: https://www.powershellgallery.com/packages/PSApigeeEdge/0.2.4/Content/Private%5CConvertFrom-HashtableToQueryString.ps1
    static
    [string]
    JoinKvp(
        # The values to format
        [RestQueryKvp[]]
        $Values,

        # The character to use to separate values (default is '&')
        [string]
        $PairSeparator = '&',

        # The value to use to separate key/value pairs
        [string]
        $KeyValueSeparator = '='
    ){
        return [string]::join($PairSeparator, @(
            foreach( $kv in $Values) {
                if($kv.Key) {
                    '{0}{1}{2}' -f $kv.Key, $KeyValueSeparator, $kv.Value
                }
            }
        ))
    }
}