Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit486ac94

Browse files
committed
Add TurboSMS notifier
1 parent4dec27f commit486ac94

File tree

11 files changed

+134
-11
lines changed

11 files changed

+134
-11
lines changed

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@
140140
useSymfony\Component\Notifier\Bridge\SmsBiuras\SmsBiurasTransportFactory;
141141
useSymfony\Component\Notifier\Bridge\SpotHit\SpotHitTransportFactory;
142142
useSymfony\Component\Notifier\Bridge\Telegram\TelegramTransportFactory;
143+
useSymfony\Component\Notifier\Bridge\TurboSms\TurboSmsTransport;
143144
useSymfony\Component\Notifier\Bridge\Twilio\TwilioTransportFactory;
144145
useSymfony\Component\Notifier\Bridge\Zulip\ZulipTransportFactory;
145146
useSymfony\Component\Notifier\Notifier;
@@ -2439,6 +2440,7 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $
24392440
SmsBiurasTransportFactory::class =>'notifier.transport_factory.smsbiuras',
24402441
SpotHitTransportFactory::class =>'notifier.transport_factory.spothit',
24412442
TelegramTransportFactory::class =>'notifier.transport_factory.telegram',
2443+
TurboSmsTransport::class =>'notifier.transport_factory.turbosms',
24422444
TwilioTransportFactory::class =>'notifier.transport_factory.twilio',
24432445
ZulipTransportFactory::class =>'notifier.transport_factory.zulip',
24442446
];
@@ -2459,6 +2461,7 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $
24592461
case'rocketchat':$package ='rocket-chat';break;
24602462
case'smsbiuras':$package ='sms-biuras';break;
24612463
case'spothit':$package ='spot-hit';break;
2464+
case'turbosms':$package ='turbo-sms';break;
24622465
}
24632466

24642467
if (!ContainerBuilder::willBeAvailable(sprintf('symfony/%s-notifier',$package),$class,$parentPackages)) {

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier_transports.php‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
useSymfony\Component\Notifier\Bridge\SmsBiuras\SmsBiurasTransportFactory;
4343
useSymfony\Component\Notifier\Bridge\SpotHit\SpotHitTransportFactory;
4444
useSymfony\Component\Notifier\Bridge\Telegram\TelegramTransportFactory;
45+
useSymfony\Component\Notifier\Bridge\TurboSms\TurboSmsTransportFactory;
4546
useSymfony\Component\Notifier\Bridge\Twilio\TwilioTransportFactory;
4647
useSymfony\Component\Notifier\Bridge\Zulip\ZulipTransportFactory;
4748
useSymfony\Component\Notifier\Transport\AbstractTransportFactory;
@@ -189,5 +190,9 @@
189190
->set('notifier.transport_factory.messagebird', MessageBirdTransportFactory::class)
190191
->parent('notifier.transport_factory.abstract')
191192
->tag('texter.transport_factory')
193+
194+
->set('notifier.transport_factory.turbosms', TurboSmsTransportFactory::class)
195+
->parent('notifier.transport_factory.abstract')
196+
->tag('texter.transport_factory')
192197
;
193198
};

‎src/Symfony/Bundle/FrameworkBundle/composer.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
"symfony/sms-biuras-notifier":"^5.3|^6.0",
8282
"symfony/spot-hit-notifier":"^5.3|^6.0",
8383
"symfony/telegram-notifier":"^5.3|^6.0",
84+
"symfony/turbo-sms-notifier":"^5.4|^6.0",
8485
"symfony/twilio-notifier":"^5.3|^6.0",
8586
"symfony/zulip-notifier":"^5.3|^6.0",
8687
"symfony/process":"^4.4|^5.0|^6.0",

‎src/Symfony/Component/Notifier/Bridge/TurboSms/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ TURBOSMS_DSN=turbosms://AUTH_TOKEN@default?from=FROM
1212

1313
where:
1414
-`AUTH_TOKEN` is your TurboSms auth token
15-
-`FROM` is your sender name
15+
-`FROM` is your sender name, should be alpha-numeral, max 20 symbols and activated in your TurboSms account
1616

1717
Resources
1818
---------

‎src/Symfony/Component/Notifier/Bridge/TurboSms/Tests/TurboSmsTransportTest.php‎

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313

