Passed
Push — master ( 3609af...aa07f3 )
by Dieter
05:07
created

Client::ticketUpdateRefund()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 8
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-dev";
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_GetFromPricingRec
923
     *
924
     * @param RequestOptions\MiniRuleGetFromPricingRecOptions $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 miniRuleGetFromPricingRec(
932
        RequestOptions\MiniRuleGetFromPricingRecOptions $options,
933
        $messageOptions = []
934
    ) {
935 5
        $msgName = 'MiniRule_GetFromPricingRec';
936
937 5
        return $this->callMessage($msgName, $options, $messageOptions);
938
    }
939
940
    /**
941
     * MiniRule_GetFromPricing
942
     *
943
     * @param RequestOptions\MiniRuleGetFromPricingOptions $options
944
     * @param array $messageOptions (OPTIONAL)
945
     * @return Result
946
     * @throws Client\InvalidMessageException
947
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
948
     * @throws Exception
949
     */
950 5
    public function miniRuleGetFromPricing(
951
        RequestOptions\MiniRuleGetFromPricingOptions $options,
952 5
        $messageOptions = []
953
    ) {
954 5
        $msgName = 'MiniRule_GetFromPricing';
955
956
        return $this->callMessage($msgName, $options, $messageOptions);
957
    }
958
959
    /**
960
     * MiniRule_GetFromETicket
961
     *
962
     * @param RequestOptions\MiniRuleGetFromETicketOptions $options
963
     * @param array $messageOptions (OPTIONAL)
964
     * @return Result
965
     * @throws Client\InvalidMessageException
966
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
967 5
     * @throws Exception
968
     */
969 5
    public function miniRuleGetFromETicket(
970
        RequestOptions\MiniRuleGetFromETicketOptions $options,
971 5
        $messageOptions = []
972
    ) {
973
        $msgName = 'MiniRule_GetFromETicket';
974
975
        return $this->callMessage($msgName, $options, $messageOptions);
976
    }
977
978
    /**
979
     * Info_EncodeDecodeCity
980
     *
981
     * @param RequestOptions\InfoEncodeDecodeCityOptions $options
982
     * @param array $messageOptions (OPTIONAL)
983
     * @return Result
984
     * @throws Client\InvalidMessageException
985 5
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
986
     * @throws Exception
987
     */
988
    public function infoEncodeDecodeCity(RequestOptions\InfoEncodeDecodeCityOptions $options, $messageOptions = [])
989 5
    {
990
        $msgName = 'Info_EncodeDecodeCity';
991 5
992
        return $this->callMessage($msgName, $options, $messageOptions);
993
    }
994
995
    /**
996
     * PointOfRef_Search
997
     *
998
     * @param RequestOptions\PointOfRefSearchOptions $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 pointOfRefSearch(RequestOptions\PointOfRefSearchOptions $options, $messageOptions = [])
1006
    {
1007
        $msgName = 'PointOfRef_Search';
1008 5
1009
        return $this->callMessage($msgName, $options, $messageOptions);
1010 5
    }
1011
1012
1013
    /**
1014
     * Ticket_CreateTSTFromPricing
1015
     *
1016
     * @param RequestOptions\TicketCreateTstFromPricingOptions $options
1017
     * @param array $messageOptions (OPTIONAL)
1018
     * @return Result
1019
     * @throws Client\InvalidMessageException
1020
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1021
     * @throws Exception
1022
     */
1023 5
    public function ticketCreateTSTFromPricing(
1024
        RequestOptions\TicketCreateTstFromPricingOptions $options,
1025
        $messageOptions = []
1026
    ) {
1027 5
        $msgName = 'Ticket_CreateTSTFromPricing';
1028
1029 5
        return $this->callMessage($msgName, $options, $messageOptions);
1030
    }
1031
1032
    /**
1033
     * Ticket_CreateTSMFromPricing
1034
     *
1035
     * @param RequestOptions\TicketCreateTsmFromPricingOptions $options
1036
     * @param array $messageOptions (OPTIONAL)
1037
     * @return Result
1038
     * @throws Client\InvalidMessageException
1039
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1040
     * @throws Exception
1041
     */
