33namespace RahulGodiyal \PhpUpsApiWrapper ;
44
55use RahulGodiyal \PhpUpsApiWrapper \Auth ;
6+ use RahulGodiyal \PhpUpsApiWrapper \Entity \TrackingQuery ;
67use RahulGodiyal \PhpUpsApiWrapper \Utils \HttpClient ;
78
89class Tracking extends Auth
910{
10- private const QUERY = [
11- "locale " => "en_US " ,
12- "returnSignature " => "false " ,
13- "returnMilestones " => "false " ,
14- "returnPOD " => "false "
15- ];
16- private static ?string $ trackingNumber ;
17-
18- public static function setTrackingNumber (string $ trackingNumber ): self
11+ private TrackingQuery $ query ;
12+ private ?string $ trackingNumber ;
13+
14+ public function __construct ()
15+ {
16+ $ this ->query = new TrackingQuery ();
17+ }
18+
19+ public function setQuery (TrackingQuery $ query ): self
20+ {
21+ $ this ->query = $ query ;
22+ return $ this ;
23+ }
24+
25+ public function setTrackingNumber (string $ trackingNumber ): self
1926 {
20- self :: $ trackingNumber = $ trackingNumber ;
21- return new self ;
27+ $ this -> trackingNumber = $ trackingNumber ;
28+ return $ this ;
2229 }
2330
2431 public function fetch (string $ client_id , string $ client_secret ): array
@@ -31,13 +38,18 @@ public function fetch(string $client_id, string $client_secret): array
3138
3239 $ access_token = $ auth ['access_token ' ];
3340
41+ $ queryParams = "" ;
42+ if ($ this ->query ->exists ()) {
43+ $ queryParams = "? " . http_build_query ($ this ->query ->toArray ());
44+ }
45+
3446 $ httpClient = new HttpClient ();
3547 $ httpClient ->setHeader ([
3648 "Authorization: Bearer $ access_token " ,
3749 "transId: string " ,
3850 "transactionSrc: testing "
3951 ]);
40- $ httpClient ->setUrl ($ this ->_getAPIBaseURL () . "/api/track/v1/details/ " . self :: $ trackingNumber . " ? " . http_build_query ( self :: QUERY ) );
52+ $ httpClient ->setUrl ($ this ->_getAPIBaseURL () . "/api/track/v1/details/ " . $ this -> trackingNumber . $ queryParams );
4153 $ httpClient ->setMethod ("GET " );
4254 $ res = $ httpClient ->fetch ();
4355
@@ -64,7 +76,7 @@ public function fetch(string $client_id, string $client_secret): array
6476 $ trackingDetails = $ res ->trackResponse ->shipment ;
6577 return ['status ' => 'success ' , 'data ' => $ trackingDetails ];
6678 }
67-
79+
6880 public function setMode (string $ mode ): self
6981 {
7082 parent ::setMode ($ mode );
0 commit comments