1414
useSymfony\Component\HttpClient\MockHttpClient;
1515
useSymfony\Component\Notifier\Bridge\TurboSms\TurboSmsTransport;
16+
useSymfony\Component\Notifier\Exception\LengthException;
1617
useSymfony\Component\Notifier\Exception\TransportException;
1718
useSymfony\Component\Notifier\Message\ChatMessage;
1819
useSymfony\Component\Notifier\Message\MessageInterface;
20+
useSymfony\Component\Notifier\Message\SentMessage;
1921
useSymfony\Component\Notifier\Message\SmsMessage;
2022
useSymfony\Component\Notifier\Test\TransportTestCase;
2123
useSymfony\Component\Notifier\Transport\TransportInterface;
@@ -47,4 +49,107 @@ public function unsupportedMessagesProvider(): iterable
4749
yield [newChatMessage('Hello!')];
4850
yield [$this->createMock(MessageInterface::class)];
4951
}
52+
53+
publicfunctiontestSuccessfulSend()
54+
{
55+
$response =$this->createMock(ResponseInterface::class);
56+
$response
57+
->expects(self::exactly(2))
58+
->method('getStatusCode')
59+
->willReturn(200)
60+
;
61+
$response
62+
->expects(self::once())
63+
->method('getContent')
64+
->willReturn(json_encode([
65+
'response_code' =>0,
66+
'response_status' =>'OK',
67+
'response_result' => [
68+
[
69+
'phone' =>'380931234567',
70+
'response_code' =>0,
71+
'message_id' =>'f83f8868-5e46-c6cf-e4fb-615e5a293754',
72+
'response_status' =>'OK',
73+
],
74+
],
75+
]))
76+
;
77+
78+
$client =newMockHttpClient(staticfunction ()use ($response):ResponseInterface {
79+
return$response;
80+
});
81+
82+
$message =newSmsMessage('380931234567','Тест/Test');
83+
84+
$transport =$this->createTransport($client);
85+
$sentMessage =$transport->send($message);
86+
87+
self::assertInstanceOf(SentMessage::class,$sentMessage);
88+
self::assertSame('f83f8868-5e46-c6cf-e4fb-615e5a293754',$sentMessage->getMessageId());
89+
}
90+
91+
publicfunctiontestFailedSend()
92+
{
93+
$response =$this->createMock(ResponseInterface::class);
94+
$response
95+
->expects(self::exactly(2))
96+
->method('getStatusCode')
97+
->willReturn(400)
98+
;
99+
$response
100+
->expects(self::once())
101+
->method('getContent')
102+
->willReturn(json_encode([
103+
'response_code' =>103,
104+
'response_status' =>'REQUIRED_TOKEN',
105+
'response_result' =>null,
106+
]))
107+
;
108+
109+
$client =newMockHttpClient(staticfunction ()use ($response):ResponseInterface {
110+
return$response;
111+
});
112+
113+
$message =newSmsMessage('380931234567','Тест/Test');
114+
115+
$transport =$this->createTransport($client);
116+
117+
$this->expectException(TransportException::class);
118+
$this->expectExceptionMessage('Unable to send SMS with TurboSMS: Error code 103 with message "REQUIRED_TOKEN".');
119+
120+
$transport->send($message);
121+
}
122+
123+
publicfunctiontestInvalidFrom()
124+
{
125+
$message =newSmsMessage('380931234567','Hello!');
126+
$transport =newTurboSmsTransport('authToken','abcdefghijklmnopqrstu',$this->createMock(HttpClientInterface::class));
127+
128+
$this->expectException(LengthException::class);
129+
$this->expectExceptionMessage('The sender length of a TurboSMS message must not exceed 20 characters.');
130+
131+
$transport->send($message);
132+
}
133+
134+
publicfunctiontestInvalidSubjectWithLatinSymbols()
135+
{
136+
$message =newSmsMessage('380931234567',str_repeat('z',1522));
137+
$transport =newTurboSmsTransport('authToken','sender',$this->createMock(HttpClientInterface::class));
138+
139+
$this->expectException(LengthException::class);
140+
$this->expectExceptionMessage('The subject length for "latin" symbols of a TurboSMS message must not exceed 1521 characters.');
141+
142+
$transport->send($message);
143+
}
144+
145+
publicfunctiontestInvalidSubjectWithCyrillicSymbols()
146+
{
147+
$message =newSmsMessage('380931234567',str_repeat('z',661).'Й');
148+
$transport =newTurboSmsTransport('authToken','sender',$this->createMock(HttpClientInterface::class));
149+
150+
$this->expectException(LengthException::class);
151+
$this->expectExceptionMessage('The subject length for "cyrillic" symbols of a TurboSMS message must not exceed 661 characters.');
152+
153+
$transport->send($message);
154+
}
50155
}

‎src/Symfony/Component/Notifier/Bridge/TurboSms/TurboSmsTransport.php‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ protected function doSend(MessageInterface $message): SentMessage
7272
'sender' =>$this->from,
7373
'recipients' => [$message->getPhone()],
7474
'text' =>$message->getSubject(),
75-
]
75+
],
7676
],
7777
]);
7878

@@ -87,7 +87,7 @@ protected function doSend(MessageInterface $message): SentMessage
8787

8888
$error =$response->toArray(false);
8989

90-
thrownewTransportException(sprintf('Unable to send SMS with TurboSMS: Error code %s with message "%s".', (string)$error['response_code'],$error['response_status']),$response);
90+
thrownewTransportException(sprintf('Unable to send SMS with TurboSMS: Error code %d with message "%s".', (int)$error['response_code'],$error['response_status']),$response);
9191
}
9292