1042 5
    public function ticketCreateTSMFromPricing(
1043
        RequestOptions\TicketCreateTsmFromPricingOptions $options,
1044
        $messageOptions = []
1045
    ) {
1046 5
        $msgName = 'Ticket_CreateTSMFromPricing';
1047
1048 5
        return $this->callMessage($msgName, $options, $messageOptions);
1049
    }
1050
1051
    /**
1052
     * Ticket_CreateTSMFareElement
1053
     *
1054
     * @param RequestOptions\TicketCreateTsmFareElOptions $options
1055
     * @param array $messageOptions (OPTIONAL)
1056
     * @return Result
1057
     * @throws Client\InvalidMessageException
1058
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1059
     * @throws Exception
1060
     */
1061 5
    public function ticketCreateTSMFareElement(
1062
        RequestOptions\TicketCreateTsmFareElOptions $options,
1063 5
        $messageOptions = []
1064
    ) {
1065 5
        $msgName = 'Ticket_CreateTSMFareElement';
1066
1067
        return $this->callMessage($msgName, $options, $messageOptions);
1068
    }
1069
1070
    /**
1071
     * Ticket_CreateTASF
1072
     *
1073
     * @param RequestOptions\TicketCreateTasfOptions $options
1074
     * @param array $messageOptions (OPTIONAL)
1075
     * @return Result
1076
     * @throws Client\InvalidMessageException
1077
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1078 5
     * @throws Exception
1079
     */
1080 5
    public function ticketCreateTASF(
1081
        RequestOptions\TicketCreateTasfOptions $options,
1082 5
        $messageOptions = []
1083
    ) {
1084
        $msgName = 'Ticket_CreateTASF';
1085
1086
        return $this->callMessage($msgName, $options, $messageOptions);
1087
    }
1088
1089
    /**
1090
     * Ticket_DeleteTST
1091
     *
1092
     * @param RequestOptions\TicketDeleteTstOptions $options
1093
     * @param array $messageOptions (OPTIONAL)
1094
     * @return Result
1095 5
     * @throws Client\InvalidMessageException
1096
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1097 5
     * @throws Exception
1098
     */
1099 5
    public function ticketDeleteTST(RequestOptions\TicketDeleteTstOptions $options, $messageOptions = [])
1100
    {
1101
        $msgName = 'Ticket_DeleteTST';
1102
1103
        return $this->callMessage($msgName, $options, $messageOptions);
1104
    }
1105
1106
    /**
1107
     * Ticket_DeleteTSMP
1108
     *
1109
     * @param RequestOptions\TicketDeleteTsmpOptions $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 ticketDeleteTSMP(RequestOptions\TicketDeleteTsmpOptions $options, $messageOptions = [])
1117
    {
1118
        $msgName = 'Ticket_DeleteTSMP';
1119
1120
        return $this->callMessage($msgName, $options, $messageOptions);
1121
    }
1122
1123
    /**
1124
     * Ticket_DisplayTST
1125
     *
1126
     * @param RequestOptions\TicketDisplayTstOptions $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 ticketDisplayTST(RequestOptions\TicketDisplayTstOptions $options, $messageOptions = [])
1134
    {
1135 5
        $msgName = 'Ticket_DisplayTST';
1136
1137
        return $this->callMessage($msgName, $options, $messageOptions);
1138
    }
1139
1140
    /**
1141
     * Ticket_DisplayTSMP
1142
     *
1143
     * @param RequestOptions\TicketDisplayTsmpOptions $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 ticketDisplayTSMP(RequestOptions\TicketDisplayTsmpOptions $options, $messageOptions = [])
1151
    {
1152 5
        $msgName = 'Ticket_DisplayTSMP';
1153
1154 5
        return $this->callMessage($msgName, $options, $messageOptions);
1155
    }
1156
1157
    /**
1158
     * Ticket_RetrieveListOfTSM
1159
     *
1160
     * @param RequestOptions\TicketRetrieveListOfTSMOptions $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 ticketRetrieveListOfTSM(
1168
        RequestOptions\TicketRetrieveListOfTSMOptions $options,
1169
        $messageOptions = []
1170
    ) {
1171 5
        $msgName = 'Ticket_RetrieveListOfTSM';
1172
1173 5
        return $this->callMessage($msgName, $options, $messageOptions);
1174
    }
1175
1176
    /**
1177
     * Ticket_DisplayTSMFareElement
1178
     *
1179
     * @param RequestOptions\TicketDisplayTsmFareElOptions $options
1180
     * @param array $messageOptions (OPTIONAL)
1181
     * @return Result
1182
     * @throws Client\InvalidMessageException
1183
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1184
     * @throws Exception
1185
     */
1186 5
    public function ticketDisplayTSMFareElement(
1187
        RequestOptions\TicketDisplayTsmFareElOptions $options,
1188
        $messageOptions = []
1189
    ) {
1190 5
        $msgName = 'Ticket_DisplayTSMFareElement';
1191
1192 5
        return $this->callMessage($msgName, $options, $messageOptions);
1193
    }
1194
1195
    /**
1196
     * Ticket_CheckEligibility
1197
     *
1198
     * @param RequestOptions\TicketCheckEligibilityOptions $options
1199
     * @param array $messageOptions (OPTIONAL)
1200
     * @return Result
1201
     * @throws Client\InvalidMessageException
1202
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1203
     * @throws Exception
1204
     */
1205 5
    public function ticketCheckEligibility(
1206
        RequestOptions\TicketCheckEligibilityOptions $options,
1207
        $messageOptions = []
1208
    ) {
1209 5
        $msgName = 'Ticket_CheckEligibility';
1210
1211 5
        return $this->callMessage($msgName, $options, $messageOptions);
1212
    }
1213
1214
    /**
1215
     * Ticket_ATCShopperMasterPricerTravelBoardSearch
1216
     *
1217
     * @param RequestOptions\TicketAtcShopperMpTbSearchOptions $options
1218
     * @param array $messageOptions (OPTIONAL)
1219
     * @return Result
1220
     * @throws Client\InvalidMessageException
1221
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1222
     * @throws Exception
1223
     */
1224 5
    public function ticketAtcShopperMasterPricerTravelBoardSearch(
1225
        RequestOptions\TicketAtcShopperMpTbSearchOptions $options,
1226
        $messageOptions = []
1227
    ) {
1228 5
        $msgName = 'Ticket_ATCShopperMasterPricerTravelBoardSearch';
1229
1230 5
        return $this->callMessage($msgName, $options, $messageOptions);
1231
    }
1232
1233
    /**
1234
     * Ticket_ATCShopperMasterPricerCalendar
1235
     *
1236
     * @param RequestOptions\TicketAtcShopperMpCalendarOptions $options
1237
     * @param array $messageOptions (OPTIONAL)
1238
     * @return Result
1239
     * @throws Client\InvalidMessageException
1240
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1241
     * @throws Exception
1242
     */
1243 5
    public function ticketAtcShopperMasterPricerCalendar(
1244
        RequestOptions\TicketAtcShopperMpCalendarOptions $options,
1245
        $messageOptions = []
1246
    ) {
1247 5
        $msgName = 'Ticket_ATCShopperMasterPricerCalendar';
1248
1249 5
        return $this->callMessage($msgName, $options, $messageOptions);
1250
    }
1251
1252
    /**
1253
     * Ticket_RepricePNRWithBookingClass
1254
     *
1255
     * @param RequestOptions\TicketRepricePnrWithBookingClassOptions $options
1256
     * @param array $messageOptions (OPTIONAL)
1257
     * @return Result
1258
     * @throws Client\InvalidMessageException
1259
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1260
     * @throws Exception
1261
     */
