Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 26 |
MailStateController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 26 |
getState | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 26 |
1 | <?php |
2 | |
3 | namespace Qmp\Laravel\ApiGateway\Controllers\Mails; |
4 | |
5 | use App\Http\Controllers\Controller; |
6 | use Illuminate\Http\Response; |
7 | use Illuminate\Support\Facades\Log; |
8 | use Illuminate\Support\Facades\Redis; |
9 | use Qmp\Laravel\Acls\Facades\RoleGroup; |
10 | use Qmp\Laravel\Acls\Facades\Role; |
11 | use Illuminate\Http\Request; |
12 | use Qmp\Laravel\ApiGateway\Controllers\AbstractApiController; |
13 | use Qmp\Laravel\ApiGateway\Controllers\TraitProxyApiController; |
14 | |
15 | class MailStateController extends AbstractApiController |
16 | { |
17 | protected $serviceName = 'service_mail'; |
18 | |
19 | protected $resourceName = 'state'; |
20 | |
21 | |
22 | |
23 | public function getState(Request $request) |
24 | { |
25 | $result = [ |
26 | 'redis_state' => true, |
27 | 'mail_service_state' => true, |
28 | 'queued' => [] |
29 | ]; |
30 | |
31 | |
32 | try { |
33 | $response = $this->getResponseFromService( |
34 | $this->serviceName, |
35 | $this->resourceName |
36 | ); |
37 | |
38 | if ($response->code !== 200) { |
39 | Log::debug('queued mails error !' . var_export($response, true)); |
40 | throw new \Exception('error on http mail service !'); |
41 | } |
42 | |
43 | $result['queued'] = $response->content; |
44 | } catch (\Exception $e) { |
45 | $result['mail_service_state'] = false; |
46 | |
47 | try { |
48 | $queuedMails = Redis::connection('queue')->lrange('queues:emails', 0, -1); |
49 | |
50 | if (!is_array($queuedMails)) { |
51 | throw new \Exception('Error On redis'); |
52 | } |
53 | |
54 | $result['queued'] = array_map(function($item) { |
55 | $item = json_decode($item, true); |
56 | $item['data']['command'] = unserialize($item['data']['command']); |
57 | |
58 | return [ |
59 | 'id' => $item['id'], |
60 | 'attempts' => $item['attempts'], |
61 | 'mail_type' => str_replace('Qmp\\Laravel\\Mail\\Mail\\', '', get_class($item['data']['command']->mailSender->get('content'))), |
62 | 'recipients' => $item['data']['command']->mailSender->get('to') |
63 | |
64 | ]; |
65 | }, $queuedMails); |
66 | |
67 | |
68 | } catch (\Exception $e2) { |
69 | $result['redis_state'] = false; |
70 | Log::debug('queued mails failed' . var_export($queuedMails, true)); |
71 | } |
72 | Log::debug('queued mails failed' . var_export($queuedMails, true)); |
73 | } |
74 | |
75 | |
76 | |
77 | return response()->json($result); |
78 | } |
79 | |
80 | } |