9393
privatefunctionassertValidFrom():void
@@ -100,16 +100,16 @@ private function assertValidFrom(): void
100100
privatefunctionassertValidSubject(string$subject):void
101101
{
102102
// Detect if there is at least one cyrillic symbol in the text
103-
if (false ===preg_match("/\p{Cyrillic}/u",$subject)) {
104-
$subjectLimit =self::SUBJECT_LATIN_LIMIT;
105-
$symbols ='latin';
106-
}else {
103+
if (1 ===preg_match("/\p{Cyrillic}/u",$subject)) {
107104
$subjectLimit =self::SUBJECT_CYRILLIC_LIMIT;
108105
$symbols ='cyrillic';
106+
}else {
107+
$subjectLimit =self::SUBJECT_LATIN_LIMIT;
108+
$symbols ='latin';
109109
}
110110

111111
if (mb_strlen($subject,'UTF-8') >$subjectLimit) {
112-
thrownewLengthException(sprintf('The subject length for% symbols of a TurboSMS message must not exceed %d characters.',$symbols,$subjectLimit));
112+
thrownewLengthException(sprintf('The subject length for"%s" symbols of a TurboSMS message must not exceed %d characters.',$symbols,$subjectLimit));
113113
}
114114
}
115115
}

‎src/Symfony/Component/Notifier/Bridge/TurboSms/TurboSmsTransportFactory.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public function create(Dsn $dsn): TransportInterface
3232
thrownewUnsupportedSchemeException($dsn,'turbosms',$this->getSupportedSchemes());
3333
}
3434

35-
$authToken =$this->getPassword($dsn);
35+
$authToken =$this->getUser($dsn);
3636
$from =$dsn->getRequiredOption('from');
3737
$host ='default' ===$dsn->getHost() ?null :$dsn->getHost();
3838
$port =$dsn->getPort();

‎src/Symfony/Component/Notifier/Bridge/TurboSms/composer.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
"require": {
1919
"php":">=7.2.5",
2020
"ext-json":"*",
21-
"symfony/http-client":"^5.4|^6.0",
22-
"symfony/notifier":"^5.4|^6.0",
21+
"symfony/http-client":"^5.3|^6.0",
22+
"symfony/notifier":"^5.3|^6.0",
2323
"symfony/polyfill-mbstring":"^1.0"
2424
},
2525
"autoload": {

‎src/Symfony/Component/Notifier/Exception/UnsupportedSchemeException.php‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,10 @@ class UnsupportedSchemeException extends LogicException
144144
'class' =>Bridge\Telegram\TelegramTransportFactory::class,
145145
'package' =>'symfony/telegram-notifier',
146146
],
147+
'turbosms' => [
148+
'class' =>Bridge\TurboSms\TurboSmsTransportFactory::class,
149+
'package' =>'symfony/turbo-sms-notifier',
150+
],
147151
'twilio' => [
148152
'class' =>Bridge\Twilio\TwilioTransportFactory::class,
149153
'package' =>'symfony/twilio-notifier',

‎src/Symfony/Component/Notifier/Tests/Exception/UnsupportedSchemeExceptionTest.php‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
useSymfony\Component\Notifier\Bridge\SmsBiuras\SmsBiurasTransportFactory;
4545
useSymfony\Component\Notifier\Bridge\SpotHit\SpotHitTransportFactory;
4646
useSymfony\Component\Notifier\Bridge\Telegram\TelegramTransportFactory;
47+
useSymfony\Component\Notifier\Bridge\TurboSms\TurboSmsTransportFactory;
4748
useSymfony\Component\Notifier\Bridge\Twilio\TwilioTransportFactory;
4849
useSymfony\Component\Notifier\Bridge\Zulip\ZulipTransportFactory;
4950
useSymfony\Component\Notifier\Exception\UnsupportedSchemeException;
@@ -89,6 +90,7 @@ public static function setUpBeforeClass(): void
8990
SmsBiurasTransportFactory::class =>false,
9091
SpotHitTransportFactory::class =>false,
9192
TelegramTransportFactory::class =>false,
93+
TurboSmsTransportFactory::class =>false,
9294
TwilioTransportFactory::class =>false,
9395
ZulipTransportFactory::class =>false,
9496
]);
@@ -140,6 +142,7 @@ public function messageWhereSchemeIsPartOfSchemeToPackageMapProvider(): \Generat
140142
yield ['smsbiuras','symfony/sms-biuras-notifier'];
141143
yield ['spothit','symfony/spot-hit-notifier'];
142144
yield ['telegram','symfony/telegram-notifier'];
145+
yield ['turbosms','symfony/turbo-sms-notifier'];
143146
yield ['twilio','symfony/twilio-notifier'];
144147
yield ['zulip','symfony/zulip-notifier'];
145148
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp