summaryrefslogtreecommitdiff
path: root/server/vendor/php-opencloud/common/src/Common/Api/AbstractParams.php
blob: 225e0255c0d9244f8eadf8cfc746f0a85f7ef6ef (plain)
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php

namespace OpenCloud\Common\Api;

abstract class AbstractParams
{
    // locations
    const QUERY = 'query';
    const HEADER = 'header';
    const URL = 'url';
    const JSON = 'json';
    const RAW = 'raw';

    // types
    const STRING_TYPE = "string";
    const BOOL_TYPE = "boolean";
    const BOOLEAN_TYPE = self::BOOL_TYPE;
    const OBJECT_TYPE = "object";
    const ARRAY_TYPE = "array";
    const NULL_TYPE = "NULL";
    const INT_TYPE = 'integer';
    const INTEGER_TYPE = self::INT_TYPE;

    public static function isSupportedLocation($val)
    {
        return in_array($val, [self::QUERY, self::HEADER, self::URL, self::JSON, self::RAW]);
    }

    public function limit()
    {
        return [
            'type'        => self::INT_TYPE,
            'location'    => 'query',
            'description' => <<<DESC
This will limit the total amount of elements returned in a list up to the number specified. For example, specifying a
limit of 10 will return 10 elements, regardless of the actual count.
DESC
        ];
    }

    public function marker()
    {
        return [
            'type'        => 'string',
            'location'    => 'query',
            'description' => <<<DESC
Specifying a marker will begin the list from the value specified. Elements will have a particular attribute that
identifies them, such as a name or ID. The marker value will search for an element whose identifying attribute matches
the marker value, and begin the list from there.
DESC
        ];
    }

    public function id($type)
    {
        return [
            'description' => sprintf("The unique ID, or identifier, for the %s", $type),
            'type'        => self::STRING_TYPE,
            'location'    => self::JSON,
        ];
    }

    public function idPath()
    {
        return [
            'type'        => self::STRING_TYPE,
            'location'    => self::URL,
            'description' => 'The unique ID of the resource',
        ];
    }

    public function name($resource)
    {
        return [
            'description' => sprintf("The name of the %s", $resource),
            'type'        => self::STRING_TYPE,
            'location'    => self::JSON,
        ];
    }


    public function sortDir()
    {
        return [
            'type'        => self::STRING_TYPE,
            'location'    => self::QUERY,
            'description' => "Sorts by one or more sets of attribute and sort direction combinations.",
            'enum'        => ['asc', 'desc']
        ];
    }

    public function sortKey()
    {
        return [
            'type'     => self::STRING_TYPE,
            'location' => self::QUERY,
            'description' => "Sorts by one or more sets of attribute and sort direction combinations.",
        ];
    }
}