Passed
Push — v3.0 ( 8d7778...582152 )
by Raza
01:45
created

VerifyDocuments   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 93
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 9
eloc 32
c 1
b 0
f 0
dl 0
loc 93
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setFilesSize() 0 6 1
A getMimeType() 0 3 1
B isValidEvidenceFile() 0 36 7
1
<?php
2
3
namespace Srmklive\PayPal\Services;
4
5
use GuzzleHttp\Psr7\MimeType;
6
7
class VerifyDocuments
8
{
9
    /**
10
     * @var array
11
     */
12
    protected static $dispute_evidence_types = [
13
        'application/pdf',
14
        'image/gif',
15
        'image/jpeg',
16
        'image/png',
17
    ];
18
19
    /**
20
     * @var string
21
     */
22
    protected static $dispute_evidence_file_size = 10;
23
24
    /**
25
     * @var string
26
     */
27
    protected static $dispute_evidences_size = 50;
28
29
    /**
30
     * Get Mime type from filename.
31
     *
32
     * @param string $file
33
     *
34
     * @return string
35
     */
36
    public static function getMimeType($file)
37
    {
38
        return MimeType::fromFilename($file);
39
    }
40
41
    /**
42
     * Check if the evidence file being submitted mime type is valid.
43
     *
44
     * @param array $files
45
     *
46
     * @return bool
47
     */
48
    public static function isValidEvidenceFile(array $files)
49
    {
50
        $validFile = true;
51
        $validSize = true;
52
        $total_size = 0;
53
54
        self::setFilesSize();
55
56
        foreach ($files as $file) {
57
            $mime_type = self::getMimeType($file);
58
59
            if (!in_array($mime_type, self::$dispute_evidence_types)) {
60
                $validFile = false;
61
                break;
62
            }
63
64
            $size = filesize($file);
65
66
            if ($size > self::$dispute_evidence_file_size) {
67
                $validSize = false;
68
                break;
69
            }
70
71
            $total_size += $size;
72
73
            if ($size > self::$dispute_evidences_size) {
74
                $validSize = false;
75
                break;
76
            }
77
        }
78
79
        if (($validFile === false) || ($validSize === false)) {
80
            return false;
81
        }
82
83
        return true;
84
    }
85
86
    /**
87
     * Check file size.
88
     *
89
     * @param int $bytes
90
     * @param int $decimals
91
     *
92
     * @return array
93
     */
94
    protected static function setFilesSize()
95
    {
96
        $size_in_bytes = pow(1024, 2);
97
    
98
        self::$dispute_evidence_file_size *= $size_in_bytes;
99
        self::$dispute_evidences_size *= $size_in_bytes;
100
    }
101
}
102