1262 5
    public function ticketRepricePnrWithBookingClass(
1263
        RequestOptions\TicketRepricePnrWithBookingClassOptions $options,
1264 5
        $messageOptions = []
1265
    ) {
1266 5
        $msgName = 'Ticket_RepricePNRWithBookingClass';
1267
1268
        return $this->callMessage($msgName, $options, $messageOptions);
1269
    }
1270
1271
    /**
1272
     * Ticket_CancelDocument
1273
     *
1274
     * @param RequestOptions\TicketCancelDocumentOptions $options
1275
     * @param array $messageOptions (OPTIONAL)
1276
     * @return Result
1277
     * @throws Client\InvalidMessageException
1278
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1279 5
     * @throws Exception
1280
     */
1281 5
    public function ticketCancelDocument(
1282
        RequestOptions\TicketCancelDocumentOptions $options,
1283 5
        $messageOptions = []
1284
    ) {
1285
        $msgName = 'Ticket_CancelDocument';
1286
1287
        return $this->callMessage($msgName, $options, $messageOptions);
1288
    }
1289
1290
    /**
1291
     * Ticket_ReissueConfirmedPricing
1292
     *
1293
     * @param RequestOptions\TicketReissueConfirmedPricingOptions $options
1294
     * @param array $messageOptions (OPTIONAL)
1295
     * @return Result
1296 5
     * @throws Client\InvalidMessageException
1297
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1298
     * @throws Exception
1299
     */
1300 5
    public function ticketReissueConfirmedPricing(
1301
        RequestOptions\TicketReissueConfirmedPricingOptions $options,
1302 5
        $messageOptions = []
1303
    ) {
1304
        $msgName = 'Ticket_ReissueConfirmedPricing';
1305
1306
        return $this->callMessage($msgName, $options, $messageOptions);
1307
    }
1308
1309
    /**
1310
     * Ticket_ProcessEDoc
1311
     *
1312
     * @param RequestOptions\TicketProcessEDocOptions $options
1313
     * @param array $messageOptions (OPTIONAL)
1314
     * @return Result
1315 5
     * @throws Client\InvalidMessageException
1316
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1317
     * @throws Exception
1318
     */
1319 5
    public function ticketProcessEDoc(RequestOptions\TicketProcessEDocOptions $options, $messageOptions = [])
1320
    {
1321 5
        $msgName = 'Ticket_ProcessEDoc';
1322
1323
        return $this->callMessage($msgName, $options, $messageOptions);
1324
    }
1325
1326
    /**
1327
     * Ticket_ProcessETicket
1328
     *
1329
     * @param RequestOptions\TicketProcessETicketOptions $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 ticketProcessETicket(RequestOptions\TicketProcessETicketOptions $options, $messageOptions = [])
1337
    {
1338 10
        $msgName = 'Ticket_ProcessETicket';
1339
1340 10
        return $this->callMessage($msgName, $options, $messageOptions);
1341
    }
1342
1343
    /**
1344
     * DocIssuance_IssueTicket
1345
     *
1346
     * @param RequestOptions\DocIssuanceIssueTicketOptions $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 docIssuanceIssueTicket(
1354
        RequestOptions\DocIssuanceIssueTicketOptions $options,
1355
        $messageOptions = []
1356
    ) {
1357 5
        $msgName = 'DocIssuance_IssueTicket';
1358
1359 5
        return $this->callMessage($msgName, $options, $messageOptions);
1360
    }
1361
1362
    /**
1363
     * DocIssuance_IssueMiscellaneousDocuments
1364
     *
1365
     * @param RequestOptions\DocIssuanceIssueMiscDocOptions $options
1366
     * @param array $messageOptions (OPTIONAL)
1367
     * @return Result
1368
     * @throws Client\InvalidMessageException
1369
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1370
     * @throws Exception
1371
     */
1372 5
    public function docIssuanceIssueMiscellaneousDocuments(
1373
        RequestOptions\DocIssuanceIssueMiscDocOptions $options,
1374
        $messageOptions = []
1375
    ) {
1376 5
        $msgName = 'DocIssuance_IssueMiscellaneousDocuments';
1377
1378 5
        return $this->callMessage($msgName, $options, $messageOptions);
1379
    }
