Completed
Push — master ( 8024bc...f8f0d2 )
by Vitor
14s
created

Voipbuster::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * SPDX-FileCopyrightText: 2024 Francois Blackburn <[email protected]>
7
 * SPDX-License-Identifier: AGPL-3.0-or-later
8
 */
9
10
namespace OCA\TwoFactorGateway\Provider\Channel\SMS\Provider\Drivers;
11
12
use Exception;
13
use OCA\TwoFactorGateway\Exception\MessageTransmissionException;
14
use OCA\TwoFactorGateway\Provider\Channel\SMS\Provider\AProvider;
15
use OCA\TwoFactorGateway\Provider\FieldDefinition;
16
use OCA\TwoFactorGateway\Provider\Settings;
17
use OCP\Http\Client\IClient;
18
use OCP\Http\Client\IClientService;
19
20
/**
21
 * @method string getApiUser()
22
 * @method static setApiUser(string $apiUser)
23
 * @method string getApiPassword()
24
 * @method static setApiPassword(string $apiPassword)
25
 * @method string getDid()
26
 * @method static setDid(string $did)
27
 */
28
class Voipbuster extends AProvider {
29
	private IClient $client;
30
31 1
	public function __construct(
32
		IClientService $clientService,
33
	) {
34 1
		$this->client = $clientService->newClient();
35
	}
36
37 1
	public function createSettings(): Settings {
38 1
		return new Settings(
39 1
			id: 'voipbuster',
40 1
			name: 'Voipbuster',
41 1
			fields: [
42 1
				new FieldDefinition(
43 1
					field: 'api_user',
44 1
					prompt: 'Please enter your Voipbuster API username:',
45 1
				),
46 1
				new FieldDefinition(
47 1
					field: 'api_password',
48 1
					prompt: 'Please enter your Voipbuster API password:',
49 1
				),
50 1
				new FieldDefinition(
51 1
					field: 'did',
52 1
					prompt: 'Please enter your Voipbuster DID:',
53 1
				),
54 1
			]
55 1
		);
56
	}
57
58
	#[\Override]
59
	public function send(string $identifier, string $message) {
60
		$user = $this->getApiUser();
61
		$password = $this->getApiPassword();
62
		$did = $this->getDid();
63
		try {
64
			$this->client->get('https://www.voipbuster.com/myaccount/sendsms.php', [
65
				'query' => [
66
					'username' => $user,
67
					'password' => $password,
68
					'from' => $did,
69
					'to' => $identifier,
70
					'text' => $message,
71
				],
72
			]);
73
		} catch (Exception $ex) {
74
			throw new MessageTransmissionException();
75
		}
76
	}
77
}
78