Completed
Push — 1.x ( 48ee65...5c55fc )
by Joel
03:10
created

VolumeResource::find()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 16
rs 9.4286
cc 3
eloc 11
nc 3
nop 3
1
<?php
2
3
namespace Docker\API\Resource;
4
5
use Joli\Jane\Swagger\Client\QueryParam;
6
use Joli\Jane\Swagger\Client\Resource;
7
8
class VolumeResource extends Resource
9
{
10
    /**
11
     * List volumes.
12
     * 
13
     * @param array  $parameters List of parameters
14
     * @param string $fetch      Fetch mode (object or response)
15
     *
16
     * @return \Psr\Http\Message\ResponseInterface
17
     */
18
    public function findAll($parameters = [], $fetch = self::FETCH_OBJECT)
19
    {
20
        $queryParam = new QueryParam();
21
        $queryParam->setDefault('filters', null);
22
        $url      = sprintf('/v1.21/volumes?%s', $queryParam->buildQueryString($parameters));
23
        $request  = $this->messageFactory->createRequest('GET', $url, $queryParam->buildHeaders($parameters), null);
24
        $request  = $request->withHeader('Host', 'localhost');
25
        $response = $this->httpClient->sendRequest($request);
26
        if (self::FETCH_RESPONSE == $fetch) {
27
            return $response;
28
        }
29
        if ('200' == $response->getStatusCode()) {
30
            return $this->serializer->deserialize($response->getBody()->getContents(), 'Docker\\API\\Model\\VolumeList', 'json');
31
        }
32
33
        return $response;
34
    }
35
36
    /**
37
     * Create a volume.
38
     * 
39
     * @param mixed  $volumeConfig Volume configuration
40
     * @param array  $parameters   List of parameters
41
     * @param string $fetch        Fetch mode (object or response)
42
     *
43
     * @return \Psr\Http\Message\ResponseInterface
44
     */
45
    public function create($volumeConfig, $parameters = [], $fetch = self::FETCH_OBJECT)
46
    {
47
        $queryParam = new QueryParam();
48
        $url        = sprintf('/v1.21/volumes/create?%s', $queryParam->buildQueryString($parameters));
49
        $request    = $this->messageFactory->createRequest('POST', $url, $queryParam->buildHeaders($parameters), $volumeConfig);
50
        $request    = $request->withHeader('Host', 'localhost');
51
        $response   = $this->httpClient->sendRequest($request);
52
        if (self::FETCH_RESPONSE == $fetch) {
53
            return $response;
54
        }
55
        if ('201' == $response->getStatusCode()) {
56
            return $this->serializer->deserialize($response->getBody()->getContents(), 'Docker\\API\\Model\\Volume', 'json');
57
        }
58
59
        return $response;
60
    }
61
62
    /**
63
     * Instruct the driver to remove the volume.
64
     * 
65
     * @param mixed  $name       Volume name or id
66
     * @param array  $parameters List of parameters
67
     * @param string $fetch      Fetch mode (object or response)
68
     *
69
     * @return \Psr\Http\Message\ResponseInterface
70
     */
71
    public function remove($name, $parameters = [], $fetch = self::FETCH_OBJECT)
72
    {
73
        $queryParam = new QueryParam();
74
        $url        = sprintf('/v1.21/volumes/%s?%s', $name, $queryParam->buildQueryString($parameters));
75
        $request    = $this->messageFactory->createRequest('DELETE', $url, $queryParam->buildHeaders($parameters), null);
76
        $request    = $request->withHeader('Host', 'localhost');
77
        $response   = $this->httpClient->sendRequest($request);
78
        if (self::FETCH_RESPONSE == $fetch) {
79
            return $response;
80
        }
81
82
        return $response;
83
    }
84
85
    /**
86
     * Inspect a volume.
87
     * 
88
     * @param mixed  $name       Volume name or id
89
     * @param array  $parameters List of parameters
90
     * @param string $fetch      Fetch mode (object or response)
91
     *
92
     * @return \Psr\Http\Message\ResponseInterface
93
     */
94
    public function find($name, $parameters = [], $fetch = self::FETCH_OBJECT)
95
    {
96
        $queryParam = new QueryParam();
97
        $url        = sprintf('/v1.21/volumes/%s?%s', $name, $queryParam->buildQueryString($parameters));
98
        $request    = $this->messageFactory->createRequest('GET', $url, $queryParam->buildHeaders($parameters), null);
99
        $request    = $request->withHeader('Host', 'localhost');
100
        $response   = $this->httpClient->sendRequest($request);
101
        if (self::FETCH_RESPONSE == $fetch) {
102
            return $response;
103
        }
104
        if ('200' == $response->getStatusCode()) {
105
            return $this->serializer->deserialize($response->getBody()->getContents(), 'Docker\\API\\Model\\Volume', 'json');
106
        }
107
108
        return $response;
109
    }
110
}
111