1380
1381
    /**
1382
     * DocIssuance_IssueCombined
1383
     *
1384
     * @param RequestOptions\DocIssuanceIssueCombinedOptions $options
1385
     * @param array $messageOptions (OPTIONAL)
1386
     * @return Result
1387
     * @throws Client\InvalidMessageException
1388
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1389
     * @throws Exception
1390
     */
1391 5
    public function docIssuanceIssueCombined(
1392
        RequestOptions\DocIssuanceIssueCombinedOptions $options,
1393
        $messageOptions = []
1394
    ) {
1395 5
        $msgName = 'DocIssuance_IssueCombined';
1396
1397 5
        return $this->callMessage($msgName, $options, $messageOptions);
1398
    }
1399
1400
    /**
1401
     * DocRefund_InitRefund
1402
     *
1403
     * @param RequestOptions\DocRefundInitRefundOptions $options
1404
     * @param array $messageOptions (OPTIONAL)
1405
     * @return Result
1406
     * @throws Client\InvalidMessageException
1407
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1408
     * @throws Exception
1409
     */
1410 5
    public function docRefundInitRefund(
1411
        RequestOptions\DocRefundInitRefundOptions $options,
1412
        $messageOptions = []
1413
    ) {
1414 5
        $msgName = 'DocRefund_InitRefund';
1415
1416 5
        return $this->callMessage($msgName, $options, $messageOptions);
1417
    }
1418
1419
    /**
1420
     * DocRefund_IgnoreRefund
1421
     *
1422
     * @param RequestOptions\DocRefundIgnoreRefundOptions $options
1423
     * @param array $messageOptions (OPTIONAL)
1424
     * @return Result
1425
     * @throws Client\InvalidMessageException
1426
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1427
     * @throws Exception
1428
     */
1429 5
    public function docRefundIgnoreRefund(
1430
        RequestOptions\DocRefundIgnoreRefundOptions $options,
1431
        $messageOptions = []
1432
    ) {
1433 5
        $msgName = 'DocRefund_IgnoreRefund';
1434
1435 5
        return $this->callMessage($msgName, $options, $messageOptions);
1436
    }
1437
1438
    /**
1439
     * DocRefund_UpdateRefund
1440
     *
1441
     * @param RequestOptions\DocRefundUpdateRefundOptions $options
1442
     * @param array $messageOptions (OPTIONAL)
1443
     * @return Result
1444
     * @throws Client\InvalidMessageException
1445
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1446
     * @throws Exception
1447
     */
1448 5
    public function docRefundUpdateRefund(
1449
        RequestOptions\DocRefundUpdateRefundOptions $options,
1450
        $messageOptions = []
1451
    ) {
1452 5
        $msgName = 'DocRefund_UpdateRefund';
1453
1454 5
        return $this->callMessage($msgName, $options, $messageOptions);
1455
    }
1456
1457
    /**
1458
     * DocRefund_ProcessRefund
1459
     *
1460
     * @param RequestOptions\DocRefundProcessRefundOptions $options
1461
     * @param array $messageOptions (OPTIONAL)
1462
     * @return Result
1463
     * @throws Client\InvalidMessageException
1464
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1465
     * @throws Exception
1466
     */
1467 5
    public function docRefundProcessRefund(
1468
        RequestOptions\DocRefundProcessRefundOptions $options,
1469
        $messageOptions = []
1470
    ) {
1471 5
        $msgName = 'DocRefund_ProcessRefund';
1472
1473 5
        return $this->callMessage($msgName, $options, $messageOptions);
1474
    }
1475
1476
    /**
1477
     * Ticket_InitRefund
1478
     *
1479
     * @param RequestOptions\TicketInitRefundOptions $options
1480
     * @param array $messageOptions (OPTIONAL)
1481
     * @return Result
1482
     * @throws Client\InvalidMessageException
1483
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1484
     * @throws Exception
1485
     */
