Completed
Push — master ( 1ecee2...1e59ec )
by Dieter
07:27
created

Client::ticketDisplayTST()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
/**
3
 * amadeus-ws-client
4
 *
5
 * Copyright 2015 Amadeus Benelux NV
6
 *
7
 * Licensed under the Apache License, Version 2.0 (the "License");
8
 * you may not use this file except in compliance with the License.
9
 * You may obtain a copy of the License at
10
 *
11
 * http://www.apache.org/licenses/LICENSE-2.0
12
 *
13
 * Unless required by applicable law or agreed to in writing, software
14
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 * See the License for the specific language governing permissions and
17
 * limitations under the License.
18
 *
19
 * @package Amadeus
20
 * @license https://opensource.org/licenses/Apache-2.0 Apache 2.0
21
 */
22
23
namespace Amadeus;
24
25
use Amadeus\Client\Exception;
26
use Amadeus\Client\Params;
27
use Amadeus\Client\RequestCreator\RequestCreatorInterface;
28
use Amadeus\Client\RequestOptions;
29
use Amadeus\Client\ResponseHandler\ResponseHandlerInterface;
30
use Amadeus\Client\Result;
31
use Amadeus\Client\Session\Handler\HandlerFactory;
32
use Amadeus\Client\RequestCreator\Factory as RequestCreatorFactory;
33
use Amadeus\Client\Session\Handler\HandlerInterface;
34
use Amadeus\Client\ResponseHandler\Base as ResponseHandlerBase;
35
36
/**
37
 * Amadeus Web Service Client.
38
 *
39
 * TODO:
40
 * - support older versions of SoapHeader (1)
41
 *
42
 * @package Amadeus
43
 * @author Dieter Devlieghere <[email protected]>
44
 */
