classes/RestMethod/FileRestMethod.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
71
72
73
74
using module ..\AtlassianContext.psm1
using module .\RestMethodQueryParams.psm1
using module .\RestMethod.psm1

class FileRestMethod : RestMethod {

    #####################
    # HIDDEN PROPERTIES #
    #####################
    
    #####################
    # PUBLIC PROPERTIES #
    #####################

    # The path to the file, when POST-ing or PUT-ing a file
    [string]
    $FilePath

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

    #file only
    FileRestMethod(
        [string]$FunctionPath,
        [string]$HttpMethod,
        [string]$FilePath
    ) : base($FunctionPath,$HttpMethod) {
        $this.FileInit($FilePath)
    }

    #file + query
    FileRestMethod(
        [string]$FunctionPath,
        [string]$HttpMethod,
        [RestMethodQueryParams]$Query,
        [string]$FilePath
    ) : base($FunctionPath,$HttpMethod,$Query) {
        $this.FileInit($FilePath)
    }

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

    hidden
    [void]
    FileInit([string]$FilePath){
        $this.FilePath = $FilePath
        if(!$this.Headers.ContainsKey("X-Atlassian-Token")) {
            $this.Headers.Add("X-Atlassian-Token","no-check")
        }
    }

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

    [object]
    Invoke(
        [AtlassianContext]$AtlassianContext
    ){
        $AtlassianContext = [RestMethod]::FillContext($AtlassianContext)
        $invokeSplat = @{
            Uri = $this.Uri($AtlassianContext)
            Method = $this.HttpMethod
            Headers = $this.HeadersToSend($AtlassianContext) 
            MaximumRetryCount = $AtlassianContext.Retries
            RetryIntervalSec = $AtlassianContext.RetryDelay
            InFile = $this.FilePath
        }
        return [RestMethod]::RootInvoke($invokeSplat)
    }
}