1486 5
    public function ticketInitRefund(
1487
        RequestOptions\TicketInitRefundOptions $options,
1488 5
        $messageOptions = []
1489
    ) {
1490 5
        $msgName = 'Ticket_InitRefund';
1491
1492
        return $this->callMessage($msgName, $options, $messageOptions);
1493
    }
1494
1495
    /**
1496
     * Ticket_IgnoreRefund
1497
     *
1498
     * @param RequestOptions\TicketIgnoreRefundOptions $options
1499
     * @param array $messageOptions (OPTIONAL)
1500
     * @return Result
1501
     * @throws Client\InvalidMessageException
1502
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1503
     * @throws Exception
1504 5
     */
1505
    public function ticketIgnoreRefund(
1506 5
        RequestOptions\TicketIgnoreRefundOptions $options,
1507
        $messageOptions = []
1508 5
    ) {
1509
        $msgName = 'Ticket_IgnoreRefund';
1510
1511
        return $this->callMessage($msgName, $options, $messageOptions);
1512
    }
1513
1514
    /**
1515
     * Ticket_ProcessRefund
1516
     *
1517
     * @param RequestOptions\TicketProcessRefundOptions $options
1518
     * @param array $messageOptions (OPTIONAL)
1519
     * @return Result
1520
     * @throws Client\InvalidMessageException
1521 5
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1522
     * @throws Exception
1523
     */
1524
    public function ticketProcessRefund(
1525 5
        RequestOptions\TicketProcessRefundOptions $options,
1526
        $messageOptions = []
1527 5
    ) {
1528
        $msgName = 'Ticket_ProcessRefund';
1529
1530
        return $this->callMessage($msgName, $options, $messageOptions);
1531
    }
1532
1533
    /**
1534
     * Ticket_UpdateRefund
1535
     *
1536
     * @param RequestOptions\TicketUpdateRefundOptions $options
1537
     * @param array $messageOptions (OPTIONAL)
1538
     * @return Result
1539
     * @throws Client\InvalidMessageException
1540 5
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1541
     * @throws Exception
1542
     */
1543
    public function ticketUpdateRefund(
1544 5
        RequestOptions\TicketUpdateRefundOptions $options,
1545
        $messageOptions = []
1546 5
    ) {
1547
        $msgName = 'Ticket_UpdateRefund';
1548
1549
        return $this->callMessage($msgName, $options, $messageOptions);
1550
    }
1551
1552
    /**
1553
     * FOP_CreateFormOfPayment
1554
     *
1555
     * @param RequestOptions\FopCreateFopOptions $options
1556
     * @param array $messageOptions (OPTIONAL)
1557
     * @return Result
1558
     * @throws Client\InvalidMessageException
1559 5
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1560
     * @throws Exception
1561
     */
1562
    public function fopCreateFormOfPayment(RequestOptions\FopCreateFopOptions $options, $messageOptions = [])
1563 5
    {
1564
        $msgName = 'FOP_CreateFormOfPayment';
1565 5
1566
        return $this->callMessage($msgName, $options, $messageOptions);
1567
    }
1568
1569
1570
    /**
1571
     * FOP_CreateFormOfPayment
1572
     *
1573
     * @param RequestOptions\FopValidateFopOptions $options
1574
     * @param array $messageOptions (OPTIONAL)
1575
     * @return Result
1576
     * @throws Client\InvalidMessageException
1577
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1578 5
     * @throws Exception
1579
     */
1580
    public function fopValidateFOP(RequestOptions\FopValidateFopOptions $options, $messageOptions = [])
1581
    {
1582 5
        $msgName = 'FOP_ValidateFOP';
1583
1584 5
        return $this->callMessage($msgName, $options, $messageOptions);
1585
    }
