Passed
Push — master ( 95f9a6...2c6467 )
by Dieter
06:09
created

Client::miniRuleGetFromRec()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
crap 1
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\Base;
26
use Amadeus\Client\Exception;
27
use Amadeus\Client\Params;
28
use Amadeus\Client\RequestOptions;
29
use Amadeus\Client\Result;
30
use Amadeus\Client\Session\Handler\UnsupportedOperationException;
31
32
/**
33
 * Amadeus Web Service Client.
34
 *
35
 * TODO:
36
 * - support older versions of SoapHeader (1)
37
 *
38
 * @package Amadeus
39
 * @author Dieter Devlieghere <[email protected]>
40
 */
41
class Client extends Base
42
{
43
    /**
44
     * Amadeus SOAP header version 1
45
     */
46
    const HEADER_V1 = "1";
47
    /**
48
     * Amadeus SOAP header version 2
49
     */
50
    const HEADER_V2 = "2";
51
    /**
52
     * Amadeus SOAP header version 4
53
     */
54
    const HEADER_V4 = "4";
55
56
    /**
57
     * Version string
58
     *
59
     * @var string
60
     */
61
    const VERSION = "1.11.0";
62
63
    /**
64
     * An identifier string for the library (to be used in Received From entries)
65
     *
66
     * @var string
67
     */
68
    const RECEIVED_FROM_IDENTIFIER = "amabnl-amadeus-ws-client";
69
70
    /**
71
     * @var string
72
     */
73
    protected $lastMessage;
74
75
    /**
76
     * Set the session as stateful (true) or stateless (false)
77
     *
78
     * @param bool $newStateful
79
     */
80 5
    public function setStateful($newStateful)
81
    {
82 5
        $this->sessionHandler->setStateful($newStateful);
83 5
    }
84
85
    /**
86
     * @return bool
87
     */
88 15
    public function isStateful()
89
    {
90 15
        return $this->sessionHandler->isStateful();
91
    }
92
93
    /**
94
     * Get TransactionFlowLink Consumer Id
95
     *
96
     * @return string|null
97
     */
98 5
    public function getConsumerId()
99
    {
100 5
        return $this->sessionHandler->getConsumerId();
101
    }
102
103
    /**
104
     * Set TransactionFlowLink Consumer Id
105
     *
106
     * @throws UnsupportedOperationException when used on unsupported WSAP versions
107
     * @param string $id
108
     * @return void
109
     */
110 5
    public function setConsumerId($id)
111
    {
112 5
        $this->sessionHandler->setTransactionFlowLink(true);
113 5
        $this->sessionHandler->setConsumerId($id);
114 5
    }
115
116
    /**
117
     * Get the last raw XML message that was sent out
118
     *
119
     * @return string|null
120
     */
121 5
    public function getLastRequest()
122
    {
123 5
        return $this->sessionHandler->getLastRequest($this->lastMessage);
124
    }
125
126
    /**
127
     * Get the last raw XML message that was received
128
     *
129
     * @return string|null
130
     */
131 5
    public function getLastResponse()
132
    {
133 5
        return $this->sessionHandler->getLastResponse($this->lastMessage);
134
    }
135
136
    /**
137
     * Get the request headers for the last SOAP message that was sent out
138
     *
139
     * @return string|null
140
     */
141 5
    public function getLastRequestHeaders()
142
    {
143 5
        return $this->sessionHandler->getLastRequestHeaders($this->lastMessage);
144
    }
145
146
    /**
147
     * Get the response headers for the last SOAP message that was received
148
     *
149
     * @return string|null
150
     */
151 5
    public function getLastResponseHeaders()
152
    {
153 5
        return $this->sessionHandler->getLastResponseHeaders($this->lastMessage);
154
    }
155
156
    /**
157
     * Get session information for authenticated session
158
     *
159
     * - sessionId
160
     * - sequenceNr
161
     * - securityToken
162
     *
163
     * @return array|null
164
     */
165 5
    public function getSessionData()
166
    {
167 5
        return $this->sessionHandler->getSessionData();
168
    }
169
170
    /**
171
     * Restore a previously used session
172
     *
173
     * To be used when implementing your own session pooling system on legacy Soap Header 2 applications.
174
     *
175
     * @param array $sessionData
176
     * @return bool
177
     */
178 5
    public function setSessionData(array $sessionData)
179
    {
180 5
        return $this->sessionHandler->setSessionData($sessionData);
181
    }
182
183
    /**
184
     * Construct Amadeus Web Services client
185
     *
186
     * @param Params $params
187
     */
188 500
    public function __construct(Params $params)
189
    {
190 500
        $this->loadClientParams(
191 500
            $params,
192 500
            self::RECEIVED_FROM_IDENTIFIER,
193 300
            self::VERSION
194 200
        );
195 495
    }
196
197
    /**
198
     * Authenticate.
199
     *
200
     * Authentication Parameters were provided at construction time (authParams)
201
     *
202
     * @return Result
203
     * @throws Exception
204
     */
205 10
    public function securityAuthenticate()
206
    {
207 10
        $msgName = 'Security_Authenticate';
208
209 10
        return $this->callMessage(
210 10
            $msgName,
211 10
            new RequestOptions\SecurityAuthenticateOptions(
212 10
                $this->authParams
213 4
            ),
214 10
            [],
215 6
            false
216 4
        );
217
    }
218
219
    /**
220
     * Terminate a session - only applicable to non-stateless mode.
221
     *
222
     * @return Result
223
     * @throws Exception
224
     */
225 5
    public function securitySignOut()
226
    {
227 5
        $msgName = 'Security_SignOut';
228
229 5
        return $this->callMessage(
230 5
            $msgName,
231 5
            new RequestOptions\SecuritySignOutOptions(),
232 5
            [],
233 3
            true
234 2
        );
235
    }
236
237
    /**
238
     * PNR_Retrieve - Retrieve an Amadeus PNR by record locator
239
     *
240
     * @param RequestOptions\PnrRetrieveOptions $options
241
     * @param array $messageOptions (OPTIONAL)
242
     * @return Result
243
     * @throws Client\InvalidMessageException
244
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
245
     * @throws Exception
246
     */
247 5
    public function pnrRetrieve(RequestOptions\PnrRetrieveOptions $options, $messageOptions = [])
248
    {
249 5
        $msgName = 'PNR_Retrieve';
250
251 5
        return $this->callMessage($msgName, $options, $messageOptions);
252
    }
253
254
    /**
255
     * PNR_Split
256
     *
257
     * @param RequestOptions\PnrSplitOptions $options
258
     * @param array $messageOptions (OPTIONAL)
259
     * @return Result
260
     * @throws Client\InvalidMessageException
261
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
262
     * @throws Exception
263
     */
264 5
    public function pnrSplit(
265
        RequestOptions\PnrSplitOptions $options,
266
        $messageOptions = []
267
    ) {
268 5
        $msgName = 'PNR_Split';
269
270 5
        return $this->callMessage($msgName, $options, $messageOptions);
271
    }
272
273
    /**
274
     * Create a PNR using PNR_AddMultiElements
275
     *
276
     * @param RequestOptions\PnrCreatePnrOptions $options
277
     * @param array $messageOptions (OPTIONAL)
278
     * @return Result
279
     * @throws Client\InvalidMessageException
280
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
281
     * @throws Exception
282
     */
283 5
    public function pnrCreatePnr(RequestOptions\PnrCreatePnrOptions $options, $messageOptions = [])
284
    {
285 5
        $msgName = 'PNR_AddMultiElements';
286
287 5
        return $this->callMessage($msgName, $options, $messageOptions);
288
    }
289
290
    /**
291
     * PNR_AddMultiElements - Create a new PNR or update an existing PNR.
292
     *
293
     * https://webservices.amadeus.com/extranet/viewService.do?id=25&flavourId=1&menuId=functional
294
     *
295
     * @param RequestOptions\PnrAddMultiElementsOptions $options
296
     * @param array $messageOptions (OPTIONAL)
297
     * @return Result
298
     * @throws Client\InvalidMessageException
299
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
300
     * @throws Exception
301
     */
302 10
    public function pnrAddMultiElements(RequestOptions\PnrAddMultiElementsOptions $options, $messageOptions = [])
303
    {
304 10
        $msgName = 'PNR_AddMultiElements';
305
306 10
        return $this->callMessage($msgName, $options, $messageOptions);
307
    }
308
309
    /**
310
     * PNR_RetrieveAndDisplay - Retrieve an Amadeus PNR by record locator including extra info
311
     *
312
     * This extra info is info you cannot see in the regular PNR, like Offers.
313
     *
314
     * https://webservices.amadeus.com/extranet/viewService.do?id=1922&flavourId=1&menuId=functional
315
     *
316
     * @param RequestOptions\PnrRetrieveAndDisplayOptions $options Amadeus Record Locator for PNR
317
     * @param array $messageOptions (OPTIONAL)
318
     * @return Result
319
     * @throws Client\InvalidMessageException
320
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
321
     * @throws Exception
322
     **/
323 5
    public function pnrRetrieveAndDisplay(RequestOptions\PnrRetrieveAndDisplayOptions $options, $messageOptions = [])
324
    {
325 5
        $msgName = 'PNR_RetrieveAndDisplay';
326
327 5
        return $this->callMessage($msgName, $options, $messageOptions);
328
    }
329
330
    /**
331
     * PNR_Cancel
332
     *
333
     * @param RequestOptions\PnrCancelOptions $options
334
     * @param array $messageOptions (OPTIONAL)
335
     * @return Result
336
     * @throws Client\InvalidMessageException
337
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
338
     * @throws Exception
339
     */
340 5
    public function pnrCancel(RequestOptions\PnrCancelOptions $options, $messageOptions = [])
341
    {
342 5
        $msgName = 'PNR_Cancel';
343
344 5
        return $this->callMessage($msgName, $options, $messageOptions);
345
    }
346
347
    /**
348
     * PNR_DisplayHistory
349
     *
350
     * @param RequestOptions\PnrDisplayHistoryOptions $options
351
     * @param array $messageOptions (OPTIONAL)
352
     * @return Result
353
     * @throws Client\InvalidMessageException
354
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
355
     * @throws Exception
356
     */
357 5
    public function pnrDisplayHistory(RequestOptions\PnrDisplayHistoryOptions $options, $messageOptions = [])
358
    {
359 5
        $msgName = 'PNR_DisplayHistory';
360
361 5
        return $this->callMessage($msgName, $options, $messageOptions);
362
    }
363
364
    /**
365
     * PNR_TransferOwnership
366
     *
367
     * @param RequestOptions\PnrTransferOwnershipOptions $options
368
     * @param array $messageOptions (OPTIONAL)
369
     * @return Result
370
     * @throws Client\InvalidMessageException
371
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
372
     * @throws Exception
373
     */
374 5
    public function pnrTransferOwnership(RequestOptions\PnrTransferOwnershipOptions $options, $messageOptions = [])
375
    {
376 5
        $msgName = 'PNR_TransferOwnership';
377
378 5
        return $this->callMessage($msgName, $options, $messageOptions);
379
    }
380
381
    /**
382
     * PNR_NameChange
383
     *
384
     * @param RequestOptions\PnrNameChangeOptions $options
385
     * @param array $messageOptions (OPTIONAL)
386
     * @return Result
387
     * @throws Client\InvalidMessageException
388
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
389
     * @throws Exception
390
     */
391 5
    public function pnrNameChange(RequestOptions\PnrNameChangeOptions $options, $messageOptions = [])
392
    {
393 5
        $msgName = 'PNR_NameChange';
394
395 5
        return $this->callMessage($msgName, $options, $messageOptions);
396
    }
397
398
    /**
399
     * Queue_List - get a list of all PNR's on a given queue
400
     *
401
     * https://webservices.amadeus.com/extranet/viewService.do?id=52&flavourId=1&menuId=functional
402
     *
403
     * @param RequestOptions\QueueListOptions $options
404
     * @param array $messageOptions (OPTIONAL)
405
     * @return Result
406
     * @throws Client\InvalidMessageException
407
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
408
     * @throws Exception
409
     */
410 5
    public function queueList(RequestOptions\QueueListOptions $options, $messageOptions = [])
411
    {
412 5
        $msgName = 'Queue_List';
413
414 5
        return $this->callMessage($msgName, $options, $messageOptions);
415
    }
416
417
    /**
418
     * Queue_PlacePNR - Place a PNR on a given queue
419
     *
420
     * @param RequestOptions\QueuePlacePnrOptions $options
421
     * @param array $messageOptions (OPTIONAL)
422
     * @return Result
423
     * @throws Client\InvalidMessageException
424
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
425
     * @throws Exception
426
     */
427 5
    public function queuePlacePnr(RequestOptions\QueuePlacePnrOptions $options, $messageOptions = [])
428
    {
429 5
        $msgName = 'Queue_PlacePNR';
430
431 5
        return $this->callMessage($msgName, $options, $messageOptions);
432
    }
433
434
    /**
435
     * PNR_Ignore - Ignore an Amadeus PNR by record locator
436
     *
437
     * @param RequestOptions\PnrIgnoreOptions $options
438
     * @param array $messageOptions (OPTIONAL)
439
     * @return Result
440
     * @throws Client\InvalidMessageException
441
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
442
     * @throws Exception
443
     */
444 5
    public function pnrIgnore(RequestOptions\PnrIgnoreOptions $options, $messageOptions = [])
445
    {
446 5
        $msgName = 'PNR_Ignore';
447
448 5
        return $this->callMessage($msgName, $options, $messageOptions);
449
    }
450
451
452
    /**
453
     * Queue_RemoveItem - remove an item (a PNR) from a given queue
454
     *
455
     * @param RequestOptions\QueueRemoveItemOptions $options
456
     * @param array $messageOptions (OPTIONAL)
457
     * @return Result
458
     * @throws Client\InvalidMessageException
459
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
460
     * @throws Exception
461
     */
462 5
    public function queueRemoveItem(RequestOptions\QueueRemoveItemOptions $options, $messageOptions = [])
463
    {
464 5
        $msgName = 'Queue_RemoveItem';
465
466 5
        return $this->callMessage($msgName, $options, $messageOptions);
467
    }
468
469
    /**
470
     * Queue_MoveItem - move an item (a PNR) from one queue to another.
471
     *
472
     * @param RequestOptions\QueueMoveItemOptions $options
473
     * @param array $messageOptions (OPTIONAL)
474
     * @return Result
475
     * @throws Client\InvalidMessageException
476
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
477
     * @throws Exception
478
     */
479 5
    public function queueMoveItem(RequestOptions\QueueMoveItemOptions $options, $messageOptions = [])
480
    {
481 5
        $msgName = 'Queue_MoveItem';
482
483 5
        return $this->callMessage($msgName, $options, $messageOptions);
484
    }
485
486
    /**
487
     * Offer_CreateOffer
488
     *
489
     * @param RequestOptions\OfferCreateOptions $options
490
     * @param array $messageOptions (OPTIONAL)
491
     * @return Result
492
     * @throws Client\InvalidMessageException
493
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
494
     * @throws Exception
495
     */
496 5
    public function offerCreate(RequestOptions\OfferCreateOptions $options, $messageOptions = [])
497
    {
498 5
        $msgName = 'Offer_CreateOffer';
499
500 5
        return $this->callMessage($msgName, $options, $messageOptions);
501
    }
502
503
    /**
504
     * Offer_VerifyOffer
505
     *
506
     * To be called in the context of an open PNR
507
     *
508
     * @param RequestOptions\OfferVerifyOptions $options
509
     * @param array $messageOptions (OPTIONAL)
510
     * @return Result
511
     * @throws Client\InvalidMessageException
512
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
513
     * @throws Exception
514
     */
515 5
    public function offerVerify(RequestOptions\OfferVerifyOptions $options, $messageOptions = [])
516
    {
517 5
        $msgName = 'Offer_VerifyOffer';
518
519 5
        return $this->callMessage($msgName, $options, $messageOptions);
520
    }
521
522
    /**
523
     * Offer_ConfirmAirOffer
524
     *
525
     * @param RequestOptions\OfferConfirmAirOptions $options
526
     * @param array $messageOptions (OPTIONAL)
527
     * @return Result
528
     * @throws Client\InvalidMessageException
529
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
530
     * @throws Exception
531
     */
532 5
    public function offerConfirmAir(RequestOptions\OfferConfirmAirOptions $options, $messageOptions = [])
533
    {
534 5
        $msgName = 'Offer_ConfirmAirOffer';
535
536 5
        return $this->callMessage($msgName, $options, $messageOptions);
537
    }
538
539
    /**
540
     * Offer_ConfirmHotelOffer
541
     *
542
     * @param RequestOptions\OfferConfirmHotelOptions $options
543
     * @param array $messageOptions (OPTIONAL)
544
     * @return Result
545
     * @throws Client\InvalidMessageException
546
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
547
     * @throws Exception
548
     */
549 5
    public function offerConfirmHotel(RequestOptions\OfferConfirmHotelOptions $options, $messageOptions = [])
550
    {
551 5
        $msgName = 'Offer_ConfirmHotelOffer';
552
553 5
        return $this->callMessage($msgName, $options, $messageOptions);
554
    }
555
556
    /**
557
     * Offer_ConfirmCarOffer
558
     *
559
     * @param RequestOptions\OfferConfirmCarOptions $options
560
     * @param array $messageOptions (OPTIONAL)
561
     * @return Result
562
     * @throws Client\InvalidMessageException
563
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
564
     * @throws Exception
565
     */
566 5
    public function offerConfirmCar(RequestOptions\OfferConfirmCarOptions $options, $messageOptions = [])
567
    {
568 5
        $msgName = 'Offer_ConfirmCarOffer';
569
570 5
        return $this->callMessage($msgName, $options, $messageOptions);
571
    }
572
573
    /**
574
     * Fare_MasterPricerExpertSearch
575
     *
576
     * @param RequestOptions\FareMasterPricerExSearchOptions $options
577
     * @param array $messageOptions (OPTIONAL)
578
     * @return Result
579
     * @throws Client\InvalidMessageException
580
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
581
     * @throws Exception
582
     */
583 5
    public function fareMasterPricerExpertSearch(
584
        RequestOptions\FareMasterPricerExSearchOptions $options,
585
        $messageOptions = []
586
    ) {
587 5
        $msgName = 'Fare_MasterPricerExpertSearch';
588
589 5
        return $this->callMessage($msgName, $options, $messageOptions);
590
    }
591
592
593
    /**
594
     * Fare_MasterPricerTravelBoardSearch
595
     *
596
     * @param RequestOptions\FareMasterPricerTbSearch $options
597
     * @param array $messageOptions (OPTIONAL)
598
     * @return Result
599
     * @throws Client\InvalidMessageException
600
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
601
     * @throws Exception
602
     */
603 5
    public function fareMasterPricerTravelBoardSearch(
604
        RequestOptions\FareMasterPricerTbSearch $options,
605
        $messageOptions = []
606
    ) {
607 5
        $msgName = 'Fare_MasterPricerTravelBoardSearch';
608
609 5
        return $this->callMessage($msgName, $options, $messageOptions);
610
    }
611
612
    /**
613
     * Fare_MasterPricerCalendar
614
     *
615
     * @param RequestOptions\FareMasterPricerCalendarOptions $options
616
     * @param array $messageOptions (OPTIONAL)
617
     * @return Result
618
     * @throws Client\InvalidMessageException
619
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
620
     * @throws Exception
621
     */
622 5
    public function fareMasterPricerCalendar(
623
        RequestOptions\FareMasterPricerCalendarOptions $options,
624
        $messageOptions = []
625
    ) {
626 5
        $msgName = 'Fare_MasterPricerCalendar';
627
628 5
        return $this->callMessage($msgName, $options, $messageOptions);
629
    }
630
631
    /**
632
     * Fare_PricePnrWithBookingClass
633
     *
634
     * @param RequestOptions\FarePricePnrWithBookingClassOptions $options
635
     * @param array $messageOptions (OPTIONAL)
636
     * @return Result
637
     * @throws Client\InvalidMessageException
638
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
639
     * @throws Exception
640
     */
641 10
    public function farePricePnrWithBookingClass(
642
        RequestOptions\FarePricePnrWithBookingClassOptions $options,
643
        $messageOptions = []
644
    ) {
645 10
        $msgName = 'Fare_PricePNRWithBookingClass';
646
647 10
        return $this->callMessage($msgName, $options, $messageOptions);
648
    }
649
650
    /**
651
     * Fare_PricePnrWithLowerFares
652
     *
653
     * @param RequestOptions\FarePricePnrWithLowerFaresOptions $options
654
     * @param array $messageOptions (OPTIONAL)
655
     * @return Result
656
     * @throws Client\InvalidMessageException
657
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
658
     * @throws Exception
659
     */
660 10
    public function farePricePnrWithLowerFares(
661
        RequestOptions\FarePricePnrWithLowerFaresOptions $options,
662
        $messageOptions = []
663
    ) {
664 10
        $msgName = 'Fare_PricePNRWithLowerFares';
665
666 10
        return $this->callMessage($msgName, $options, $messageOptions);
667
    }
668
669
    /**
670
     * Fare_PricePnrWithLowestFare
671
     *
672
     * @param RequestOptions\FarePricePnrWithLowestFareOptions $options
673
     * @param array $messageOptions (OPTIONAL)
674
     * @return Result
675
     * @throws Client\InvalidMessageException
676
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
677
     * @throws Exception
678
     */
679 10
    public function farePricePnrWithLowestFare(
680
        RequestOptions\FarePricePnrWithLowestFareOptions $options,
681
        $messageOptions = []
682
    ) {
683 10
        $msgName = 'Fare_PricePNRWithLowestFare';
684
685 10
        return $this->callMessage($msgName, $options, $messageOptions);
686
    }
687
688
    /**
689
     * Fare_InformativePricingWithoutPNR
690
     *
691
     * @param RequestOptions\FareInformativePricingWithoutPnrOptions $options
692
     * @param array $messageOptions (OPTIONAL)
693
     * @return Result
694
     * @throws Client\InvalidMessageException
695
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
696
     * @throws Exception
697
     */
698 5
    public function fareInformativePricingWithoutPnr(
699
        RequestOptions\FareInformativePricingWithoutPnrOptions $options,
700
        $messageOptions = []
701
    ) {
702 5
        $msgName = 'Fare_InformativePricingWithoutPNR';
703
704 5
        return $this->callMessage($msgName, $options, $messageOptions);
705
    }
706
707
    /**
708
     * Fare_PriceUpsellWithoutPNR
709
     *
710
     * @param RequestOptions\FarePriceUpsellWithoutPnrOptions $options
711
     * @param array $messageOptions (OPTIONAL)
712
     * @return Result
713
     * @throws Client\InvalidMessageException
714
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
715
     * @throws Exception
716
     */
717 5
    public function farePriceUpsellWithoutPnr(
718
        RequestOptions\FarePriceUpsellWithoutPnrOptions $options,
719
        $messageOptions = []
720
    ) {
721 5
        $msgName = 'Fare_PriceUpsellWithoutPNR';
722
723 5
        return $this->callMessage($msgName, $options, $messageOptions);
724
    }
725
726
    /**
727
     * Fare_GetFareFamilyDescription
728
     *
729
     * @param RequestOptions\FareGetFareFamilyDescriptionOptions $options
730
     * @param array $messageOptions (OPTIONAL)
731
     * @return Result
732
     * @throws Client\InvalidMessageException
733
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
734
     * @throws Exception
735
     */
736 5
    public function fareGetFareFamilyDescription(
737
        RequestOptions\FareGetFareFamilyDescriptionOptions $options,
738 5
        $messageOptions = []
739
    ) {
740 5
        $msgName = 'Fare_GetFareFamilyDescription';
741
742
        return $this->callMessage($msgName, $options, $messageOptions);
743
    }
744
745
    /**
746
     * Fare_InformativeBestPricingWithoutPNR
747
     *
748
     * @param RequestOptions\FareInformativeBestPricingWithoutPnrOptions $options
749
     * @param array $messageOptions (OPTIONAL)
750
     * @return Result
751
     * @throws Client\InvalidMessageException
752
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
753 5
     * @throws Exception
754
     */
755 5
    public function fareInformativeBestPricingWithoutPnr(
756
        RequestOptions\FareInformativeBestPricingWithoutPnrOptions $options,
757 5
        $messageOptions = []
758
    ) {
759
        $msgName = 'Fare_InformativeBestPricingWithoutPNR';
760
761
        return $this->callMessage($msgName, $options, $messageOptions);
762
    }
763
764
    /**
765
     * Fare_CheckRules
766
     *
767
     * @param RequestOptions\FareCheckRulesOptions $options
768
     * @param array $messageOptions (OPTIONAL)
769
     * @return Result
770 5
     * @throws Client\InvalidMessageException
771
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
772 5
     * @throws Exception
773
     */
774 5
    public function fareCheckRules(RequestOptions\FareCheckRulesOptions $options, $messageOptions = [])
775
    {
776
        $msgName = 'Fare_CheckRules';
777
778
        return $this->callMessage($msgName, $options, $messageOptions);
779
    }
780
781
    /**
782
     * Fare_GetFareRules
783
     *
784
     * @param RequestOptions\FareGetFareRulesOptions $options
785
     * @param array $messageOptions (OPTIONAL)
786
     * @return Result
787 5
     * @throws Client\InvalidMessageException
788
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
789
     * @throws Exception
790
     */
791 5
    public function fareGetFareRules(RequestOptions\FareGetFareRulesOptions $options, $messageOptions = [])
792
    {
793 5
        $msgName = 'Fare_GetFareRules';
794
795
        return $this->callMessage($msgName, $options, $messageOptions);
796
    }
797
798
    /**
799
     * Fare_ConvertCurrency
800
     *
801
     * @param RequestOptions\FareConvertCurrencyOptions $options
802
     * @param array $messageOptions (OPTIONAL)
803
     * @return Result
804
     * @throws Client\InvalidMessageException
805
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
806 5
     * @throws Exception
807
     */
808
    public function fareConvertCurrency(RequestOptions\FareConvertCurrencyOptions $options, $messageOptions = [])
809
    {
810 5
        $msgName = 'Fare_ConvertCurrency';
811
812 5
        return $this->callMessage($msgName, $options, $messageOptions);
813
    }
814
815
    /**
816
     * Air_MultiAvailability
817
     *
818
     * @param RequestOptions\AirMultiAvailabilityOptions $options
819
     * @param array $messageOptions (OPTIONAL)
820
     * @return Result
821
     * @throws Client\InvalidMessageException
822
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
823
     * @throws Exception
824
     */
825 5
    public function airMultiAvailability(
826
        RequestOptions\AirMultiAvailabilityOptions $options,
827 5
        $messageOptions = []
828
    ) {
829 5
        $msgName = 'Air_MultiAvailability';
830
831
        return $this->callMessage($msgName, $options, $messageOptions);
832
    }
833
834
    /**
835
     * Air_SellFromRecommendation
836
     *
837
     * @param RequestOptions\AirSellFromRecommendationOptions $options
838
     * @param array $messageOptions (OPTIONAL)
839
     * @return Result
840
     * @throws Client\InvalidMessageException
841
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
842 5
     * @throws Exception
843
     */
844 5
    public function airSellFromRecommendation(
845
        RequestOptions\AirSellFromRecommendationOptions $options,
846 5
        $messageOptions = []
847
    ) {
848
        $msgName = 'Air_SellFromRecommendation';
849
850
        return $this->callMessage($msgName, $options, $messageOptions);
851
    }
852
853
    /**
854
     * Air_FlightInfo
855
     *
856
     * @param RequestOptions\AirFlightInfoOptions $options
857
     * @param array $messageOptions (OPTIONAL)
858
     * @return Result
859 5
     * @throws Client\InvalidMessageException
860
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
861 5
     * @throws Exception
862
     */
863 5
    public function airFlightInfo(RequestOptions\AirFlightInfoOptions $options, $messageOptions = [])
864
    {
865
        $msgName = 'Air_FlightInfo';
866
867
        return $this->callMessage($msgName, $options, $messageOptions);
868
    }
869
870
    /**
871
     * Air_RetrieveSeatMap
872
     *
873
     * @param RequestOptions\AirRetrieveSeatMapOptions $options
874
     * @param array $messageOptions (OPTIONAL)
875
     * @return Result
876 5
     * @throws Client\InvalidMessageException
877
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
878 5
     * @throws Exception
879
     */
880 5
    public function airRetrieveSeatMap(RequestOptions\AirRetrieveSeatMapOptions $options, $messageOptions = [])
881
    {
882
        $msgName = 'Air_RetrieveSeatMap';
883
884
        return $this->callMessage($msgName, $options, $messageOptions);
885
    }
886
887
    /**
888
     * Air_RebookAirSegment
889
     *
890
     * @param RequestOptions\AirRebookAirSegmentOptions $options
891
     * @param array $messageOptions (OPTIONAL)
892
     * @return Result
893 5
     * @throws Client\InvalidMessageException
894
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
895
     * @throws Exception
896
     */
897 5
    public function airRebookAirSegment(RequestOptions\AirRebookAirSegmentOptions $options, $messageOptions = [])
898
    {
899 5
        $msgName = 'Air_RebookAirSegment';
900
901
        return $this->callMessage($msgName, $options, $messageOptions);
902
    }
903
904
    /**
905
     * Command_Cryptic
906
     *
907
     * @param RequestOptions\CommandCrypticOptions $options
908
     * @param array $messageOptions (OPTIONAL)
909
     * @return Result
910
     * @throws Client\InvalidMessageException
911
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
912 5
     * @throws Exception
913
     */
914
    public function commandCryptic(RequestOptions\CommandCrypticOptions $options, $messageOptions = [])
915
    {
916 5
        $msgName = 'Command_Cryptic';
917
918 5
        return $this->callMessage($msgName, $options, $messageOptions);
919
    }
920
921
    /**
922
     * MiniRule_GetFromRec
923
     *
924
     * @param RequestOptions\MiniRuleGetFromRecOptions $options
925
     * @param array $messageOptions (OPTIONAL)
926
     * @return Result
927
     * @throws Client\InvalidMessageException
928
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
929
     * @throws Exception
930
     */
931 5
    public function miniRuleGetFromRec(RequestOptions\MiniRuleGetFromRecOptions $options, $messageOptions = [])
932
    {
933
        $msgName = 'MiniRule_GetFromRec';
934
935 5
        return $this->callMessage($msgName, $options, $messageOptions);
936
    }
937 5
938
    /**
939
     * MiniRule_GetFromPricingRec
940
     *
941
     * @param RequestOptions\MiniRuleGetFromPricingRecOptions $options
942
     * @param array $messageOptions (OPTIONAL)
943
     * @return Result
944
     * @throws Client\InvalidMessageException
945
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
946
     * @throws Exception
947
     */
948
    public function miniRuleGetFromPricingRec(
949
        RequestOptions\MiniRuleGetFromPricingRecOptions $options,
950 5
        $messageOptions = []
951
    ) {
952 5
        $msgName = 'MiniRule_GetFromPricingRec';
953
954 5
        return $this->callMessage($msgName, $options, $messageOptions);
955
    }
956
957
    /**
958
     * MiniRule_GetFromPricing
959
     *
960
     * @param RequestOptions\MiniRuleGetFromPricingOptions $options
961
     * @param array $messageOptions (OPTIONAL)
962
     * @return Result
963
     * @throws Client\InvalidMessageException
964
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
965
     * @throws Exception
966
     */
967 5
    public function miniRuleGetFromPricing(
968
        RequestOptions\MiniRuleGetFromPricingOptions $options,
969 5
        $messageOptions = []
970
    ) {
971 5
        $msgName = 'MiniRule_GetFromPricing';
972
973
        return $this->callMessage($msgName, $options, $messageOptions);
974
    }
975
976
    /**
977
     * MiniRule_GetFromETicket
978
     *
979
     * @param RequestOptions\MiniRuleGetFromETicketOptions $options
980
     * @param array $messageOptions (OPTIONAL)
981
     * @return Result
982
     * @throws Client\InvalidMessageException
983
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
984
     * @throws Exception
985 5
     */
986
    public function miniRuleGetFromETicket(
987
        RequestOptions\MiniRuleGetFromETicketOptions $options,
988
        $messageOptions = []
989 5
    ) {
990
        $msgName = 'MiniRule_GetFromETicket';
991 5
992
        return $this->callMessage($msgName, $options, $messageOptions);
993
    }
994
995
    /**
996
     * Info_EncodeDecodeCity
997
     *
998
     * @param RequestOptions\InfoEncodeDecodeCityOptions $options
999
     * @param array $messageOptions (OPTIONAL)
1000
     * @return Result
1001
     * @throws Client\InvalidMessageException
1002
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1003
     * @throws Exception
1004 5
     */
1005
    public function infoEncodeDecodeCity(RequestOptions\InfoEncodeDecodeCityOptions $options, $messageOptions = [])
1006
    {
1007
        $msgName = 'Info_EncodeDecodeCity';
1008 5
1009
        return $this->callMessage($msgName, $options, $messageOptions);
1010 5
    }
1011
1012
    /**
1013
     * PointOfRef_Search
1014
     *
1015
     * @param RequestOptions\PointOfRefSearchOptions $options
1016
     * @param array $messageOptions (OPTIONAL)
1017
     * @return Result
1018
     * @throws Client\InvalidMessageException
1019
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1020
     * @throws Exception
1021
     */
1022
    public function pointOfRefSearch(RequestOptions\PointOfRefSearchOptions $options, $messageOptions = [])
1023 5
    {
1024
        $msgName = 'PointOfRef_Search';
1025
1026
        return $this->callMessage($msgName, $options, $messageOptions);
1027 5
    }
1028
1029 5
1030
    /**
1031
     * Ticket_CreateTSTFromPricing
1032
     *
1033
     * @param RequestOptions\TicketCreateTstFromPricingOptions $options
1034
     * @param array $messageOptions (OPTIONAL)
1035
     * @return Result
1036
     * @throws Client\InvalidMessageException
1037
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1038
     * @throws Exception
1039
     */
1040
    public function ticketCreateTSTFromPricing(
1041
        RequestOptions\TicketCreateTstFromPricingOptions $options,
1042 5
        $messageOptions = []
1043
    ) {
1044
        $msgName = 'Ticket_CreateTSTFromPricing';
1045
1046 5
        return $this->callMessage($msgName, $options, $messageOptions);
1047
    }
1048 5
1049
    /**
1050
     * Ticket_CreateTSMFromPricing
1051
     *
1052
     * @param RequestOptions\TicketCreateTsmFromPricingOptions $options
1053
     * @param array $messageOptions (OPTIONAL)
1054
     * @return Result
1055
     * @throws Client\InvalidMessageException
1056
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1057
     * @throws Exception
1058
     */
1059
    public function ticketCreateTSMFromPricing(
1060
        RequestOptions\TicketCreateTsmFromPricingOptions $options,
1061 5
        $messageOptions = []
1062
    ) {
1063 5
        $msgName = 'Ticket_CreateTSMFromPricing';
1064
1065 5
        return $this->callMessage($msgName, $options, $messageOptions);
1066
    }
1067
1068
    /**
1069
     * Ticket_CreateTSMFareElement
1070
     *
1071
     * @param RequestOptions\TicketCreateTsmFareElOptions $options
1072
     * @param array $messageOptions (OPTIONAL)
1073
     * @return Result
1074
     * @throws Client\InvalidMessageException
1075
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1076
     * @throws Exception
1077
     */
1078 5
    public function ticketCreateTSMFareElement(
1079
        RequestOptions\TicketCreateTsmFareElOptions $options,
1080 5
        $messageOptions = []
1081
    ) {
1082 5
        $msgName = 'Ticket_CreateTSMFareElement';
1083
1084
        return $this->callMessage($msgName, $options, $messageOptions);
1085
    }
1086
1087
    /**
1088
     * Ticket_CreateTASF
1089
     *
1090
     * @param RequestOptions\TicketCreateTasfOptions $options
1091
     * @param array $messageOptions (OPTIONAL)
1092
     * @return Result
1093
     * @throws Client\InvalidMessageException
1094
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1095 5
     * @throws Exception
1096
     */
1097 5
    public function ticketCreateTASF(
1098
        RequestOptions\TicketCreateTasfOptions $options,
1099 5
        $messageOptions = []
1100
    ) {
1101
        $msgName = 'Ticket_CreateTASF';
1102
1103
        return $this->callMessage($msgName, $options, $messageOptions);
1104
    }
1105
1106
    /**
1107
     * Ticket_DeleteTST
1108
     *
1109
     * @param RequestOptions\TicketDeleteTstOptions $options
1110
     * @param array $messageOptions (OPTIONAL)
1111
     * @return Result
1112 5
     * @throws Client\InvalidMessageException
1113
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1114 5
     * @throws Exception
1115
     */
1116 5
    public function ticketDeleteTST(RequestOptions\TicketDeleteTstOptions $options, $messageOptions = [])
1117
    {
1118
        $msgName = 'Ticket_DeleteTST';
1119
1120
        return $this->callMessage($msgName, $options, $messageOptions);
1121
    }
1122
1123
    /**
1124
     * Ticket_DeleteTSMP
1125
     *
1126
     * @param RequestOptions\TicketDeleteTsmpOptions $options
1127
     * @param array $messageOptions (OPTIONAL)
1128
     * @return Result
1129 5
     * @throws Client\InvalidMessageException
1130
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1131
     * @throws Exception
1132
     */
1133 5
    public function ticketDeleteTSMP(RequestOptions\TicketDeleteTsmpOptions $options, $messageOptions = [])
1134
    {
1135 5
        $msgName = 'Ticket_DeleteTSMP';
1136
1137
        return $this->callMessage($msgName, $options, $messageOptions);
1138
    }
1139
1140
    /**
1141
     * Ticket_DisplayTST
1142
     *
1143
     * @param RequestOptions\TicketDisplayTstOptions $options
1144
     * @param array $messageOptions (OPTIONAL)
1145
     * @return Result
1146
     * @throws Client\InvalidMessageException
1147
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1148 5
     * @throws Exception
1149
     */
1150
    public function ticketDisplayTST(RequestOptions\TicketDisplayTstOptions $options, $messageOptions = [])
1151
    {
1152 5
        $msgName = 'Ticket_DisplayTST';
1153
1154 5
        return $this->callMessage($msgName, $options, $messageOptions);
1155
    }
1156
1157
    /**
1158
     * Ticket_DisplayTSMP
1159
     *
1160
     * @param RequestOptions\TicketDisplayTsmpOptions $options
1161
     * @param array $messageOptions (OPTIONAL)
1162
     * @return Result
1163
     * @throws Client\InvalidMessageException
1164
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1165
     * @throws Exception
1166
     */
1167 5
    public function ticketDisplayTSMP(RequestOptions\TicketDisplayTsmpOptions $options, $messageOptions = [])
1168
    {
1169
        $msgName = 'Ticket_DisplayTSMP';
1170
1171 5
        return $this->callMessage($msgName, $options, $messageOptions);
1172
    }
1173 5
1174
    /**
1175
     * Ticket_RetrieveListOfTSM
1176
     *
1177
     * @param RequestOptions\TicketRetrieveListOfTSMOptions $options
1178
     * @param array $messageOptions (OPTIONAL)
1179
     * @return Result
1180
     * @throws Client\InvalidMessageException
1181
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1182
     * @throws Exception
1183
     */
1184
    public function ticketRetrieveListOfTSM(
1185
        RequestOptions\TicketRetrieveListOfTSMOptions $options,
1186 5
        $messageOptions = []
1187
    ) {
1188
        $msgName = 'Ticket_RetrieveListOfTSM';
1189
1190 5
        return $this->callMessage($msgName, $options, $messageOptions);
1191
    }
1192 5
1193
    /**
1194
     * Ticket_DisplayTSMFareElement
1195
     *
1196
     * @param RequestOptions\TicketDisplayTsmFareElOptions $options
1197
     * @param array $messageOptions (OPTIONAL)
1198
     * @return Result
1199
     * @throws Client\InvalidMessageException
1200
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1201
     * @throws Exception
1202
     */
1203
    public function ticketDisplayTSMFareElement(
1204
        RequestOptions\TicketDisplayTsmFareElOptions $options,
1205 5
        $messageOptions = []
1206
    ) {
1207
        $msgName = 'Ticket_DisplayTSMFareElement';
1208
1209 5
        return $this->callMessage($msgName, $options, $messageOptions);
1210
    }
1211 5
1212
    /**
1213
     * Ticket_CheckEligibility
1214
     *
1215
     * @param RequestOptions\TicketCheckEligibilityOptions $options
1216
     * @param array $messageOptions (OPTIONAL)
1217
     * @return Result
1218
     * @throws Client\InvalidMessageException
1219
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1220
     * @throws Exception
1221
     */
1222
    public function ticketCheckEligibility(
1223
        RequestOptions\TicketCheckEligibilityOptions $options,
1224 5
        $messageOptions = []
1225
    ) {
1226
        $msgName = 'Ticket_CheckEligibility';
1227
1228 5
        return $this->callMessage($msgName, $options, $messageOptions);
1229
    }
1230 5
1231
    /**
1232
     * Ticket_ATCShopperMasterPricerTravelBoardSearch
1233
     *
1234
     * @param RequestOptions\TicketAtcShopperMpTbSearchOptions $options
1235
     * @param array $messageOptions (OPTIONAL)
1236
     * @return Result
1237
     * @throws Client\InvalidMessageException
1238
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1239
     * @throws Exception
1240
     */
1241
    public function ticketAtcShopperMasterPricerTravelBoardSearch(
1242
        RequestOptions\TicketAtcShopperMpTbSearchOptions $options,
1243 5
        $messageOptions = []
1244
    ) {
1245
        $msgName = 'Ticket_ATCShopperMasterPricerTravelBoardSearch';
1246
1247 5
        return $this->callMessage($msgName, $options, $messageOptions);
1248
    }
1249 5
1250
    /**
1251
     * Ticket_ATCShopperMasterPricerCalendar
1252
     *
1253
     * @param RequestOptions\TicketAtcShopperMpCalendarOptions $options
1254
     * @param array $messageOptions (OPTIONAL)
1255
     * @return Result
1256
     * @throws Client\InvalidMessageException
1257
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1258
     * @throws Exception
1259
     */
1260
    public function ticketAtcShopperMasterPricerCalendar(
1261
        RequestOptions\TicketAtcShopperMpCalendarOptions $options,
1262 5
        $messageOptions = []
1263
    ) {
1264 5
        $msgName = 'Ticket_ATCShopperMasterPricerCalendar';
1265
1266 5
        return $this->callMessage($msgName, $options, $messageOptions);
1267
    }
1268
1269
    /**
1270
     * Ticket_RepricePNRWithBookingClass
1271
     *
1272
     * @param RequestOptions\TicketRepricePnrWithBookingClassOptions $options
1273
     * @param array $messageOptions (OPTIONAL)
1274
     * @return Result
1275
     * @throws Client\InvalidMessageException
1276
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1277
     * @throws Exception
1278
     */
1279 5
    public function ticketRepricePnrWithBookingClass(
1280
        RequestOptions\TicketRepricePnrWithBookingClassOptions $options,
1281 5
        $messageOptions = []
1282
    ) {
1283 5
        $msgName = 'Ticket_RepricePNRWithBookingClass';
1284
1285
        return $this->callMessage($msgName, $options, $messageOptions);
1286
    }
1287
1288
    /**
1289
     * Ticket_CancelDocument
1290
     *
1291
     * @param RequestOptions\TicketCancelDocumentOptions $options
1292
     * @param array $messageOptions (OPTIONAL)
1293
     * @return Result
1294
     * @throws Client\InvalidMessageException
1295
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1296 5
     * @throws Exception
1297
     */
1298
    public function ticketCancelDocument(
1299
        RequestOptions\TicketCancelDocumentOptions $options,
1300 5
        $messageOptions = []
1301
    ) {
1302 5
        $msgName = 'Ticket_CancelDocument';
1303
1304
        return $this->callMessage($msgName, $options, $messageOptions);
1305
    }
1306
1307
    /**
1308
     * Ticket_ReissueConfirmedPricing
1309
     *
1310
     * @param RequestOptions\TicketReissueConfirmedPricingOptions $options
1311
     * @param array $messageOptions (OPTIONAL)
1312
     * @return Result
1313
     * @throws Client\InvalidMessageException
1314
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1315 5
     * @throws Exception
1316
     */
1317
    public function ticketReissueConfirmedPricing(
1318
        RequestOptions\TicketReissueConfirmedPricingOptions $options,
1319 5
        $messageOptions = []
1320
    ) {
1321 5
        $msgName = 'Ticket_ReissueConfirmedPricing';
1322
1323
        return $this->callMessage($msgName, $options, $messageOptions);
1324
    }
1325
1326
    /**
1327
     * Ticket_ProcessEDoc
1328
     *
1329
     * @param RequestOptions\TicketProcessEDocOptions $options
1330
     * @param array $messageOptions (OPTIONAL)
1331
     * @return Result
1332
     * @throws Client\InvalidMessageException
1333
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1334 10
     * @throws Exception
1335
     */
1336
    public function ticketProcessEDoc(RequestOptions\TicketProcessEDocOptions $options, $messageOptions = [])
1337
    {
1338 10
        $msgName = 'Ticket_ProcessEDoc';
1339
1340 10
        return $this->callMessage($msgName, $options, $messageOptions);
1341
    }
1342
1343
    /**
1344
     * Ticket_ProcessETicket
1345
     *
1346
     * @param RequestOptions\TicketProcessETicketOptions $options
1347
     * @param array $messageOptions (OPTIONAL)
1348
     * @return Result
1349
     * @throws Client\InvalidMessageException
1350
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1351
     * @throws Exception
1352
     */
1353 5
    public function ticketProcessETicket(RequestOptions\TicketProcessETicketOptions $options, $messageOptions = [])
1354
    {
1355
        $msgName = 'Ticket_ProcessETicket';
1356
1357 5
        return $this->callMessage($msgName, $options, $messageOptions);
1358
    }
1359 5
1360
    /**
1361
     * DocIssuance_IssueTicket
1362
     *
1363
     * @param RequestOptions\DocIssuanceIssueTicketOptions $options
1364
     * @param array $messageOptions (OPTIONAL)
1365
     * @return Result
1366
     * @throws Client\InvalidMessageException
1367
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1368
     * @throws Exception
1369
     */
1370
    public function docIssuanceIssueTicket(
1371
        RequestOptions\DocIssuanceIssueTicketOptions $options,
1372 5
        $messageOptions = []
1373
    ) {
1374
        $msgName = 'DocIssuance_IssueTicket';
1375
1376 5
        return $this->callMessage($msgName, $options, $messageOptions);
1377
    }
1378 5
1379
    /**
1380
     * DocIssuance_IssueMiscellaneousDocuments
1381
     *
1382
     * @param RequestOptions\DocIssuanceIssueMiscDocOptions $options
1383
     * @param array $messageOptions (OPTIONAL)
1384
     * @return Result
1385
     * @throws Client\InvalidMessageException
1386
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1387
     * @throws Exception
1388
     */
1389
    public function docIssuanceIssueMiscellaneousDocuments(
1390
        RequestOptions\DocIssuanceIssueMiscDocOptions $options,
1391 5
        $messageOptions = []
1392
    ) {
1393
        $msgName = 'DocIssuance_IssueMiscellaneousDocuments';
1394
1395 5
        return $this->callMessage($msgName, $options, $messageOptions);
1396
    }
1397 5
1398
    /**
1399
     * DocIssuance_IssueCombined
1400
     *
1401
     * @param RequestOptions\DocIssuanceIssueCombinedOptions $options
1402
     * @param array $messageOptions (OPTIONAL)
1403
     * @return Result
1404
     * @throws Client\InvalidMessageException
1405
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1406
     * @throws Exception
1407
     */
1408
    public function docIssuanceIssueCombined(
1409
        RequestOptions\DocIssuanceIssueCombinedOptions $options,
1410 5
        $messageOptions = []
1411
    ) {
1412
        $msgName = 'DocIssuance_IssueCombined';
1413
1414 5
        return $this->callMessage($msgName, $options, $messageOptions);
1415
    }
1416 5
1417
    /**
1418
     * DocRefund_InitRefund
1419
     *
1420
     * @param RequestOptions\DocRefundInitRefundOptions $options
1421
     * @param array $messageOptions (OPTIONAL)
1422
     * @return Result
1423
     * @throws Client\InvalidMessageException
1424
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1425
     * @throws Exception
1426
     */
1427
    public function docRefundInitRefund(
1428
        RequestOptions\DocRefundInitRefundOptions $options,
1429 5
        $messageOptions = []
1430
    ) {
1431
        $msgName = 'DocRefund_InitRefund';
1432
1433 5
        return $this->callMessage($msgName, $options, $messageOptions);
1434
    }
1435 5
1436
    /**
1437
     * DocRefund_IgnoreRefund
1438
     *
1439
     * @param RequestOptions\DocRefundIgnoreRefundOptions $options
1440
     * @param array $messageOptions (OPTIONAL)
1441
     * @return Result
1442
     * @throws Client\InvalidMessageException
1443
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1444
     * @throws Exception
1445
     */
1446
    public function docRefundIgnoreRefund(
1447
        RequestOptions\DocRefundIgnoreRefundOptions $options,
1448 5
        $messageOptions = []
1449
    ) {
1450
        $msgName = 'DocRefund_IgnoreRefund';
1451
1452 5
        return $this->callMessage($msgName, $options, $messageOptions);
1453
    }
1454 5
1455
    /**
1456
     * DocRefund_UpdateRefund
1457
     *
1458
     * @param RequestOptions\DocRefundUpdateRefundOptions $options
1459
     * @param array $messageOptions (OPTIONAL)
1460
     * @return Result
1461
     * @throws Client\InvalidMessageException
1462
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1463
     * @throws Exception
1464
     */
1465
    public function docRefundUpdateRefund(
1466
        RequestOptions\DocRefundUpdateRefundOptions $options,
1467 5
        $messageOptions = []
1468
    ) {
1469
        $msgName = 'DocRefund_UpdateRefund';
1470
1471 5
        return $this->callMessage($msgName, $options, $messageOptions);
1472
    }
1473 5
1474
    /**
1475
     * DocRefund_ProcessRefund
1476
     *
1477
     * @param RequestOptions\DocRefundProcessRefundOptions $options
1478
     * @param array $messageOptions (OPTIONAL)
1479
     * @return Result
1480
     * @throws Client\InvalidMessageException
1481
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1482
     * @throws Exception
1483
     */
1484
    public function docRefundProcessRefund(
1485
        RequestOptions\DocRefundProcessRefundOptions $options,
1486 5
        $messageOptions = []
1487
    ) {
1488 5
        $msgName = 'DocRefund_ProcessRefund';
1489
1490 5
        return $this->callMessage($msgName, $options, $messageOptions);
1491
    }
1492
1493
    /**
1494
     * Ticket_InitRefund
1495
     *
1496
     * @param RequestOptions\TicketInitRefundOptions $options
1497
     * @param array $messageOptions (OPTIONAL)
1498
     * @return Result
1499
     * @throws Client\InvalidMessageException
1500
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1501
     * @throws Exception
1502
     */
1503
    public function ticketInitRefund(
1504 5
        RequestOptions\TicketInitRefundOptions $options,
1505
        $messageOptions = []
1506 5
    ) {
1507
        $msgName = 'Ticket_InitRefund';
1508 5
1509
        return $this->callMessage($msgName, $options, $messageOptions);
1510
    }
1511
1512
    /**
1513
     * Ticket_IgnoreRefund
1514
     *
1515
     * @param RequestOptions\TicketIgnoreRefundOptions $options
1516
     * @param array $messageOptions (OPTIONAL)
1517
     * @return Result
1518
     * @throws Client\InvalidMessageException
1519
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1520
     * @throws Exception
1521 5
     */
1522
    public function ticketIgnoreRefund(
1523
        RequestOptions\TicketIgnoreRefundOptions $options,
1524
        $messageOptions = []
1525 5
    ) {
1526
        $msgName = 'Ticket_IgnoreRefund';
1527 5
1528
        return $this->callMessage($msgName, $options, $messageOptions);
1529
    }
1530
1531
    /**
1532
     * Ticket_ProcessRefund
1533
     *
1534
     * @param RequestOptions\TicketProcessRefundOptions $options
1535
     * @param array $messageOptions (OPTIONAL)
1536
     * @return Result
1537
     * @throws Client\InvalidMessageException
1538
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1539
     * @throws Exception
1540 5
     */
1541
    public function ticketProcessRefund(
1542
        RequestOptions\TicketProcessRefundOptions $options,
1543
        $messageOptions = []
1544 5
    ) {
1545
        $msgName = 'Ticket_ProcessRefund';
1546 5
1547
        return $this->callMessage($msgName, $options, $messageOptions);
1548
    }
1549
1550
    /**
1551
     * Ticket_UpdateRefund
1552
     *
1553
     * @param RequestOptions\TicketUpdateRefundOptions $options
1554
     * @param array $messageOptions (OPTIONAL)
1555
     * @return Result
1556
     * @throws Client\InvalidMessageException
1557
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1558
     * @throws Exception
1559 5
     */
1560
    public function ticketUpdateRefund(
1561
        RequestOptions\TicketUpdateRefundOptions $options,
1562
        $messageOptions = []
1563 5
    ) {
1564
        $msgName = 'Ticket_UpdateRefund';
1565 5
1566
        return $this->callMessage($msgName, $options, $messageOptions);
1567
    }
1568
1569
    /**
1570
     * FOP_CreateFormOfPayment
1571
     *
1572
     * @param RequestOptions\FopCreateFopOptions $options
1573
     * @param array $messageOptions (OPTIONAL)
1574
     * @return Result
1575
     * @throws Client\InvalidMessageException
1576
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1577
     * @throws Exception
1578 5
     */
1579
    public function fopCreateFormOfPayment(RequestOptions\FopCreateFopOptions $options, $messageOptions = [])
1580
    {
1581
        $msgName = 'FOP_CreateFormOfPayment';
1582 5
1583
        return $this->callMessage($msgName, $options, $messageOptions);
1584 5
    }
1585
1586
1587
    /**
1588
     * FOP_CreateFormOfPayment
1589
     *
1590
     * @param RequestOptions\FopValidateFopOptions $options
1591
     * @param array $messageOptions (OPTIONAL)
1592
     * @return Result
1593
     * @throws Client\InvalidMessageException
1594
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1595
     * @throws Exception
1596
     */
1597 5
    public function fopValidateFOP(RequestOptions\FopValidateFopOptions $options, $messageOptions = [])
1598
    {
1599
        $msgName = 'FOP_ValidateFOP';
1600
1601 5
        return $this->callMessage($msgName, $options, $messageOptions);
1602
    }
1603 5
1604
    /**
1605
     * PriceXplorer_ExtremeSearch
1606
     *
1607
     * @param RequestOptions\PriceXplorerExtremeSearchOptions $options
1608
     * @param array $messageOptions (OPTIONAL)
1609
     * @return Result
1610
     * @throws Client\InvalidMessageException
1611
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1612
     * @throws Exception
1613
     */
1614
    public function priceXplorerExtremeSearch(
1615
        RequestOptions\PriceXplorerExtremeSearchOptions $options,
1616 5
        $messageOptions = []
1617
    ) {
1618
        $msgName = 'PriceXplorer_ExtremeSearch';
1619
1620 5
        return $this->callMessage($msgName, $options, $messageOptions);
1621
    }
1622 5
1623
    /**
1624
     * SalesReports_DisplayQueryReport
1625
     *
1626
     * @param RequestOptions\SalesReportsDisplayQueryReportOptions $options
1627
     * @param array $messageOptions (OPTIONAL)
1628
     * @return Result
1629
     * @throws Client\InvalidMessageException
1630
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1631
     * @throws Exception
1632
     */
1633
    public function salesReportsDisplayQueryReport(
1634
        RequestOptions\SalesReportsDisplayQueryReportOptions $options,
1635
        $messageOptions = []
1636
    ) {
1637
        $msgName = 'SalesReports_DisplayQueryReport';
1638
1639
        return $this->callMessage($msgName, $options, $messageOptions);
1640 420
    }
1641
1642 420
    /**
1643
     * Service_IntegratedPricing
1644 420
     *
1645
     * @param RequestOptions\ServiceIntegratedPricingOptions $options
1646 420
     * @param array $messageOptions (OPTIONAL)
1647 420
     * @return Result
1648 420
     * @throws Client\InvalidMessageException
1649 420
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1650 168
     * @throws Exception
1651 168
     */
1652 168
    public function serviceIntegratedPricing(
1653 168
        RequestOptions\ServiceIntegratedPricingOptions $options,
1654
        $messageOptions = []
1655 420
    ) {
1656 420
        $msgName = 'Service_IntegratedPricing';
1657 168
1658 168
        return $this->callMessage($msgName, $options, $messageOptions);
1659
    }
1660 420
1661 5
    /**
1662 2
     * Service_IntegratedCatalogue
1663
     *
1664 420
     * @param RequestOptions\ServiceIntegratedCatalogueOptions $options
1665
     * @param array $messageOptions (OPTIONAL)
1666
     * @return Result
1667
     * @throws Client\InvalidMessageException
1668
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1669
     * @throws Exception
1670
     */
1671
    public function serviceIntegratedCatalogue(
1672
        RequestOptions\ServiceIntegratedCatalogueOptions $options,
1673
        $messageOptions = []
1674
    ) {
1675
        $msgName = 'Service_IntegratedCatalogue';
1676
1677
        return $this->callMessage($msgName, $options, $messageOptions);
1678
    }
1679 450
1680
    /**
1681
     * Service_BookPriceService
1682 450
     *
1683 450
     * @param RequestOptions\ServiceBookPriceServiceOptions $options
1684 180
     * @param array $messageOptions (OPTIONAL)
1685
     * @return Result
1686 450
     * @throws Client\InvalidMessageException
1687 5
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1688 2
     * @throws Exception
1689
     */
1690 450
    public function serviceBookPriceService(
1691 15
        RequestOptions\ServiceBookPriceServiceOptions $options,
1692 6
        $messageOptions = []
1693
    ) {
1694 450
        $msgName = 'Service_BookPriceService';
1695
1696
        return $this->callMessage($msgName, $options, $messageOptions);
1697
    }
1698
1699
    /**
1700
     * SalesReports_DisplayorSummarizedReport
1701
     *
1702
     * @param RequestOptions\SalesReportsDisplayDailyOrSummarizedReportOptions $options
1703
     * @param array $messageOptions (OPTIONAL)
1704
     * @return Result
1705
     * @throws Client\InvalidMessageException
1706
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1707
     * @throws Exception
1708
     */
1709
    public function salesReportsDisplayDailyOrSummarizedReport(
1710
        RequestOptions\SalesReportsDisplayDailyOrSummarizedReportOptions $options,
1711
        $messageOptions = []
1712
    ) {
1713
        $msgName = 'SalesReports_DisplayDailyOrSummarizedReport';
1714
1715
        return $this->callMessage($msgName, $options, $messageOptions);
1716
    }
1717
1718
    /**
1719
     * SalesReports_DisplayNetRemitReport
1720
     *
1721
     * @param RequestOptions\SalesReportsDisplayNetRemitReportOptions $options
1722
     * @param array $messageOptions (OPTIONAL)
1723
     * @return Result
1724
     * @throws Client\InvalidMessageException
1725
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1726
     * @throws Exception
1727
     */
1728
    public function salesReportsDisplayNetRemitReport(
1729
        RequestOptions\SalesReportsDisplayNetRemitReportOptions $options,
1730
        $messageOptions = []
1731
    ) {
1732
        $msgName = 'SalesReports_DisplayNetRemitReport';
1733
1734
        return $this->callMessage($msgName, $options, $messageOptions);
1735
    }
1736
1737
    /**
1738
     * Service_StandaloneCatalogue
1739
     *
1740
     * @param RequestOptions\ServiceStandaloneCatalogueOptions $options
1741
     * @param array $messageOptions
1742
     *            (OPTIONAL)
1743
     * @return Result
1744
     * @throws Client\InvalidMessageException
1745
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1746
     * @throws Exception
1747
     */
1748
    public function serviceStandaloneCatalogue(RequestOptions\ServiceStandaloneCatalogueOptions $options, $messageOptions = [])
1749
    {
1750
        $msgName = 'Service_StandaloneCatalogue';
1751
1752
        return $this->callMessage($msgName, $options, $messageOptions);
1753
    }
1754
1755
    /**
1756
     * Call a message with the given parameters
1757
     *
1758
     * @param string $messageName
1759
     * @param RequestOptions\RequestOptionsInterface $options
1760
     * @param array $messageOptions
1761
     * @param bool $endSession
1762
     * @return Result
1763
     * @throws Client\Exception
1764
     * @throws Client\Struct\InvalidArgumentException
1765
     * @throws Client\InvalidMessageException
1766
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1767
     * @throws \RuntimeException
1768
     * @throws \InvalidArgumentException
1769
     */
1770
    protected function callMessage($messageName, $options, $messageOptions, $endSession = false)
1771
    {
1772
        $messageOptions = $this->makeMessageOptions($messageOptions, $endSession);
1773
1774
        $this->lastMessage = $messageName;
1775
1776
        $sendResult = $this->sessionHandler->sendMessage(
1777
            $messageName,
1778
            $this->requestCreator->createRequest(
1779
                $messageName,
1780
                $options
1781
            ),
1782
            $messageOptions
1783
        );
1784
1785
        $response = $this->responseHandler->analyzeResponse(
1786
            $sendResult,
1787
            $messageName
1788
        );
1789
1790
        if ($messageOptions['returnXml'] === false) {
1791
            $response->responseXml = null;
1792
        }
1793
1794
        return $response;
1795
    }
1796
1797
    /**
1798
     * Make message options
1799
     *
1800
     * Message options are meta options when sending a message to the amadeus web services
1801
     * - 'endSession' (if stateful) : should we end the current session after sending this call?
1802
     * - 'returnXml' : Should we return the XML string in the Result::responseXml property?
1803
     *   (this overrides the default setting returnXml in the Amadeus\Client\Params for a single message)
1804
     *
1805
     * @param array $incoming The Message options chosen by the caller - if any.
1806
     * @param bool $endSession Switch if you want to terminate the current session after making the call.
1807
     * @return array
1808
     */
1809
    protected function makeMessageOptions(array $incoming, $endSession = false)
1810
    {
1811
        $options = [
1812
            'endSession' => $endSession,
1813
            'returnXml' => $this->returnResultXml
1814
        ];
1815
1816
        if (array_key_exists('endSession', $incoming)) {
1817
            $options['endSession'] = $incoming['endSession'];
1818
        }
1819
1820
        if (array_key_exists('returnXml', $incoming)) {
1821
            $options['returnXml'] = $incoming['returnXml'];
1822
        }
1823
1824
        return $options;
1825
    }
1826
}
1827