Passed
Branch master (203e41)
by Nate
02:00
created

PartMap   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 1
dl 0
loc 51
ccs 10
cts 10
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A init() 0 6 1
A getEncoding() 0 4 1
A converterType() 0 4 1
A allowMultiple() 0 4 1
1
<?php
2
/*
3
 * Copyright (c) Nate Brunette.
4
 * Distributed under the MIT License (http://opensource.org/licenses/MIT)
5
 */
6
7
declare(strict_types=1);
8
9
namespace Tebru\Retrofit\Annotation;
10
11
use Tebru\Retrofit\Http\MultipartBody;
12
use Tebru\Retrofit\RequestBodyConverter;
13
14
/**
15
 * Represents a collection of @Part annotations
16
 *
17
 * The default value specifies the variable name in the method signature.
18
 *
19
 * Any iterable may be passed as an argument.
20
 *
21
 * If the item is not a [@see MultipartBody], keys of the map will be the field
22
 * names, and the values will be handled exactly the same as as @Part. Otherwise,
23
 * all values of the MultipartBody will be used.
24
 *
25
 * @author Nate Brunette <[email protected]>
26
 *
27
 * @Annotation
28
 * @Target({"CLASS", "METHOD"})
29
 */
30
class PartMap extends ParameterAnnotation
31
{
32
    /**
33
     * How the multipart request is encoded
34
     *
35
     * @var string
36
     */
37
    private $encoding;
38
39
    /**
40
     * Initialize annotation data
41
     */
42 2
    protected function init(): void
43
    {
44 2
        parent::init();
45
46 2
        $this->encoding = $this->data['encoding'] ?? 'binary';
47 2
    }
48
49
    /**
50
     * Get the encoding type
51
     *
52
     * @return string
53
     */
54 2
    public function getEncoding(): string
55
    {
56 2
        return $this->encoding;
57
    }
58
59
    /**
60
     * Return the converter interface class
61
     *
62
     * Can be one of RequestBodyConverter, ResponseBodyConverter, or StringConverter
63
     *
64
     * @return string
65
     */
66 1
    public function converterType(): ?string
67
    {
68 1
        return RequestBodyConverter::class;
69
    }
70
71
    /**
72
     * Returns true if multiple annotations of this type are allowed
73
     *
74
     * @return bool
75
     */
76 1
    public function allowMultiple(): bool
77
    {
78 1
        return true;
79
    }
80
}
81