1586
1587
    /**
1588
     * PriceXplorer_ExtremeSearch
1589
     *
1590
     * @param RequestOptions\PriceXplorerExtremeSearchOptions $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 priceXplorerExtremeSearch(
1598
        RequestOptions\PriceXplorerExtremeSearchOptions $options,
1599
        $messageOptions = []
1600
    ) {
1601 5
        $msgName = 'PriceXplorer_ExtremeSearch';
1602
1603 5
        return $this->callMessage($msgName, $options, $messageOptions);
1604
    }
1605
1606
    /**
1607
     * SalesReports_DisplayQueryReport
1608
     *
1609
     * @param RequestOptions\SalesReportsDisplayQueryReportOptions $options
1610
     * @param array $messageOptions (OPTIONAL)
1611
     * @return Result
1612
     * @throws Client\InvalidMessageException
1613
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1614
     * @throws Exception
1615
     */
1616 5
    public function salesReportsDisplayQueryReport(
1617
        RequestOptions\SalesReportsDisplayQueryReportOptions $options,
1618
        $messageOptions = []
1619
    ) {
1620 5
        $msgName = 'SalesReports_DisplayQueryReport';
1621
1622 5
        return $this->callMessage($msgName, $options, $messageOptions);
1623
    }
1624
1625
    /**
1626
     * Service_IntegratedPricing
1627
     *
1628
     * @param RequestOptions\ServiceIntegratedPricingOptions $options
1629
     * @param array $messageOptions (OPTIONAL)
1630
     * @return Result
1631
     * @throws Client\InvalidMessageException
1632
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1633
     * @throws Exception
1634
     */
1635
    public function serviceIntegratedPricing(
1636
        RequestOptions\ServiceIntegratedPricingOptions $options,
1637
        $messageOptions = []
1638
    ) {
1639
        $msgName = 'Service_IntegratedPricing';
1640 420
1641
        return $this->callMessage($msgName, $options, $messageOptions);
1642 420
    }
1643
1644 420
    /**
1645
     * Service_IntegratedCatalogue
1646 420
     *
1647 420
     * @param RequestOptions\ServiceIntegratedCatalogueOptions $options
1648 420
     * @param array $messageOptions (OPTIONAL)
1649 420
     * @return Result
1650 168
     * @throws Client\InvalidMessageException
1651 168
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1652 168
     * @throws Exception
1653 168
     */
1654
    public function serviceIntegratedCatalogue(
1655 420
        RequestOptions\ServiceIntegratedCatalogueOptions $options,
1656 420
        $messageOptions = []
1657 168
    ) {
1658 168
        $msgName = 'Service_IntegratedCatalogue';
1659
1660 420
        return $this->callMessage($msgName, $options, $messageOptions);
1661 5
    }
1662 2
1663
    /**
1664 420
     * Service_BookPriceService
1665
     *
1666
     * @param RequestOptions\ServiceBookPriceServiceOptions $options
1667
     * @param array $messageOptions (OPTIONAL)
1668
     * @return Result
1669
     * @throws Client\InvalidMessageException
1670
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1671
     * @throws Exception
1672
     */
1673
    public function serviceBookPriceService(
1674
        RequestOptions\ServiceBookPriceServiceOptions $options,
1675
        $messageOptions = []
1676
    ) {
1677
        $msgName = 'Service_BookPriceService';
1678
1679 450
        return $this->callMessage($msgName, $options, $messageOptions);
1680
    }
1681
1682 450
    /**
1683 450
     * SalesReports_DisplayorSummarizedReport
1684 180
     *
1685
     * @param RequestOptions\SalesReportsDisplayDailyOrSummarizedReportOptions $options
1686 450
     * @param array $messageOptions (OPTIONAL)
1687 5
     * @return Result
1688 2
     * @throws Client\InvalidMessageException
1689
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1690 450
     * @throws Exception
1691 15
     */
1692 6
    public function salesReportsDisplayDailyOrSummarizedReport(
1693
        RequestOptions\SalesReportsDisplayDailyOrSummarizedReportOptions $options,
1694 450
        $messageOptions = []
1695
    ) {
1696
        $msgName = 'SalesReports_DisplayDailyOrSummarizedReport';
1697
1698
        return $this->callMessage($msgName, $options, $messageOptions);
1699
    }
