Skip to content
This repository was archived by the owner on Apr 27, 2021. It is now read-only.

Commit 35c6ed2

Browse files
lyrixxqboot
authored andcommitted
The agent does not redirections anymore. The proxy is now in charge of it
1 parent fe4615c commit 35c6ed2

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

src/Client.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,16 @@ public function findRedirect(Request $request)
7777
return null;
7878
}
7979

80-
return 410 == $json['status_code']
81-
? new Response(410)
82-
: new RedirectResponse($json['location'], (int) $json['status_code']);
80+
$ruleId = null;
81+
if (isset($json['matched_rule'], $json['matched_rule']['id'])) {
82+
$ruleId = $json['matched_rule']['id'];
83+
}
84+
85+
if (410 === $json['status_code']) {
86+
return new Response(410, $ruleId);
87+
}
88+
89+
return new RedirectResponse($json['location'], (int) $json['status_code'], $ruleId);
8390
}
8491

8592
public function log(Request $request, Response $response)
@@ -94,6 +101,14 @@ public function log(Request $request, Response $response)
94101
'use_json' => true,
95102
];
96103

104+
if ($response instanceof RedirectResponse) {
105+
$responseContext['target'] = $response->getLocation();
106+
}
107+
108+
if ($response->getRuleId()) {
109+
$responseContext['rule_id'] = $response->getRuleId();
110+
}
111+
97112
try {
98113
return (bool) $this->request('LOG', $responseContext);
99114
} catch (ExceptionInterface $exception) {

src/HttpMessage/RedirectResponse.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@ class RedirectResponse extends Response
99
/**
1010
* @param string $location
1111
* @param int $statusCode
12+
* @param string $ruleId
1213
*/
13-
public function __construct($location, $statusCode = 301)
14+
public function __construct($location, $statusCode = 301, $ruleId = null)
1415
{
1516
$this->location = $location;
1617

17-
parent::__construct($statusCode);
18+
parent::__construct($statusCode, $ruleId);
1819
}
1920

2021
public function getLocation()

src/HttpMessage/Response.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,25 @@
55
class Response
66
{
77
private $statusCode;
8+
private $ruleId;
89

910
/**
10-
* @param int $statusCode
11+
* @param int $statusCode
12+
* @param string $ruleId
1113
*/
12-
public function __construct($statusCode = 200)
14+
public function __construct($statusCode = 200, $ruleId = null)
1315
{
1416
$this->statusCode = $statusCode;
17+
$this->ruleId = $ruleId;
1518
}
1619

1720
public function getStatusCode()
1821
{
1922
return $this->statusCode;
2023
}
24+
25+
public function getRuleId()
26+
{
27+
return $this->ruleId;
28+
}
2129
}

0 commit comments

Comments
 (0)