45
class Client
46
{
47
    /**
48
     * Amadeus SOAP header version 1
49
     */
50
    const HEADER_V1 = "1";
51
    /**
52
     * Amadeus SOAP header version 2
53
     */
54
    const HEADER_V2 = "2";
55
    /**
56
     * Amadeus SOAP header version 4
57
     */
58
    const HEADER_V4 = "4";
59
60
    /**
61
     * Version string
62
     *
63
     * @var string
64
     */
65
    const VERSION = "1.1.0-dev";
66
67
    /**
68
     * An identifier string for the library (to be used in Received From entries)
69
     *
70
     * @var string
71
     */
72
    const RECEIVED_FROM_IDENTIFIER = "amabnl-amadeus-ws-client";
73
74
    /**
75
     * Session Handler will be sending all the messages and handling all session-related things.
76
     *
77
     * @var HandlerInterface
78
     */
79
    protected $sessionHandler;
80
81
    /**
82
     * Request Creator is will create the correct message structure to send to the SOAP server.
83
     *
84
     * @var RequestCreatorInterface
85
     */
86
    protected $requestCreator;
87
88
    /**
89
     * Response Handler will check the received response for errors.
90
     *
91
     * @var ResponseHandlerInterface
92
     */
93
    protected $responseHandler;
94
95
    /**
96
     * Authentication parameters
97
     *
98
     * @var Params\AuthParams
99
     */
100
    protected $authParams;
101
102
    /**
103
     * @var string
104
     */
105
    protected $lastMessage;
106
107
    /**
108
     * Set the session as stateful (true) or stateless (false)
109
     *
110
     * @param bool $newStateful
111
     */
112
    public function setStateful($newStateful)
113
    {
114
        $this->sessionHandler->setStateful($newStateful);
115
    }
116
117
    /**
118
     * @return bool
119
     */
120
    public function isStateful()
121
    {
122
        return $this->sessionHandler->isStateful();
123
    }
124
125
    /**
126
     * Get the last raw XML message that was sent out
127
     *
128
     * @return string|null
129
     */
130
    public function getLastRequest()
131
    {
132
        return $this->sessionHandler->getLastRequest($this->lastMessage);
133
    }
134
135
    /**
136
     * Get the last raw XML message that was received
137
     *
138
     * @return string|null
139
     */
140
    public function getLastResponse()
141
    {
142
        return $this->sessionHandler->getLastResponse($this->lastMessage);
143
    }
144
145
    /**
146
     * Get session information for authenticated session
147
     *
148
     * - sessionId
149
     * - sequenceNr
150
     * - securityToken
151
     *
152
     * @return array|null
153
     */
154
    public function getSessionData()
155
    {
156
        return $this->sessionHandler->getSessionData();
157
    }
158
159
    /**
160
     * Restore a previously used session
161
     *
162
     * To be used when implementing your own session pooling system on legacy Soap Header 2 applications.
163
     *
164
     * @param array $sessionData
165
     * @return bool
166
     */
167
    public function setSessionData(array $sessionData)
168
    {
169
        return $this->sessionHandler->setSessionData($sessionData);
170
    }
171
172
    /**
173
     * Construct Amadeus Web Services client
174
     *
175
     * @param Params $params
176
     */
177
    public function __construct($params)
178
    {
179
        if ($params->authParams instanceof Params\AuthParams) {
180
            $this->authParams = $params->authParams;
181
            if (isset($params->sessionHandlerParams) &&
182
                $params->sessionHandlerParams instanceof Params\SessionHandlerParams
183
            ) {
184
                $params->sessionHandlerParams->authParams = $this->authParams;
185
            }
186
        }
187
188
        $this->sessionHandler = $this->loadSessionHandler(
189
            $params->sessionHandler,
190
            $params->sessionHandlerParams
0 ignored issues
show
Bug introduced by
It seems like $params->sessionHandlerParams can be null; however, loadSessionHandler() does not accept null, maybe add an additional type check?

Unless you are absolutely sure that the expression can never be null because of other conditions, we strongly recommend to add an additional type check to your code:

/** @return stdClass|null */
function mayReturnNull() { }

function doesNotAcceptNull(stdClass $x) { }

// With potential error.
function withoutCheck() {
    $x = mayReturnNull();
    doesNotAcceptNull($x); // Potential error here.
}

// Safe - Alternative 1
function withCheck1() {
    $x = mayReturnNull();
    if ( ! $x instanceof stdClass) {
        throw new \LogicException('$x must be defined.');
    }
    doesNotAcceptNull($x);
}

// Safe - Alternative 2
function withCheck2() {
    $x = mayReturnNull();
    if ($x instanceof stdClass) {
        doesNotAcceptNull($x);
    }
}
Loading history...
191
        );
192
193
        $this->requestCreator = $this->loadRequestCreator(
194
            $params->requestCreator,
195
            $params->requestCreatorParams,
196
            self::RECEIVED_FROM_IDENTIFIER . "-" .self::VERSION,
197
            $this->sessionHandler->getOriginatorOffice(),
198
            $this->sessionHandler->getMessagesAndVersions()
199
        );
200
201
        $this->responseHandler = $this->loadResponseHandler(
202
            $params->responseHandler
203
        );
204
    }
205
206
    /**
207
     * Authenticate.
208
     *
209
     * Parameters were provided at construction time (sessionhandlerparams)
210
     *
211
     * @return Result
212
     * @throws Exception
213
     */
214
    public function securityAuthenticate()
215
    {
216
        $msgName = 'Security_Authenticate';
217
218
        return $this->callMessage(
219
            $msgName,
220
            new RequestOptions\SecurityAuthenticateOptions(
221
                $this->authParams
222
            ),
223
            [],
224
            false
225
        );
226
    }
227
228
    /**
229
     * Terminate a session - only applicable to non-stateless mode.
230
     *
231
     * @return Result
232
     * @throws Exception
233
     */
234
    public function securitySignOut()
235
    {
236
        $msgName = 'Security_SignOut';
237
238
        return $this->callMessage(
239
            $msgName,
240
            new RequestOptions\SecuritySignOutOptions(),
241
            [],
242
            true
243
        );
244
    }
245
246
    /**
247
     * PNR_Retrieve - Retrieve an Amadeus PNR by record locator
248
     *
249
     * By default, the result will be the PNR_Reply XML as string.
250
     * That way you can easily parse the PNR's contents with XPath.
251
     *
252
     * https://webservices.amadeus.com/extranet/viewService.do?id=27&flavourId=1&menuId=functional
253
     *
254
     * @param RequestOptions\PnrRetrieveOptions $options
255
     * @param array $messageOptions (OPTIONAL)
256
     * @return Result
257
     * @throws Exception
258
     */
259
    public function pnrRetrieve(RequestOptions\PnrRetrieveOptions $options, $messageOptions = [])
260
    {
261
        $msgName = 'PNR_Retrieve';
262
263
        return $this->callMessage($msgName, $options, $messageOptions);
264
    }
265
266
    /**
267
     * Create a PNR using PNR_AddMultiElements
268
     *
269
     * @param RequestOptions\PnrCreatePnrOptions $options
270
     * @param array $messageOptions (OPTIONAL)
271
     * @return Result
272
     */
273
    public function pnrCreatePnr(RequestOptions\PnrCreatePnrOptions $options, $messageOptions = [])
274
    {
275
        $msgName = 'PNR_AddMultiElements';
276
277
        return $this->callMessage($msgName, $options, $messageOptions);
278
    }
279
280
    /**
281
     * PNR_AddMultiElements - Create a new PNR or update an existing PNR.
282
     *
283
     * https://webservices.amadeus.com/extranet/viewService.do?id=25&flavourId=1&menuId=functional
284
     *
285
     * @param RequestOptions\PnrAddMultiElementsOptions $options
286
     * @param array $messageOptions (OPTIONAL)
287
     * @return Result
288
     */
289
    public function pnrAddMultiElements(RequestOptions\PnrAddMultiElementsOptions $options, $messageOptions = [])
290
    {
291
        $msgName = 'PNR_AddMultiElements';
292
293
        return $this->callMessage($msgName, $options, $messageOptions);
294
    }
295
296
    /**
297
     * PNR_RetrieveAndDisplay - Retrieve an Amadeus PNR by record locator including extra info
298
     *
299
     * This extra info is info you cannot see in the regular PNR, like Offers.
300
     *
301
     * By default, the result will be the PNR_RetrieveAndDisplayReply XML as string.
302
     * That way you can easily parse the PNR's contents with XPath.
303
     *
304
     * Set $messageOptions['asString'] = FALSE to get the response as a PHP object.
305
     *
306
     * https://webservices.amadeus.com/extranet/viewService.do?id=1922&flavourId=1&menuId=functional
307
     *
308
     * @param RequestOptions\PnrRetrieveAndDisplayOptions $options Amadeus Record Locator for PNR
309
     * @param array $messageOptions (OPTIONAL)
310
     * @return Result
311
     * @throws Exception
312
     **/
313
    public function pnrRetrieveAndDisplay(RequestOptions\PnrRetrieveAndDisplayOptions $options, $messageOptions = [])
314
    {
315
        $msgName = 'PNR_RetrieveAndDisplay';
316
317
        return $this->callMessage($msgName, $options, $messageOptions);
318
    }
319
320
    /**
321
     * PNR_Cancel
322
     *
323
     * @param RequestOptions\PnrCancelOptions $options
324
     * @param array $messageOptions (OPTIONAL)
325
     * @return Result
326
     */
327
    public function pnrCancel(RequestOptions\PnrCancelOptions $options, $messageOptions = [])
328
    {
329
        $msgName = 'PNR_Cancel';
330
331
        return $this->callMessage($msgName, $options, $messageOptions);
332
    }
333
334
    /**
335
     * PNR_DisplayHistory
336
     *
337
     * @param RequestOptions\PnrDisplayHistoryOptions $options
338
     * @param array $messageOptions (OPTIONAL)
339
     * @return Result
340
     */
341
    public function pnrDisplayHistory(RequestOptions\PnrDisplayHistoryOptions $options, $messageOptions = [])
342
    {
343
        $msgName = 'PNR_DisplayHistory';
344
345
        return $this->callMessage($msgName, $options, $messageOptions);
346
    }
347
348
    /**
349
     * Queue_List - get a list of all PNR's on a given queue
350
     *
351
     * https://webservices.amadeus.com/extranet/viewService.do?id=52&flavourId=1&menuId=functional
352
     *
353
     * @param RequestOptions\QueueListOptions $options
354
     * @param array $messageOptions (OPTIONAL)
355
     * @return Result
356
     */
357
    public function queueList(RequestOptions\QueueListOptions $options, $messageOptions = [])
358
    {
359
        $msgName = 'Queue_List';
360
361
        return $this->callMessage($msgName, $options, $messageOptions);
362
    }
363
364
    /**
365
     * Queue_PlacePNR - Place a PNR on a given queue
366
     *
367
     * @param RequestOptions\QueuePlacePnrOptions $options
368
     * @param array $messageOptions (OPTIONAL)
369
     * @return Result
370
     */
371
    public function queuePlacePnr(RequestOptions\QueuePlacePnrOptions $options, $messageOptions = [])
372
    {
373
        $msgName = 'Queue_PlacePNR';
374
375
        return $this->callMessage($msgName, $options, $messageOptions);
376
    }
377
378
    /**
379
     * Queue_RemoveItem - remove an item (a PNR) from a given queue
380
     *
381
     * @param RequestOptions\QueueRemoveItemOptions $options
382
     * @param array $messageOptions (OPTIONAL)
383
     * @return Result
384
     */
385
    public function queueRemoveItem(RequestOptions\QueueRemoveItemOptions $options, $messageOptions = [])
386
    {
387
        $msgName = 'Queue_RemoveItem';
388
389
        return $this->callMessage($msgName, $options, $messageOptions);
390
    }
391
392
    /**
393
     * Queue_MoveItem - move an item (a PNR) from one queue to another.
394
     *
395
     * @param RequestOptions\QueueMoveItemOptions $options
396
     * @param array $messageOptions (OPTIONAL)
397
     * @return Result
398
     */
399
    public function queueMoveItem(RequestOptions\QueueMoveItemOptions $options, $messageOptions = [])
400
    {
401
        $msgName = 'Queue_MoveItem';
402
403
        return $this->callMessage($msgName, $options, $messageOptions);
404
    }
405
406
    /**
407
     * Offer_VerifyOffer
408
     *
409
     * To be called in the context of an open PNR
410
     *
411
     * @param RequestOptions\OfferVerifyOptions $options
412
     * @param array $messageOptions (OPTIONAL)
413
     * @return Result
414
     */
415
    public function offerVerify(RequestOptions\OfferVerifyOptions $options, $messageOptions = [])
416
    {
417
        $msgName = 'Offer_VerifyOffer';
418
419
        return $this->callMessage($msgName, $options, $messageOptions);
420
    }
421
422
    /**
423
     * Offer_ConfirmAirOffer
424
     *
425
     * @param RequestOptions\OfferConfirmAirOptions $options
426
     * @param array $messageOptions (OPTIONAL)
427
     * @return Result
428
     */
429
    public function offerConfirmAir(RequestOptions\OfferConfirmAirOptions $options, $messageOptions = [])
430
    {
431
        $msgName = 'Offer_ConfirmAirOffer';
432
433
        return $this->callMessage($msgName, $options, $messageOptions);
434
    }
435
436
    /**
437
     * Offer_ConfirmHotelOffer
438
     *
439
     * @param RequestOptions\OfferConfirmHotelOptions $options
440
     * @param array $messageOptions (OPTIONAL)
441
     * @return Result
442
     */
443
    public function offerConfirmHotel(RequestOptions\OfferConfirmHotelOptions $options, $messageOptions = [])
444
    {
445
        $msgName = 'Offer_ConfirmHotelOffer';
446
447
        return $this->callMessage($msgName, $options, $messageOptions);
448
    }
449
450
    /**
451
     * Offer_ConfirmCarOffer
452
     *
453
     * @param RequestOptions\OfferConfirmCarOptions $options
454
     * @param array $messageOptions (OPTIONAL)
455
     * @return Result
456
     */
457
    public function offerConfirmCar(RequestOptions\OfferConfirmCarOptions $options, $messageOptions = [])
458
    {
459
        $msgName = 'Offer_ConfirmCarOffer';
460
461
        return $this->callMessage($msgName, $options, $messageOptions);
462
    }
463
464
    /**
465
     * Fare_MasterPricerTravelBoardSearch
466
     *
467
     * @param RequestOptions\FareMasterPricerTbSearch $options
468
     * @param array $messageOptions (OPTIONAL)
469
     * @return Result
470
     */
471
    public function fareMasterPricerTravelBoardSearch(
472
        RequestOptions\FareMasterPricerTbSearch $options,
473
        $messageOptions = []
474
    ) {
475
        $msgName = 'Fare_MasterPricerTravelBoardSearch';
476
477
        return $this->callMessage($msgName, $options, $messageOptions);
478
    }
479
480
    /**
481
     * Fare_PricePnrWithBookingClass
482
     *
483
     * @param RequestOptions\FarePricePnrWithBookingClassOptions $options
484
     * @param array $messageOptions (OPTIONAL)
485
     * @return Result
486
     */
487
    public function farePricePnrWithBookingClass(
488
        RequestOptions\FarePricePnrWithBookingClassOptions $options,
489
        $messageOptions = []
490
    ) {
491
        $msgName = 'Fare_PricePNRWithBookingClass';
492
493
        return $this->callMessage($msgName, $options, $messageOptions);
494
    }
495
496
    /**
497
     * Fare_InformativePricingWithoutPNR
498
     *
499
     * @param RequestOptions\FareInformativePricingWithoutPnrOptions $options
500
     * @param array $messageOptions (OPTIONAL)
501
     * @return Result
502
     */
503
    public function fareInformativePricingWithoutPnr(
504
        RequestOptions\FareInformativePricingWithoutPnrOptions $options,
505
        $messageOptions = []
506
    ) {
507
        $msgName = 'Fare_InformativePricingWithoutPNR';
508
509
        return $this->callMessage($msgName, $options, $messageOptions);
510
    }
511
512
    /**
513
     * Fare_CheckRules
514
     *
515
     * @param RequestOptions\FareCheckRulesOptions $options
516
     * @param array $messageOptions (OPTIONAL)
517
     * @return Result
518
     */
519
    public function fareCheckRules(RequestOptions\FareCheckRulesOptions $options, $messageOptions = [])
520
    {
521
        $msgName = 'Fare_CheckRules';
522
523
        return $this->callMessage($msgName, $options, $messageOptions);
524
    }
525
526
    /**
527
     * Fare_ConvertCurrency
528
     *
529
     * @param RequestOptions\FareConvertCurrencyOptions $options
530
     * @param array $messageOptions (OPTIONAL)
531
     * @return Result
532
     */
533
    public function fareConvertCurrency(RequestOptions\FareConvertCurrencyOptions $options, $messageOptions = [])
534
    {
535
        $msgName = 'Fare_ConvertCurrency';
536
537
        return $this->callMessage($msgName, $options, $messageOptions);
538
    }
539
540
    /**
541
     * Air_MultiAvailability
542
     *
543
     * @param RequestOptions\AirMultiAvailabilityOptions $options
544
     * @param array $messageOptions (OPTIONAL)
545
     * @return Result
546
     */
547
    public function airMultiAvailability(
548
        RequestOptions\AirMultiAvailabilityOptions $options,
549
        $messageOptions = []
550
    ) {
551
        $msgName = 'Air_MultiAvailability';
552
553
        return $this->callMessage($msgName, $options, $messageOptions);
554
    }
555
556
    /**
557
     * Air_SellFromRecommendation
558
     *
559
     * @param RequestOptions\AirSellFromRecommendationOptions $options
560
     * @param array $messageOptions (OPTIONAL)
561
     * @return Result
562
     */
563
    public function airSellFromRecommendation(
564
        RequestOptions\AirSellFromRecommendationOptions $options,
565
        $messageOptions = []
566
    ) {
567
        $msgName = 'Air_SellFromRecommendation';
568
569
        return $this->callMessage($msgName, $options, $messageOptions);
570
    }
571
572
    /**
573
     * Air_FlightInfo
574
     *
575
     * @param RequestOptions\AirFlightInfoOptions $options
576
     * @param array $messageOptions (OPTIONAL)
577
     * @return Result
578
     */
579
    public function airFlightInfo(RequestOptions\AirFlightInfoOptions $options, $messageOptions = [])
580
    {
581
        $msgName = 'Air_FlightInfo';
582
583
        return $this->callMessage($msgName, $options, $messageOptions);
584
    }
585
586
    /**
587
     * Air_RetrieveSeatMap
588
     *
589
     * @param RequestOptions\AirRetrieveSeatMapOptions $options
590
     * @param array $messageOptions (OPTIONAL)
591
     * @return Result
592
     */
593
    public function airRetrieveSeatMap(RequestOptions\AirRetrieveSeatMapOptions $options, $messageOptions = [])
594
    {
595
        $msgName = 'Air_RetrieveSeatMap';
596
597
        return $this->callMessage($msgName, $options, $messageOptions);
598
    }
599
600
    /**
601
     * Command_Cryptic
602
     *
603
     * @param RequestOptions\CommandCrypticOptions $options
604
     * @param array $messageOptions (OPTIONAL)
605
     * @return Result
606
     */
607
    public function commandCryptic(RequestOptions\CommandCrypticOptions $options, $messageOptions = [])
608
    {
609
        $msgName = 'Command_Cryptic';
610
611
        return $this->callMessage($msgName, $options, $messageOptions);
612
    }
613
614
    /**
615
     * MiniRule_GetFromPricingRec
616
     *
617
     * @param RequestOptions\MiniRuleGetFromPricingRecOptions $options
618
     * @param array $messageOptions (OPTIONAL)
619
     * @return Result
620
     */
621
    public function miniRuleGetFromPricingRec(
622
        RequestOptions\MiniRuleGetFromPricingRecOptions $options,
623
        $messageOptions = []
624
    ) {
625
        $msgName = 'MiniRule_GetFromPricingRec';
626
627
        return $this->callMessage($msgName, $options, $messageOptions);
628
    }
629
630
    /**
631
     * Info_EncodeDecodeCity
632
     *
633
     * @param RequestOptions\InfoEncodeDecodeCityOptions $options
634
     * @param array $messageOptions (OPTIONAL)
635
     * @return Result
636
     */
637
    public function infoEncodeDecodeCity(RequestOptions\InfoEncodeDecodeCityOptions $options, $messageOptions = [])
638
    {
639
        $msgName = 'Info_EncodeDecodeCity';
640
641
        return $this->callMessage($msgName, $options, $messageOptions);
642
    }
643
644
645
    /**
646
     * Ticket_CreateTSTFromPricing
647
     *
648
     * @param RequestOptions\TicketCreateTstFromPricingOptions $options
649
     * @param array $messageOptions (OPTIONAL)
650
     * @return Result
651
     */
652
    public function ticketCreateTSTFromPricing(
653
        RequestOptions\TicketCreateTstFromPricingOptions $options,
654
        $messageOptions = []
655
    ) {
656
        $msgName = 'Ticket_CreateTSTFromPricing';
657
658
        return $this->callMessage($msgName, $options, $messageOptions);
659
    }
660
661
    /**
662
     * Ticket_DeleteTST
663
     *
664
     * @param RequestOptions\TicketDeleteTstOptions $options
665
     * @param array $messageOptions (OPTIONAL)
666
     * @return Result
667
     */
668
    public function ticketDeleteTST(RequestOptions\TicketDeleteTstOptions $options, $messageOptions = [])
669
    {
670
        $msgName = 'Ticket_DeleteTST';
671
672
        return $this->callMessage($msgName, $options, $messageOptions);
673
    }
674
675
    /**
676
     * Ticket_DisplayTST
677
     *
678
     * @param RequestOptions\TicketDisplayTstOptions $options
679
     * @param array $messageOptions (OPTIONAL)
680
     * @return Result
681
     */
682
    public function ticketDisplayTST(RequestOptions\TicketDisplayTstOptions $options, $messageOptions = [])
683
    {
684
        $msgName = 'Ticket_DisplayTST';
685
686
        return $this->callMessage($msgName, $options, $messageOptions);
687
    }
688
689
    /**
690
     * DocIssuance_IssueTicket
691
     *
692
     * @param RequestOptions\DocIssuanceIssueTicketOptions $options
693
     * @param array $messageOptions (OPTIONAL)
694
     * @return Result
695
     */
696
    public function docIssuanceIssueTicket(
697
        RequestOptions\DocIssuanceIssueTicketOptions $options,
698
        $messageOptions = []
699
    ) {
700
        $msgName = 'DocIssuance_IssueTicket';
701
702
        return $this->callMessage($msgName, $options, $messageOptions);
703
    }
704
705
    /**
706
     * PriceXplorer_ExtremeSearch
707
     *
708
     * @param RequestOptions\PriceXplorerExtremeSearchOptions $options
709
     * @param array $messageOptions (OPTIONAL)
710
     * @return Result
711
     */
712
    public function priceXplorerExtremeSearch(
713
        RequestOptions\PriceXplorerExtremeSearchOptions $options,
714
        $messageOptions = []
715
    ) {
716
        $msgName = 'PriceXplorer_ExtremeSearch';
717
718
        return $this->callMessage($msgName, $options, $messageOptions);
719
    }
720
721
    /**
722
     * SalesReports_DisplayQueryReport
723
     *
724
     * @param RequestOptions\SalesReportsDisplayQueryReportOptions $options
725
     * @param array $messageOptions (OPTIONAL)
726
     * @return Result
727
     */
728
    public function salesReportsDisplayQueryReport(
729
        RequestOptions\SalesReportsDisplayQueryReportOptions $options,
730
        $messageOptions = []
731
    ) {
732
        $msgName = 'SalesReports_DisplayQueryReport';
733
734
        return $this->callMessage($msgName, $options, $messageOptions);
735
    }
736
737
    /**
738
     * Call a message with the given parameters
739
     *
740
     * @param string $messageName
741
     * @param RequestOptions\RequestOptionsInterface $options
742
     * @param array $messageOptions
743
     * @param bool $endSession
744
     * @return Result
745
     * @throws Client\Exception
746
     * @throws Client\Struct\InvalidArgumentException
747
     * @throws Client\InvalidMessageException
748
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
749
     * @throws \RuntimeException
750
     * @throws \InvalidArgumentException
751
     * @throws \SoapFault
752
     */
753
    protected function callMessage($messageName, $options, $messageOptions, $endSession = false)
754
    {
755
        $messageOptions = $this->makeMessageOptions($messageOptions, $endSession);
756
757
        $this->lastMessage = $messageName;
758
759
        $sendResult = $this->sessionHandler->sendMessage(
760
            $messageName,
761
            $this->requestCreator->createRequest(
762
                $messageName,
763
                $options
764
            ),
765
            $messageOptions
766
        );
767
768
        return $this->responseHandler->analyzeResponse(
769
            $sendResult,
770
            $messageName
771
        );
772
    }
773
774
    /**
775
     * Make message options
776
     *
777
     * Message options are meta options when sending a message to the amadeus web services
778
     * - (if stateful) should we end the current session after sending this call?
779
     * - ... ?
780
     *
781
     * @param array $incoming The Message options chosen by the caller - if any.
782
     * @param bool $endSession Switch if you want to terminate the current session after making the call.
783
     * @return array
784
     */
785
    protected function makeMessageOptions(array $incoming, $endSession = false)
786
    {
787
        $options = [
788
            'endSession' => $endSession
789
        ];
790
791
        if (array_key_exists('endSession', $incoming)) {
792
            $options['endSession'] = $incoming['endSession'];
793
        }
794
795
        return $options;
796
    }
797
798
    /**
799
     * Load the session handler
800
     *
801
     * Either load the provided session handler or create one depending on incoming parameters.
802
     *
803
     * @param HandlerInterface|null $sessionHandler
804
     * @param Params\SessionHandlerParams $params
805
     * @return HandlerInterface
806
     */
807
    protected function loadSessionHandler($sessionHandler, $params)
808
    {
809
        $newSessionHandler = null;
0 ignored issues
show
Unused Code introduced by
$newSessionHandler is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
810
811
        if ($sessionHandler instanceof HandlerInterface) {
812
            $newSessionHandler = $sessionHandler;
813
        } else {
814
            $newSessionHandler = HandlerFactory::createHandler($params);
815
        }
816
817
        return $newSessionHandler;
818
    }
819
820
    /**
821
     * Load a request creator
822
     *
823
     * A request creator is responsible for generating the correct request to send.
824
     *
825
     * @param RequestCreatorInterface|null $requestCreator
826
     * @param Params\RequestCreatorParams $params
827
     * @param string $libIdentifier Library identifier & version string (for Received From)
828
     * @param string $originatorOffice The Office we are signed in with.
829
     * @param array $mesVer Messages & Versions array of active messages in the WSDL
830
     * @return RequestCreatorInterface
831
     * @throws \RuntimeException
832
     */
833
    protected function loadRequestCreator($requestCreator, $params, $libIdentifier, $originatorOffice, $mesVer)
834
    {
835
        $newRequestCreator = null;
0 ignored issues
show
Unused Code introduced by
$newRequestCreator is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
836
837
        if ($requestCreator instanceof RequestCreatorInterface) {
838
            $newRequestCreator = $requestCreator;
839
        } else {
840
            $params->originatorOfficeId = $originatorOffice;
841
            $params->messagesAndVersions = $mesVer;
842
843
            $newRequestCreator = RequestCreatorFactory::createRequestCreator(
844
                $params,
845
                $libIdentifier
846
            );
847
        }
848
849
        return $newRequestCreator;
850
    }
851
852
    /**
853
     * Load a response handler
854
     *
855
     * @param ResponseHandlerInterface|null $responseHandler
856
     *
857
     * @return ResponseHandlerInterface
858
     * @throws \RuntimeException
859
     */
860
    protected function loadResponseHandler($responseHandler)
861
    {
862
        $newResponseHandler = null;
0 ignored issues
show
Unused Code introduced by
$newResponseHandler is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
863
864
        if ($responseHandler instanceof ResponseHandlerInterface) {
865
            $newResponseHandler = $responseHandler;
866
        } else {
867
            $newResponseHandler = new ResponseHandlerBase();
868
        }
869
870
        return $newResponseHandler;
871
    }
872
}
873