作者 lackoxygen

add temp

... ... @@ -7,6 +7,8 @@ use Lackoxygen\TiktokOpen\Base\Event\Fail;
use Lackoxygen\TiktokOpen\Base\Event\Request;
use Lackoxygen\TiktokOpen\Base\Event\Response;
use Lackoxygen\TiktokOpen\Base\ServiceManager;
use Lackoxygen\TiktokOpen\Base\Signer\NoneSigner;
use Lackoxygen\TiktokOpen\Base\Signer\SignerInterface;
use Lackoxygen\TiktokOpen\Base\Traits\BaseClient;
use Lackoxygen\TiktokOpen\Wap\Listener;
use GuzzleHttp\RequestOptions;
... ... @@ -20,17 +22,21 @@ class Client extends ServiceManager
private bool $withSession;
private SignerInterface $signer;
public function __construct(
Application $app, $requestOption = '', $withSession = false
)
{
parent::__construct($app);
$this->listen();
$this->requestOption = $requestOption;
$this->withSession = $withSession;
$this->signer = new NoneSigner();
$this->listen();
}
protected function listen()
... ... @@ -68,6 +74,15 @@ class Client extends ServiceManager
);
}
public function asQuery(): Client
{
return new Client(
$this->app,
RequestOptions::QUERY,
$this->withSession
);
}
public function withSession(): Client
{
return new Client(
... ... @@ -77,6 +92,13 @@ class Client extends ServiceManager
);
}
public function signVia(SignerInterface $signer): Client
{
$this->signer = $signer;
return $this;
}
public function refresh()
{
$this->requestOption = '';
... ...
... ... @@ -3,6 +3,7 @@
namespace Lackoxygen\TiktokOpen\Base\Client;
use GuzzleHttp\RequestOptions;
use Lackoxygen\TiktokOpen\Base\Signer\SignerInterface;
class Request
{
... ... @@ -18,12 +19,15 @@ class Request
protected bool $withSession;
protected SignerInterface $signer;
public function __construct(
string $method,
string $format,
string $path,
array $data,
bool $withSession
string $method,
string $format,
string $path,
array $data,
bool $withSession,
SignerInterface $signer
)
{
$this->setMethod($method);
... ... @@ -32,6 +36,7 @@ class Request
$this->path = $path;
$this->data = $data;
$this->withSession = $withSession;
$this->signer = $signer;
}
/**
... ... @@ -75,6 +80,11 @@ class Request
$this->headers = $headers;
}
public function setHeader(string $key, string $value)
{
$this->headers[$key] = $value;
}
/**
* @return string
*/
... ... @@ -115,6 +125,14 @@ class Request
return $this->withSession;
}
/**
* @return SignerInterface
*/
public function getSigner(): SignerInterface
{
return $this->signer;
}
protected function defaultFormat(): string
{
if ('GET' === $this->method) {
... ...
<?php
namespace Lackoxygen\TiktokOpen\Base\Signer;
use Lackoxygen\TiktokOpen\Base\Client\Request;
use Lackoxygen\TiktokOpen\Base\Config;
class LifeSigner implements SignerInterface
{
public function carry(Config $config, Request $request)
{
$payload = $request->getData();
ksort($payload);
$config->getAppSecret() . '&client_key=' .
$config->getAppKey() . '&timestamp=' . strval(time())
. '&http_body=' . \json_encode($payload);
$request->setHeader(
'x-life-clientkey',
$config->getAppKey(),
);
}
}
... ...
<?php
namespace Lackoxygen\TiktokOpen\Base\Signer;
use Lackoxygen\TiktokOpen\Base\Config;
use Lackoxygen\TiktokOpen\Base\Client\Request;
class NoneSigner implements SignerInterface
{
public function carry(Config $config, Request $request)
{
}
}
... ...
<?php
namespace Lackoxygen\TiktokOpen\Base\Signer;
use Lackoxygen\TiktokOpen\Base\Config;
use Lackoxygen\TiktokOpen\Base\Client\Request;
interface SignerInterface
{
public function carry(Config $config, Request $request);
}
... ...
... ... @@ -38,7 +38,8 @@ trait BaseClient
$this->requestOption,
$path,
$data,
$this->withSession
$this->withSession,
$this->signer
);
RequestEvent::dispatch($this->app, $request);
... ...
<?php
namespace Lackoxygen\TiktokOpen\Wap\Life;
use Lackoxygen\TiktokOpen\Base\ServiceManager;
use Lackoxygen\TiktokOpen\Base\Signer\LifeSigner;
class Coupon extends ServiceManager
{
public function prepare(string $encryptedData = '', string $code = '')
{
return $this->app['client']
->asQuery()
->withSession()
//->signVia(new LifeSigner())
->get('/goodlife/v1/fulfilment/certificate/prepare/', ['encrypted_data' => $encryptedData, 'code' => $code]);
}
public function verify(array $params)
{
return $this->app['client']
->asJson()
->withSession()
->signVia(new LifeSigner())
->post('goodlife/v1/fulfilment/certificate/verify/', $params);
}
}
... ...
... ... @@ -5,20 +5,32 @@ namespace Lackoxygen\TiktokOpen\Wap;
use Lackoxygen\TiktokOpen\Base\Event\Request;
use Lackoxygen\TiktokOpen\Base\Event\Response;
use Lackoxygen\TiktokOpen\Base\Event\Fail;
use Lackoxygen\TiktokOpen\Base\Signer\NoneSigner;
class Listener
{
public function request(Request $event)
{
if ($event->request->isWithSession()) {
$accessToken = $event->application['wap.session']->accessToken;
$event->request->setData(
array_merge(
$event->request->getData(),
[
'access_token' => $event->application['wap.session']->accessToken
'access_token' => $accessToken
]
)
);
$event->request->setHeader('access-token', $accessToken);
}
$signer = $event->request->getSigner();
if (!$signer instanceof NoneSigner) {
$signer->carry(
$event->application['config'],
$event->request
);
}
}
... ...
... ... @@ -4,7 +4,7 @@ namespace Lackoxygen\TiktokOpen\Wap;
use Lackoxygen\TiktokOpen\Base\AbstractProvider;
use Lackoxygen\TiktokOpen\Base\Client\Client;
use Lackoxygen\TiktokOpen\Wap\{Data\Data, Js\Js, OAuth\OAuth, User\User, Video\Video};
use Lackoxygen\TiktokOpen\Wap\{Data\Data, Js\Js, Life\Coupon, OAuth\OAuth, User\User, Video\Video};
/**
* @method OAuth oauth()
... ... @@ -24,7 +24,8 @@ class WapProvider extends AbstractProvider
'user' => User::class,
'video' => Video::class,
'data' => Data::class,
'session' => Session::class
'session' => Session::class,
'lifeCoupon' => Coupon::class
];
public function __construct(string $alias)
... ...