Support for yahoo.com

This commit is contained in:
bkrukowski 2016-09-10 13:33:57 +02:00
parent 7bfd541973
commit 1aa23920fd
5 changed files with 82 additions and 0 deletions

View File

@ -12,6 +12,7 @@ Gordianus clears aliases from email address. Email `John.Doe+alias@gmail.com` wi
* [tlen.pl](http://tlen.pl) * [tlen.pl](http://tlen.pl)
* [33mail.com](https://www.33mail.com) * [33mail.com](https://www.33mail.com)
* [outlook.com](http://outlook.com) * [outlook.com](http://outlook.com)
* [yahoo.com](http://mail.yahoo.com)
## Usage ## Usage

View File

@ -7,6 +7,7 @@ use bkrukowski\Gordianus\Services\OutlookCom;
use bkrukowski\Gordianus\Services\ServiceInterface; use bkrukowski\Gordianus\Services\ServiceInterface;
use bkrukowski\Gordianus\Services\TlenPl; use bkrukowski\Gordianus\Services\TlenPl;
use bkrukowski\Gordianus\Services\Www33MailCom; use bkrukowski\Gordianus\Services\Www33MailCom;
use bkrukowski\Gordianus\Services\YahooCom;
class Gordianus class Gordianus
{ {
@ -14,6 +15,7 @@ class Gordianus
const SERVICE_TLEN_PL = TlenPl::class; const SERVICE_TLEN_PL = TlenPl::class;
const SERVICE_WWW_33MAIL_COM = Www33MailCom::class; const SERVICE_WWW_33MAIL_COM = Www33MailCom::class;
const SERVICE_OUTLOOK_COM = OutlookCom::class; const SERVICE_OUTLOOK_COM = OutlookCom::class;
const SERVICE_YAHOO_COM = YahooCom::class;
/** /**
* Constant ALL_SERVICES can contain different values depends on API version * Constant ALL_SERVICES can contain different values depends on API version
@ -23,6 +25,7 @@ class Gordianus
self::SERVICE_TLEN_PL, self::SERVICE_TLEN_PL,
self::SERVICE_WWW_33MAIL_COM, self::SERVICE_WWW_33MAIL_COM,
self::SERVICE_OUTLOOK_COM, self::SERVICE_OUTLOOK_COM,
self::SERVICE_YAHOO_COM,
]; ];
private $services; private $services;

22
src/Services/YahooCom.php Normal file
View File

@ -0,0 +1,22 @@
<?php
namespace bkrukowski\Gordianus\Services;
/**
* @internal
*/
class YahooCom implements ServiceInterface
{
public function getPrimaryEmail(string $email) : string
{
list($name, $domain) = explode('@', strtolower($email));
$explodedName = explode('-', $name, 2);
return $explodedName[0] . (count($explodedName) === 2 ? '-alias' : '') . '@' . $domain;
}
public function isDomainSupported(string $domain) : bool
{
return strtolower($domain) === 'yahoo.com';
}
}

View File

@ -50,6 +50,7 @@ class GordianusTest extends \PHPUnit_Framework_TestCase
[new Gordianus([], true), 'John.Doe@example.com', 'John.Doe@example.com'], [new Gordianus([], true), 'John.Doe@example.com', 'John.Doe@example.com'],
[new Gordianus(Gordianus::ALL_SERVICES, true), 'John.Doe@gmail.com', 'johndoe@gmail.com'], [new Gordianus(Gordianus::ALL_SERVICES, true), 'John.Doe@gmail.com', 'johndoe@gmail.com'],
[new Gordianus(), 'Jane.Doe+receipts@hotmail.com', 'jane.doe@hotmail.com'], [new Gordianus(), 'Jane.Doe+receipts@hotmail.com', 'jane.doe@hotmail.com'],
[new Gordianus(), 'Jane.Doe-receipts@yahoo.com', 'jane.doe-alias@yahoo.com'],
]; ];
} }
} }

View File

@ -0,0 +1,55 @@
<?php
namespace bkrukowski\Gordianus\Tests\Services;
use bkrukowski\Gordianus\Services\YahooCom;
class YahooComTest extends \PHPUnit_Framework_TestCase
{
/**
* @dataProvider providerIsDomainSupported
*
* @param string $domain
* @param bool $result
*/
public function testIsDomainSupported(string $domain, bool $result)
{
$this->assertSame($result, (new YahooCom())->isDomainSupported($domain));
}
public function providerIsDomainSupported()
{
return [
['yahoo.com', true],
['Yahoo.Com', true],
['YAHOO.COM', true],
['hotmail.com', false],
['HotMail.COM', false],
['gmail.com', false],
['tlen.pl', false],
];
}
/**
* @dataProvider providerGetPrimaryEmail
*
* @param string $inputEmail
* @param string $expectedEmail
*/
public function testGetPrimaryEmail(string $inputEmail, string $expectedEmail)
{
$this->assertSame($expectedEmail, (new YahooCom())->getPrimaryEmail($inputEmail));
}
public function providerGetPrimaryEmail()
{
return [
['janedoe@yahoo.com', 'janedoe@yahoo.com'],
['jane.doe@yahoo.com', 'jane.doe@yahoo.com'],
['Jane.Doe@Yahoo.Com', 'jane.doe@yahoo.com'],
['Jane.Doe+receipts@YAHOO.COM', 'jane.doe+receipts@yahoo.com'],
['Jane.Doe-receipts@YAHOO.COM', 'jane.doe-alias@yahoo.com'],
['Jane.Doe-spam-alias@YAHOO.COM', 'jane.doe-alias@yahoo.com'],
];
}
}