Completed
Pull Request — master (#5)
by Alessandro
03:07
created

ClientUriBuilder::buildUriForConfiguration()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 13
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 4

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 13
ccs 6
cts 6
cp 1
rs 9.2
cc 4
eloc 6
nc 3
nop 2
crap 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Facile\MongoDbBundle\Services;
6
7
use Facile\MongoDbBundle\Models\ClientConfiguration;
8
9
/**
10
 * Class ClientUriBuilder.
11
 */
12
class ClientUriBuilder
13
{
14
    /**
15
     * @param ClientConfiguration $configuration
16
     * @param string              $databaseName
17
     *
18
     * @return string
19
     */
20 5
    public function buildUriForConfiguration(ClientConfiguration $configuration, string $databaseName = null): string
21
    {
22
        // Refactor with a uriBuilder service or something like that
23 5
        if ($configuration->hasCredentials() && !is_null($databaseName)) {
24 3
            return $this->generateUriWithCredentialsAndDatabase($configuration, $databaseName);
25
        }
26
27 2
        if ($configuration->hasCredentials()) {
28 1
            return $this->generateUriWithCredentials($configuration);
29
        }
30
31 1
        return $this->generateSimpleUri($configuration);
32
    }
33
34
    /**
35
     * @param ClientConfiguration $configuration
36
     * @param string              $databaseName
37
     *
38
     * @return string
39
     */
40 3
    private function generateUriWithCredentialsAndDatabase(ClientConfiguration $configuration, string $databaseName): string
41
    {
42 3
        return sprintf(
43 3
            'mongodb://%s:%s@%s:%d/%s',
44 3
            $configuration->getUsername(),
45 3
            $configuration->getPassword(),
46 3
            $configuration->getHost(),
47 3
            $configuration->getPort(),
48
            $databaseName
49
        );
50
    }
51
52
    /**
53
     * @param ClientConfiguration $configuration
54
     *
55
     * @return string
56
     */
57 1
    private function generateUriWithCredentials(ClientConfiguration $configuration): string
58
    {
59 1
        return sprintf(
60 1
            'mongodb://%s:%s@%s:%d',
61 1
            $configuration->getUsername(),
62 1
            $configuration->getPassword(),
63 1
            $configuration->getHost(),
64 1
            $configuration->getPort()
65
        );
66
    }
67
68
    /**
69
     * @param ClientConfiguration $configuration
70
     *
71
     * @return string
72
     */
73 1
    private function generateSimpleUri(ClientConfiguration $configuration): string
74
    {
75 1
        return sprintf(
76 1
            'mongodb://%s:%d',
77 1
            $configuration->getHost(),
78 1
            $configuration->getPort()
79
        );
80
    }
81
}
82