1700
1701
    /**
1702
     * SalesReports_DisplayNetRemitReport
1703
     *
1704
     * @param RequestOptions\SalesReportsDisplayNetRemitReportOptions $options
1705
     * @param array $messageOptions (OPTIONAL)
1706
     * @return Result
1707
     * @throws Client\InvalidMessageException
1708
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1709
     * @throws Exception
1710
     */
1711
    public function salesReportsDisplayNetRemitReport(
1712
        RequestOptions\SalesReportsDisplayNetRemitReportOptions $options,
1713
        $messageOptions = []
1714
    ) {
1715
        $msgName = 'SalesReports_DisplayNetRemitReport';
1716
1717
        return $this->callMessage($msgName, $options, $messageOptions);
1718
    }
1719
1720
    /**
1721
     * Service_StandaloneCatalogue
1722
     *
1723
     * @param RequestOptions\ServiceStandaloneCatalogueOptions $options
1724
     * @param array $messageOptions
1725
     *            (OPTIONAL)
1726
     * @return Result
1727
     * @throws Client\InvalidMessageException
1728
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1729
     * @throws Exception
1730
     */
1731
    public function serviceStandaloneCatalogue(RequestOptions\ServiceStandaloneCatalogueOptions $options, $messageOptions = [])
1732
    {
1733
        $msgName = 'Service_StandaloneCatalogue';
1734
1735
        return $this->callMessage($msgName, $options, $messageOptions);
1736
    }
1737
1738
    /**
1739
     * Call a message with the given parameters
1740
     *
1741
     * @param string $messageName
1742
     * @param RequestOptions\RequestOptionsInterface $options
1743
     * @param array $messageOptions
1744
     * @param bool $endSession
1745
     * @return Result
1746
     * @throws Client\Exception
1747
     * @throws Client\Struct\InvalidArgumentException
1748
     * @throws Client\InvalidMessageException
1749
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1750
     * @throws \RuntimeException
1751
     * @throws \InvalidArgumentException
1752
     */
1753
    protected function callMessage($messageName, $options, $messageOptions, $endSession = false)
1754
    {
1755
        $messageOptions = $this->makeMessageOptions($messageOptions, $endSession);
1756
1757
        $this->lastMessage = $messageName;
1758
1759
        $sendResult = $this->sessionHandler->sendMessage(
1760
            $messageName,
1761
            $this->requestCreator->createRequest(
1762
                $messageName,
1763
                $options
1764
            ),
1765
            $messageOptions
1766
        );
1767
1768
        $response = $this->responseHandler->analyzeResponse(
1769
            $sendResult,
1770
            $messageName
1771
        );
1772
1773
        if ($messageOptions['returnXml'] === false) {
1774
            $response->responseXml = null;
1775
        }
1776
1777
        return $response;
1778
    }
1779
1780
    /**
1781
     * Make message options
1782
     *
1783
     * Message options are meta options when sending a message to the amadeus web services
1784
     * - 'endSession' (if stateful) : should we end the current session after sending this call?
1785
     * - 'returnXml' : Should we return the XML string in the Result::responseXml property?
1786
     *   (this overrides the default setting returnXml in the Amadeus\Client\Params for a single message)
1787
     *
1788
     * @param array $incoming The Message options chosen by the caller - if any.
1789
     * @param bool $endSession Switch if you want to terminate the current session after making the call.
1790
     * @return array
1791
     */
1792
    protected function makeMessageOptions(array $incoming, $endSession = false)
1793
    {
1794
        $options = [
1795
            'endSession' => $endSession,
1796
            'returnXml' => $this->returnResultXml
1797
        ];
1798
1799
        if (array_key_exists('endSession', $incoming)) {
1800
            $options['endSession'] = $incoming['endSession'];
1801
        }
1802
1803
        if (array_key_exists('returnXml', $incoming)) {
1804
            $options['returnXml'] = $incoming['returnXml'];
1805
        }
1806
1807
        return $options;
1808
    }
1809
}
1810