Completed
Push — master ( 2eb89a...0fd1a8 )
by Dieter
13:44
created

Client::ticketCreateTASF()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 5
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.8.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 4
    public function setStateful($newStateful)
81
    {
82 4
        $this->sessionHandler->setStateful($newStateful);
83 4
    }
84
85
    /**
86
     * @return bool
87
     */
88 12
    public function isStateful()
89
    {
90 12
        return $this->sessionHandler->isStateful();
91
    }
92
93
    /**
94
     * Get TransactionFlowLink Consumer Id
95
     *
96
     * @return string|null
97
     */
98 4
    public function getConsumerId()
99
    {
100 4
        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 4
    public function setConsumerId($id)
111
    {
112 4
        $this->sessionHandler->setTransactionFlowLink(true);
113 4
        $this->sessionHandler->setConsumerId($id);
114 4
    }
115
116
    /**
117
     * Get the last raw XML message that was sent out
118
     *
119
     * @return string|null
120
     */
121 4
    public function getLastRequest()
122
    {
123 4
        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 4
    public function getLastResponse()
132
    {
133 4
        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 4
    public function getLastRequestHeaders()
142
    {
143 4
        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 4
    public function getLastResponseHeaders()
152
    {
153 4
        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 4
    public function getSessionData()
166
    {
167 4
        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 4
    public function setSessionData(array $sessionData)
179
    {
180 4
        return $this->sessionHandler->setSessionData($sessionData);
181
    }
182
183
    /**
184
     * Construct Amadeus Web Services client
185
     *
186
     * @param Params $params
187
     */
188 384
    public function __construct(Params $params)
189
    {
190 384
        $this->loadClientParams(
191 384
            $params,
192 384
            self::RECEIVED_FROM_IDENTIFIER,
193 192
            self::VERSION
194 192
        );
195 380
    }
196
197
    /**
198
     * Authenticate.
199
     *
200
     * Authentication Parameters were provided at construction time (authParams)
201
     *
202
     * @return Result
203
     * @throws Exception
204
     */
205 8
    public function securityAuthenticate()
206
    {
207 8
        $msgName = 'Security_Authenticate';
208
209 8
        return $this->callMessage(
210 8
            $msgName,
211 8
            new RequestOptions\SecurityAuthenticateOptions(
212 8
                $this->authParams
213 4
            ),
214 8
            [],
215 4
            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 4
    public function securitySignOut()
226
    {
227 4
        $msgName = 'Security_SignOut';
228
229 4
        return $this->callMessage(
230 4
            $msgName,
231 4
            new RequestOptions\SecuritySignOutOptions(),
232 4
            [],
233 2
            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 4
    public function pnrRetrieve(RequestOptions\PnrRetrieveOptions $options, $messageOptions = [])
248
    {
249 4
        $msgName = 'PNR_Retrieve';
250
251 4
        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 4
    public function pnrSplit(
265
        RequestOptions\PnrSplitOptions $options,
266
        $messageOptions = []
267
    ) {
268 4
        $msgName = 'PNR_Split';
269
270 4
        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 4
    public function pnrCreatePnr(RequestOptions\PnrCreatePnrOptions $options, $messageOptions = [])
284
    {
285 4
        $msgName = 'PNR_AddMultiElements';
286
287 4
        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 8
    public function pnrAddMultiElements(RequestOptions\PnrAddMultiElementsOptions $options, $messageOptions = [])
303
    {
304 8
        $msgName = 'PNR_AddMultiElements';
305
306 8
        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 4
    public function pnrRetrieveAndDisplay(RequestOptions\PnrRetrieveAndDisplayOptions $options, $messageOptions = [])
324
    {
325 4
        $msgName = 'PNR_RetrieveAndDisplay';
326
327 4
        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 4
    public function pnrCancel(RequestOptions\PnrCancelOptions $options, $messageOptions = [])
341
    {
342 4
        $msgName = 'PNR_Cancel';
343
344 4
        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 4
    public function pnrDisplayHistory(RequestOptions\PnrDisplayHistoryOptions $options, $messageOptions = [])
358
    {
359 4
        $msgName = 'PNR_DisplayHistory';
360
361 4
        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 4
    public function pnrTransferOwnership(RequestOptions\PnrTransferOwnershipOptions $options, $messageOptions = [])
375
    {
376 4
        $msgName = 'PNR_TransferOwnership';
377
378 4
        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 4
    public function pnrNameChange(RequestOptions\PnrNameChangeOptions $options, $messageOptions = [])
392
    {
393 4
        $msgName = 'PNR_NameChange';
394
395 4
        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 4
    public function queueList(RequestOptions\QueueListOptions $options, $messageOptions = [])
411
    {
412 4
        $msgName = 'Queue_List';
413
414 4
        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 4
    public function queuePlacePnr(RequestOptions\QueuePlacePnrOptions $options, $messageOptions = [])
428
    {
429 4
        $msgName = 'Queue_PlacePNR';
430
431 4
        return $this->callMessage($msgName, $options, $messageOptions);
432
    }
433
434
    /**
435
     * Queue_RemoveItem - remove an item (a PNR) from a given queue
436
     *
437
     * @param RequestOptions\QueueRemoveItemOptions $options
438
     * @param array $messageOptions (OPTIONAL)
439
     * @return Result
440
     * @throws Client\InvalidMessageException
441
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
442
     * @throws Exception
443
     */
444 4
    public function queueRemoveItem(RequestOptions\QueueRemoveItemOptions $options, $messageOptions = [])
445
    {
446 4
        $msgName = 'Queue_RemoveItem';
447
448 4
        return $this->callMessage($msgName, $options, $messageOptions);
449
    }
450
451
    /**
452
     * Queue_MoveItem - move an item (a PNR) from one queue to another.
453
     *
454
     * @param RequestOptions\QueueMoveItemOptions $options
455
     * @param array $messageOptions (OPTIONAL)
456
     * @return Result
457
     * @throws Client\InvalidMessageException
458
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
459
     * @throws Exception
460
     */
461 4
    public function queueMoveItem(RequestOptions\QueueMoveItemOptions $options, $messageOptions = [])
462
    {
463 4
        $msgName = 'Queue_MoveItem';
464
465 4
        return $this->callMessage($msgName, $options, $messageOptions);
466
    }
467
468
    /**
469
     * Offer_CreateOffer
470
     *
471
     * @param RequestOptions\OfferCreateOptions $options
472
     * @param array $messageOptions (OPTIONAL)
473
     * @return Result
474
     * @throws Client\InvalidMessageException
475
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
476
     * @throws Exception
477
     */
478 4
    public function offerCreate(RequestOptions\OfferCreateOptions $options, $messageOptions = [])
479
    {
480 4
        $msgName = 'Offer_CreateOffer';
481
482 4
        return $this->callMessage($msgName, $options, $messageOptions);
483
    }
484
485
    /**
486
     * Offer_VerifyOffer
487
     *
488
     * To be called in the context of an open PNR
489
     *
490
     * @param RequestOptions\OfferVerifyOptions $options
491
     * @param array $messageOptions (OPTIONAL)
492
     * @return Result
493
     * @throws Client\InvalidMessageException
494
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
495
     * @throws Exception
496
     */
497 4
    public function offerVerify(RequestOptions\OfferVerifyOptions $options, $messageOptions = [])
498
    {
499 4
        $msgName = 'Offer_VerifyOffer';
500
501 4
        return $this->callMessage($msgName, $options, $messageOptions);
502
    }
503
504
    /**
505
     * Offer_ConfirmAirOffer
506
     *
507
     * @param RequestOptions\OfferConfirmAirOptions $options
508
     * @param array $messageOptions (OPTIONAL)
509
     * @return Result
510
     * @throws Client\InvalidMessageException
511
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
512
     * @throws Exception
513
     */
514 4
    public function offerConfirmAir(RequestOptions\OfferConfirmAirOptions $options, $messageOptions = [])
515
    {
516 4
        $msgName = 'Offer_ConfirmAirOffer';
517
518 4
        return $this->callMessage($msgName, $options, $messageOptions);
519
    }
520
521
    /**
522
     * Offer_ConfirmHotelOffer
523
     *
524
     * @param RequestOptions\OfferConfirmHotelOptions $options
525
     * @param array $messageOptions (OPTIONAL)
526
     * @return Result
527
     * @throws Client\InvalidMessageException
528
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
529
     * @throws Exception
530
     */
531 4
    public function offerConfirmHotel(RequestOptions\OfferConfirmHotelOptions $options, $messageOptions = [])
532
    {
533 4
        $msgName = 'Offer_ConfirmHotelOffer';
534
535 4
        return $this->callMessage($msgName, $options, $messageOptions);
536
    }
537
538
    /**
539
     * Offer_ConfirmCarOffer
540
     *
541
     * @param RequestOptions\OfferConfirmCarOptions $options
542
     * @param array $messageOptions (OPTIONAL)
543
     * @return Result
544
     * @throws Client\InvalidMessageException
545
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
546
     * @throws Exception
547
     */
548 4
    public function offerConfirmCar(RequestOptions\OfferConfirmCarOptions $options, $messageOptions = [])
549
    {
550 4
        $msgName = 'Offer_ConfirmCarOffer';
551
552 4
        return $this->callMessage($msgName, $options, $messageOptions);
553
    }
554
555
    /**
556
     * Fare_MasterPricerTravelBoardSearch
557
     *
558
     * @param RequestOptions\FareMasterPricerTbSearch $options
559
     * @param array $messageOptions (OPTIONAL)
560
     * @return Result
561
     * @throws Client\InvalidMessageException
562
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
563
     * @throws Exception
564
     */
565 4
    public function fareMasterPricerTravelBoardSearch(
566
        RequestOptions\FareMasterPricerTbSearch $options,
567
        $messageOptions = []
568
    ) {
569 4
        $msgName = 'Fare_MasterPricerTravelBoardSearch';
570
571 4
        return $this->callMessage($msgName, $options, $messageOptions);
572
    }
573
574
    /**
575
     * Fare_MasterPricerCalendar
576
     *
577
     * @param RequestOptions\FareMasterPricerCalendarOptions $options
578
     * @param array $messageOptions (OPTIONAL)
579
     * @return Result
580
     * @throws Client\InvalidMessageException
581
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
582
     * @throws Exception
583
     */
584 4
    public function fareMasterPricerCalendar(
585
        RequestOptions\FareMasterPricerCalendarOptions $options,
586
        $messageOptions = []
587
    ) {
588 4
        $msgName = 'Fare_MasterPricerCalendar';
589
590 4
        return $this->callMessage($msgName, $options, $messageOptions);
591
    }
592
593
    /**
594
     * Fare_PricePnrWithBookingClass
595
     *
596
     * @param RequestOptions\FarePricePnrWithBookingClassOptions $options
597
     * @param array $messageOptions (OPTIONAL)
598
     * @return Result
599
     * @throws Client\InvalidMessageException
600
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
601
     * @throws Exception
602
     */
603 8
    public function farePricePnrWithBookingClass(
604
        RequestOptions\FarePricePnrWithBookingClassOptions $options,
605
        $messageOptions = []
606
    ) {
607 8
        $msgName = 'Fare_PricePNRWithBookingClass';
608
609 8
        return $this->callMessage($msgName, $options, $messageOptions);
610
    }
611
612
    /**
613
     * Fare_PricePnrWithLowerFares
614
     *
615
     * @param RequestOptions\FarePricePnrWithLowerFaresOptions $options
616
     * @param array $messageOptions (OPTIONAL)
617
     * @return Result
618
     * @throws Client\InvalidMessageException
619
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
620
     * @throws Exception
621
     */
622 8
    public function farePricePnrWithLowerFares(
623
        RequestOptions\FarePricePnrWithLowerFaresOptions $options,
624
        $messageOptions = []
625
    ) {
626 8
        $msgName = 'Fare_PricePNRWithLowerFares';
627
628 8
        return $this->callMessage($msgName, $options, $messageOptions);
629
    }
630
631
    /**
632
     * Fare_PricePnrWithLowestFare
633
     *
634
     * @param RequestOptions\FarePricePnrWithLowestFareOptions $options
635
     * @param array $messageOptions (OPTIONAL)
636
     * @return Result
637
     * @throws Client\InvalidMessageException
638
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
639
     * @throws Exception
640
     */
641 8
    public function farePricePnrWithLowestFare(
642
        RequestOptions\FarePricePnrWithLowestFareOptions $options,
643
        $messageOptions = []
644
    ) {
645 8
        $msgName = 'Fare_PricePNRWithLowestFare';
646
647 8
        return $this->callMessage($msgName, $options, $messageOptions);
648
    }
649
650
    /**
651
     * Fare_InformativePricingWithoutPNR
652
     *
653
     * @param RequestOptions\FareInformativePricingWithoutPnrOptions $options
654
     * @param array $messageOptions (OPTIONAL)
655
     * @return Result
656
     * @throws Client\InvalidMessageException
657
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
658
     * @throws Exception
659
     */
660 4
    public function fareInformativePricingWithoutPnr(
661
        RequestOptions\FareInformativePricingWithoutPnrOptions $options,
662
        $messageOptions = []
663
    ) {
664 4
        $msgName = 'Fare_InformativePricingWithoutPNR';
665
666 4
        return $this->callMessage($msgName, $options, $messageOptions);
667
    }
668
669
    /**
670
     * Fare_InformativeBestPricingWithoutPNR
671
     *
672
     * @param RequestOptions\FareInformativeBestPricingWithoutPnrOptions $options
673
     * @param array $messageOptions (OPTIONAL)
674
     * @return Result
675
     * @throws Client\InvalidMessageException
676
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
677
     * @throws Exception
678
     */
679 4
    public function fareInformativeBestPricingWithoutPnr(
680
        RequestOptions\FareInformativeBestPricingWithoutPnrOptions $options,
681
        $messageOptions = []
682
    ) {
683 4
        $msgName = 'Fare_InformativeBestPricingWithoutPNR';
684
685 4
        return $this->callMessage($msgName, $options, $messageOptions);
686
    }
687
688
    /**
689
     * Fare_CheckRules
690
     *
691
     * @param RequestOptions\FareCheckRulesOptions $options
692
     * @param array $messageOptions (OPTIONAL)
693
     * @return Result
694
     * @throws Client\InvalidMessageException
695
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
696
     * @throws Exception
697
     */
698 4
    public function fareCheckRules(RequestOptions\FareCheckRulesOptions $options, $messageOptions = [])
699
    {
700 4
        $msgName = 'Fare_CheckRules';
701
702 4
        return $this->callMessage($msgName, $options, $messageOptions);
703
    }
704
705
    /**
706
     * Fare_GetFareRules
707
     *
708
     * @param RequestOptions\FareGetFareRulesOptions $options
709
     * @param array $messageOptions (OPTIONAL)
710
     * @return Result
711
     * @throws Client\InvalidMessageException
712
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
713
     * @throws Exception
714
     */
715 4
    public function fareGetFareRules(RequestOptions\FareGetFareRulesOptions $options, $messageOptions = [])
716
    {
717 4
        $msgName = 'Fare_GetFareRules';
718
719 4
        return $this->callMessage($msgName, $options, $messageOptions);
720
    }
721
722
    /**
723
     * Fare_ConvertCurrency
724
     *
725
     * @param RequestOptions\FareConvertCurrencyOptions $options
726
     * @param array $messageOptions (OPTIONAL)
727
     * @return Result
728
     * @throws Client\InvalidMessageException
729
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
730
     * @throws Exception
731
     */
732 4
    public function fareConvertCurrency(RequestOptions\FareConvertCurrencyOptions $options, $messageOptions = [])
733
    {
734 4
        $msgName = 'Fare_ConvertCurrency';
735
736 4
        return $this->callMessage($msgName, $options, $messageOptions);
737
    }
738
739
    /**
740
     * Air_MultiAvailability
741
     *
742
     * @param RequestOptions\AirMultiAvailabilityOptions $options
743
     * @param array $messageOptions (OPTIONAL)
744
     * @return Result
745
     * @throws Client\InvalidMessageException
746
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
747
     * @throws Exception
748
     */
749 4
    public function airMultiAvailability(
750
        RequestOptions\AirMultiAvailabilityOptions $options,
751
        $messageOptions = []
752
    ) {
753 4
        $msgName = 'Air_MultiAvailability';
754
755 4
        return $this->callMessage($msgName, $options, $messageOptions);
756
    }
757
758
    /**
759
     * Air_SellFromRecommendation
760
     *
761
     * @param RequestOptions\AirSellFromRecommendationOptions $options
762
     * @param array $messageOptions (OPTIONAL)
763
     * @return Result
764
     * @throws Client\InvalidMessageException
765
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
766
     * @throws Exception
767
     */
768 4
    public function airSellFromRecommendation(
769
        RequestOptions\AirSellFromRecommendationOptions $options,
770
        $messageOptions = []
771
    ) {
772 4
        $msgName = 'Air_SellFromRecommendation';
773
774 4
        return $this->callMessage($msgName, $options, $messageOptions);
775
    }
776
777
    /**
778
     * Air_FlightInfo
779
     *
780
     * @param RequestOptions\AirFlightInfoOptions $options
781
     * @param array $messageOptions (OPTIONAL)
782
     * @return Result
783
     * @throws Client\InvalidMessageException
784
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
785
     * @throws Exception
786
     */
787 4
    public function airFlightInfo(RequestOptions\AirFlightInfoOptions $options, $messageOptions = [])
788
    {
789 4
        $msgName = 'Air_FlightInfo';
790
791 4
        return $this->callMessage($msgName, $options, $messageOptions);
792
    }
793
794
    /**
795
     * Air_RetrieveSeatMap
796
     *
797
     * @param RequestOptions\AirRetrieveSeatMapOptions $options
798
     * @param array $messageOptions (OPTIONAL)
799
     * @return Result
800
     * @throws Client\InvalidMessageException
801
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
802
     * @throws Exception
803
     */
804 4
    public function airRetrieveSeatMap(RequestOptions\AirRetrieveSeatMapOptions $options, $messageOptions = [])
805
    {
806 4
        $msgName = 'Air_RetrieveSeatMap';
807
808 4
        return $this->callMessage($msgName, $options, $messageOptions);
809
    }
810
811
    /**
812
     * Air_RebookAirSegment
813
     *
814
     * @param RequestOptions\AirRebookAirSegmentOptions $options
815
     * @param array $messageOptions (OPTIONAL)
816
     * @return Result
817
     * @throws Client\InvalidMessageException
818
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
819
     * @throws Exception
820
     */
821 4
    public function airRebookAirSegment(RequestOptions\AirRebookAirSegmentOptions $options, $messageOptions = [])
822
    {
823 4
        $msgName = 'Air_RebookAirSegment';
824
825 4
        return $this->callMessage($msgName, $options, $messageOptions);
826
    }
827
828
    /**
829
     * Command_Cryptic
830
     *
831
     * @param RequestOptions\CommandCrypticOptions $options
832
     * @param array $messageOptions (OPTIONAL)
833
     * @return Result
834
     * @throws Client\InvalidMessageException
835
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
836
     * @throws Exception
837
     */
838 4
    public function commandCryptic(RequestOptions\CommandCrypticOptions $options, $messageOptions = [])
839
    {
840 4
        $msgName = 'Command_Cryptic';
841
842 4
        return $this->callMessage($msgName, $options, $messageOptions);
843
    }
844
845
    /**
846
     * MiniRule_GetFromPricingRec
847
     *
848
     * @param RequestOptions\MiniRuleGetFromPricingRecOptions $options
849
     * @param array $messageOptions (OPTIONAL)
850
     * @return Result
851
     * @throws Client\InvalidMessageException
852
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
853
     * @throws Exception
854
     */
855 4
    public function miniRuleGetFromPricingRec(
856
        RequestOptions\MiniRuleGetFromPricingRecOptions $options,
857
        $messageOptions = []
858
    ) {
859 4
        $msgName = 'MiniRule_GetFromPricingRec';
860
861 4
        return $this->callMessage($msgName, $options, $messageOptions);
862
    }
863
864
    /**
865
     * MiniRule_GetFromPricing
866
     *
867
     * @param RequestOptions\MiniRuleGetFromPricingOptions $options
868
     * @param array $messageOptions (OPTIONAL)
869
     * @return Result
870
     * @throws Client\InvalidMessageException
871
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
872
     * @throws Exception
873
     */
874 4
    public function miniRuleGetFromPricing(
875
        RequestOptions\MiniRuleGetFromPricingOptions $options,
876
        $messageOptions = []
877
    ) {
878 4
        $msgName = 'MiniRule_GetFromPricing';
879
880 4
        return $this->callMessage($msgName, $options, $messageOptions);
881
    }
882
883
    /**
884
     * MiniRule_GetFromETicket
885
     *
886
     * @param RequestOptions\MiniRuleGetFromETicketOptions $options
887
     * @param array $messageOptions (OPTIONAL)
888
     * @return Result
889
     * @throws Client\InvalidMessageException
890
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
891
     * @throws Exception
892
     */
893 4
    public function miniRuleGetFromETicket(
894
        RequestOptions\MiniRuleGetFromETicketOptions $options,
895
        $messageOptions = []
896
    ) {
897 4
        $msgName = 'MiniRule_GetFromETicket';
898
899 4
        return $this->callMessage($msgName, $options, $messageOptions);
900
    }
901
902
    /**
903
     * Info_EncodeDecodeCity
904
     *
905
     * @param RequestOptions\InfoEncodeDecodeCityOptions $options
906
     * @param array $messageOptions (OPTIONAL)
907
     * @return Result
908
     * @throws Client\InvalidMessageException
909
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
910
     * @throws Exception
911
     */
912 4
    public function infoEncodeDecodeCity(RequestOptions\InfoEncodeDecodeCityOptions $options, $messageOptions = [])
913
    {
914 4
        $msgName = 'Info_EncodeDecodeCity';
915
916 4
        return $this->callMessage($msgName, $options, $messageOptions);
917
    }
918
919
    /**
920
     * PointOfRef_Search
921
     *
922
     * @param RequestOptions\PointOfRefSearchOptions $options
923
     * @param array $messageOptions (OPTIONAL)
924
     * @return Result
925
     * @throws Client\InvalidMessageException
926
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
927
     * @throws Exception
928
     */
929 4
    public function pointOfRefSearch(RequestOptions\PointOfRefSearchOptions $options, $messageOptions = [])
930
    {
931 4
        $msgName = 'PointOfRef_Search';
932
933 4
        return $this->callMessage($msgName, $options, $messageOptions);
934
    }
935
936
937
    /**
938
     * Ticket_CreateTSTFromPricing
939
     *
940
     * @param RequestOptions\TicketCreateTstFromPricingOptions $options
941
     * @param array $messageOptions (OPTIONAL)
942
     * @return Result
943
     * @throws Client\InvalidMessageException
944
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
945
     * @throws Exception
946
     */
947 4
    public function ticketCreateTSTFromPricing(
948
        RequestOptions\TicketCreateTstFromPricingOptions $options,
949
        $messageOptions = []
950
    ) {
951 4
        $msgName = 'Ticket_CreateTSTFromPricing';
952
953 4
        return $this->callMessage($msgName, $options, $messageOptions);
954
    }
955
956
    /**
957
     * Ticket_CreateTSMFromPricing
958
     *
959
     * @param RequestOptions\TicketCreateTsmFromPricingOptions $options
960
     * @param array $messageOptions (OPTIONAL)
961
     * @return Result
962
     * @throws Client\InvalidMessageException
963
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
964
     * @throws Exception
965
     */
966 4
    public function ticketCreateTSMFromPricing(
967
        RequestOptions\TicketCreateTsmFromPricingOptions $options,
968
        $messageOptions = []
969
    ) {
970 4
        $msgName = 'Ticket_CreateTSMFromPricing';
971
972 4
        return $this->callMessage($msgName, $options, $messageOptions);
973
    }
974
975
    /**
976
     * Ticket_CreateTSMFareElement
977
     *
978
     * @param RequestOptions\TicketCreateTsmFareElOptions $options
979
     * @param array $messageOptions (OPTIONAL)
980
     * @return Result
981
     * @throws Client\InvalidMessageException
982
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
983
     * @throws Exception
984
     */
985 4
    public function ticketCreateTSMFareElement(
986
        RequestOptions\TicketCreateTsmFareElOptions $options,
987
        $messageOptions = []
988
    ) {
989 4
        $msgName = 'Ticket_CreateTSMFareElement';
990
991 4
        return $this->callMessage($msgName, $options, $messageOptions);
992
    }
993
994
    /**
995
     * Ticket_CreateTASF
996
     *
997
     * @param RequestOptions\TicketCreateTasfOptions $options
998
     * @param array $messageOptions (OPTIONAL)
999
     * @return Result
1000
     * @throws Client\InvalidMessageException
1001
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1002
     * @throws Exception
1003
     */
1004 4
    public function ticketCreateTASF(
1005
        RequestOptions\TicketCreateTasfOptions $options,
1006
        $messageOptions = []
1007
    ) {
1008 4
        $msgName = 'Ticket_CreateTASF';
1009
1010 4
        return $this->callMessage($msgName, $options, $messageOptions);
1011
    }
1012
1013
    /**
1014
     * Ticket_DeleteTST
1015
     *
1016
     * @param RequestOptions\TicketDeleteTstOptions $options
1017
     * @param array $messageOptions (OPTIONAL)
1018
     * @return Result
1019
     * @throws Client\InvalidMessageException
1020
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1021
     * @throws Exception
1022
     */
1023 4
    public function ticketDeleteTST(RequestOptions\TicketDeleteTstOptions $options, $messageOptions = [])
1024
    {
1025 4
        $msgName = 'Ticket_DeleteTST';
1026
1027 4
        return $this->callMessage($msgName, $options, $messageOptions);
1028
    }
1029
1030
    /**
1031
     * Ticket_DeleteTSMP
1032
     *
1033
     * @param RequestOptions\TicketDeleteTsmpOptions $options
1034
     * @param array $messageOptions (OPTIONAL)
1035
     * @return Result
1036
     * @throws Client\InvalidMessageException
1037
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1038
     * @throws Exception
1039
     */
1040 4
    public function ticketDeleteTSMP(RequestOptions\TicketDeleteTsmpOptions $options, $messageOptions = [])
1041
    {
1042 4
        $msgName = 'Ticket_DeleteTSMP';
1043
1044 4
        return $this->callMessage($msgName, $options, $messageOptions);
1045
    }
1046
1047
    /**
1048
     * Ticket_DisplayTST
1049
     *
1050
     * @param RequestOptions\TicketDisplayTstOptions $options
1051
     * @param array $messageOptions (OPTIONAL)
1052
     * @return Result
1053
     * @throws Client\InvalidMessageException
1054
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1055
     * @throws Exception
1056
     */
1057 4
    public function ticketDisplayTST(RequestOptions\TicketDisplayTstOptions $options, $messageOptions = [])
1058
    {
1059 4
        $msgName = 'Ticket_DisplayTST';
1060
1061 4
        return $this->callMessage($msgName, $options, $messageOptions);
1062
    }
1063
1064
    /**
1065
     * Ticket_DisplayTSMP
1066
     *
1067
     * @param RequestOptions\TicketDisplayTsmpOptions $options
1068
     * @param array $messageOptions (OPTIONAL)
1069
     * @return Result
1070
     * @throws Client\InvalidMessageException
1071
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1072
     * @throws Exception
1073
     */
1074 4
    public function ticketDisplayTSMP(RequestOptions\TicketDisplayTsmpOptions $options, $messageOptions = [])
1075
    {
1076 4
        $msgName = 'Ticket_DisplayTSMP';
1077
1078 4
        return $this->callMessage($msgName, $options, $messageOptions);
1079
    }
1080
1081
    /**
1082
     * Ticket_RetrieveListOfTSM
1083
     *
1084
     * @param RequestOptions\TicketRetrieveListOfTSMOptions $options
1085
     * @param array $messageOptions (OPTIONAL)
1086
     * @return Result
1087
     * @throws Client\InvalidMessageException
1088
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1089
     * @throws Exception
1090
     */
1091 4
    public function ticketRetrieveListOfTSM(
1092
        RequestOptions\TicketRetrieveListOfTSMOptions $options,
1093
        $messageOptions = []
1094
    ) {
1095 4
        $msgName = 'Ticket_RetrieveListOfTSM';
1096
1097 4
        return $this->callMessage($msgName, $options, $messageOptions);
1098
    }
1099
1100
    /**
1101
     * Ticket_DisplayTSMFareElement
1102
     *
1103
     * @param RequestOptions\TicketDisplayTsmFareElOptions $options
1104
     * @param array $messageOptions (OPTIONAL)
1105
     * @return Result
1106
     * @throws Client\InvalidMessageException
1107
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1108
     * @throws Exception
1109
     */
1110 4
    public function ticketDisplayTSMFareElement(
1111
        RequestOptions\TicketDisplayTsmFareElOptions $options,
1112
        $messageOptions = []
1113
    ) {
1114 4
        $msgName = 'Ticket_DisplayTSMFareElement';
1115
1116 4
        return $this->callMessage($msgName, $options, $messageOptions);
1117
    }
1118
1119
    /**
1120
     * Ticket_CheckEligibility
1121
     *
1122
     * @param RequestOptions\TicketCheckEligibilityOptions $options
1123
     * @param array $messageOptions (OPTIONAL)
1124
     * @return Result
1125
     * @throws Client\InvalidMessageException
1126
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1127
     * @throws Exception
1128
     */
1129 4
    public function ticketCheckEligibility(
1130
        RequestOptions\TicketCheckEligibilityOptions $options,
1131
        $messageOptions = []
1132
    ) {
1133 4
        $msgName = 'Ticket_CheckEligibility';
1134
1135 4
        return $this->callMessage($msgName, $options, $messageOptions);
1136
    }
1137
1138
    /**
1139
     * Ticket_ATCShopperMasterPricerTravelBoardSearch
1140
     *
1141
     * @param RequestOptions\TicketAtcShopperMpTbSearchOptions $options
1142
     * @param array $messageOptions (OPTIONAL)
1143
     * @return Result
1144
     * @throws Client\InvalidMessageException
1145
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1146
     * @throws Exception
1147
     */
1148 4
    public function ticketAtcShopperMasterPricerTravelBoardSearch(
1149
        RequestOptions\TicketAtcShopperMpTbSearchOptions $options,
1150
        $messageOptions = []
1151
    ) {
1152 4
        $msgName = 'Ticket_ATCShopperMasterPricerTravelBoardSearch';
1153
1154 4
        return $this->callMessage($msgName, $options, $messageOptions);
1155
    }
1156
1157
    /**
1158
     * Ticket_RepricePNRWithBookingClass
1159
     *
1160
     * @param RequestOptions\TicketRepricePnrWithBookingClassOptions $options
1161
     * @param array $messageOptions (OPTIONAL)
1162
     * @return Result
1163
     * @throws Client\InvalidMessageException
1164
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1165
     * @throws Exception
1166
     */
1167 4
    public function ticketRepricePnrWithBookingClass(
1168
        RequestOptions\TicketRepricePnrWithBookingClassOptions $options,
1169
        $messageOptions = []
1170
    ) {
1171 4
        $msgName = 'Ticket_RepricePNRWithBookingClass';
1172
1173 4
        return $this->callMessage($msgName, $options, $messageOptions);
1174
    }
1175
1176
    /**
1177
     * Ticket_CancelDocument
1178
     *
1179
     * @param RequestOptions\TicketCancelDocumentOptions $options
1180
     * @param array $messageOptions (OPTIONAL)
1181
     * @return Result
1182
     * @throws Client\InvalidMessageException
1183
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1184
     * @throws Exception
1185
     */
1186 4
    public function ticketCancelDocument(
1187
        RequestOptions\TicketCancelDocumentOptions $options,
1188
        $messageOptions = []
1189
    ) {
1190 4
        $msgName = 'Ticket_CancelDocument';
1191
1192 4
        return $this->callMessage($msgName, $options, $messageOptions);
1193
    }
1194
1195
    /**
1196
     * Ticket_ReissueConfirmedPricing
1197
     *
1198
     * @param RequestOptions\TicketReissueConfirmedPricingOptions $options
1199
     * @param array $messageOptions (OPTIONAL)
1200
     * @return Result
1201
     * @throws Client\InvalidMessageException
1202
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1203
     * @throws Exception
1204
     */
1205 4
    public function ticketReissueConfirmedPricing(
1206
        RequestOptions\TicketReissueConfirmedPricingOptions $options,
1207
        $messageOptions = []
1208
    ) {
1209 4
        $msgName = 'Ticket_ReissueConfirmedPricing';
1210
1211 4
        return $this->callMessage($msgName, $options, $messageOptions);
1212
    }
1213
1214
    /**
1215
     * Ticket_ProcessEDoc
1216
     *
1217
     * @param RequestOptions\TicketProcessEDocOptions $options
1218
     * @param array $messageOptions (OPTIONAL)
1219
     * @return Result
1220
     * @throws Client\InvalidMessageException
1221
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1222
     * @throws Exception
1223
     */
1224 4
    public function ticketProcessEDoc(RequestOptions\TicketProcessEDocOptions $options, $messageOptions = [])
1225
    {
1226 4
        $msgName = 'Ticket_ProcessEDoc';
1227
1228 4
        return $this->callMessage($msgName, $options, $messageOptions);
1229
    }
1230
1231
    /**
1232
     * Ticket_ProcessETicket
1233
     *
1234
     * @param RequestOptions\TicketProcessETicketOptions $options
1235
     * @param array $messageOptions (OPTIONAL)
1236
     * @return Result
1237
     * @throws Client\InvalidMessageException
1238
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1239
     * @throws Exception
1240
     */
1241 4
    public function ticketProcessETicket(RequestOptions\TicketProcessETicketOptions $options, $messageOptions = [])
1242
    {
1243 4
        $msgName = 'Ticket_ProcessETicket';
1244
1245 4
        return $this->callMessage($msgName, $options, $messageOptions);
1246
    }
1247
1248
    /**
1249
     * DocIssuance_IssueTicket
1250
     *
1251
     * @param RequestOptions\DocIssuanceIssueTicketOptions $options
1252
     * @param array $messageOptions (OPTIONAL)
1253
     * @return Result
1254
     * @throws Client\InvalidMessageException
1255
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1256
     * @throws Exception
1257
     */
1258 4
    public function docIssuanceIssueTicket(
1259
        RequestOptions\DocIssuanceIssueTicketOptions $options,
1260
        $messageOptions = []
1261
    ) {
1262 4
        $msgName = 'DocIssuance_IssueTicket';
1263
1264 4
        return $this->callMessage($msgName, $options, $messageOptions);
1265
    }
1266
1267
    /**
1268
     * DocIssuance_IssueMiscellaneousDocuments
1269
     *
1270
     * @param RequestOptions\DocIssuanceIssueMiscDocOptions $options
1271
     * @param array $messageOptions (OPTIONAL)
1272
     * @return Result
1273
     * @throws Client\InvalidMessageException
1274
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1275
     * @throws Exception
1276
     */
1277 4
    public function docIssuanceIssueMiscellaneousDocuments(
1278
        RequestOptions\DocIssuanceIssueMiscDocOptions $options,
1279
        $messageOptions = []
1280
    ) {
1281 4
        $msgName = 'DocIssuance_IssueMiscellaneousDocuments';
1282
1283 4
        return $this->callMessage($msgName, $options, $messageOptions);
1284
    }
1285
1286
    /**
1287
     * DocIssuance_IssueCombined
1288
     *
1289
     * @param RequestOptions\DocIssuanceIssueCombinedOptions $options
1290
     * @param array $messageOptions (OPTIONAL)
1291
     * @return Result
1292
     * @throws Client\InvalidMessageException
1293
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1294
     * @throws Exception
1295
     */
1296 8
    public function docIssuanceIssueCombined(
1297
        RequestOptions\DocIssuanceIssueCombinedOptions $options,
1298
        $messageOptions = []
1299
    ) {
1300 8
        $msgName = 'DocIssuance_IssueCombined';
1301
1302 8
        return $this->callMessage($msgName, $options, $messageOptions);
1303
    }
1304
1305
    /**
1306
     * DocRefund_InitRefund
1307
     *
1308
     * @param RequestOptions\DocRefundInitRefundOptions $options
1309
     * @param array $messageOptions (OPTIONAL)
1310
     * @return Result
1311
     * @throws Client\InvalidMessageException
1312
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1313
     * @throws Exception
1314
     */
1315 4
    public function docRefundInitRefund(
1316
        RequestOptions\DocRefundInitRefundOptions $options,
1317
        $messageOptions = []
1318
    ) {
1319 4
        $msgName = 'DocRefund_InitRefund';
1320
1321 4
        return $this->callMessage($msgName, $options, $messageOptions);
1322
    }
1323
1324
    /**
1325
     * DocRefund_IgnoreRefund
1326
     *
1327
     * @param RequestOptions\DocRefundIgnoreRefundOptions $options
1328
     * @param array $messageOptions (OPTIONAL)
1329
     * @return Result
1330
     * @throws Client\InvalidMessageException
1331
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1332
     * @throws Exception
1333
     */
1334 4
    public function docRefundIgnoreRefund(
1335
        RequestOptions\DocRefundIgnoreRefundOptions $options,
1336
        $messageOptions = []
1337
    ) {
1338 4
        $msgName = 'DocRefund_IgnoreRefund';
1339
1340 4
        return $this->callMessage($msgName, $options, $messageOptions);
1341
    }
1342
1343
    /**
1344
     * DocRefund_UpdateRefund
1345
     *
1346
     * @param RequestOptions\DocRefundUpdateRefundOptions $options
1347
     * @param array $messageOptions (OPTIONAL)
1348
     * @return Result
1349
     * @throws Client\InvalidMessageException
1350
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1351
     * @throws Exception
1352
     */
1353 4
    public function docRefundUpdateRefund(
1354
        RequestOptions\DocRefundUpdateRefundOptions $options,
1355
        $messageOptions = []
1356
    ) {
1357 4
        $msgName = 'DocRefund_UpdateRefund';
1358
1359 4
        return $this->callMessage($msgName, $options, $messageOptions);
1360
    }
1361
1362
    /**
1363
     * DocRefund_ProcessRefund
1364
     *
1365
     * @param RequestOptions\DocRefundProcessRefundOptions $options
1366
     * @param array $messageOptions (OPTIONAL)
1367
     * @return Result
1368
     * @throws Client\InvalidMessageException
1369
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1370
     * @throws Exception
1371
     */
1372 4
    public function docRefundProcessRefund(
1373
        RequestOptions\DocRefundProcessRefundOptions $options,
1374
        $messageOptions = []
1375
    ) {
1376 4
        $msgName = 'DocRefund_ProcessRefund';
1377
1378 4
        return $this->callMessage($msgName, $options, $messageOptions);
1379
    }
1380
1381
    /**
1382
     * Ticket_InitRefund
1383
     *
1384
     * @param RequestOptions\TicketInitRefundOptions $options
1385
     * @param array $messageOptions (OPTIONAL)
1386
     * @return Result
1387
     * @throws Client\InvalidMessageException
1388
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1389
     * @throws Exception
1390
     */
1391 4
    public function ticketInitRefund(
1392
        RequestOptions\TicketInitRefundOptions $options,
1393
        $messageOptions = []
1394
    ) {
1395 4
        $msgName = 'Ticket_InitRefund';
1396
1397 4
        return $this->callMessage($msgName, $options, $messageOptions);
1398
    }
1399
1400
    /**
1401
     * Ticket_IgnoreRefund
1402
     *
1403
     * @param RequestOptions\TicketIgnoreRefundOptions $options
1404
     * @param array $messageOptions (OPTIONAL)
1405
     * @return Result
1406
     * @throws Client\InvalidMessageException
1407
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1408
     * @throws Exception
1409
     */
1410 4
    public function ticketIgnoreRefund(
1411
        RequestOptions\TicketIgnoreRefundOptions $options,
1412
        $messageOptions = []
1413
    ) {
1414 4
        $msgName = 'Ticket_IgnoreRefund';
1415
1416 4
        return $this->callMessage($msgName, $options, $messageOptions);
1417
    }
1418
1419
    /**
1420
     * Ticket_ProcessRefund
1421
     *
1422
     * @param RequestOptions\TicketProcessRefundOptions $options
1423
     * @param array $messageOptions (OPTIONAL)
1424
     * @return Result
1425
     * @throws Client\InvalidMessageException
1426
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1427
     * @throws Exception
1428
     */
1429 4
    public function ticketProcessRefund(
1430
        RequestOptions\TicketProcessRefundOptions $options,
1431
        $messageOptions = []
1432
    ) {
1433 4
        $msgName = 'Ticket_ProcessRefund';
1434
1435 4
        return $this->callMessage($msgName, $options, $messageOptions);
1436
    }
1437
1438
    /**
1439
     * FOP_CreateFormOfPayment
1440
     *
1441
     * @param RequestOptions\FopCreateFopOptions $options
1442
     * @param array $messageOptions (OPTIONAL)
1443
     * @return Result
1444
     * @throws Client\InvalidMessageException
1445
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1446
     * @throws Exception
1447
     */
1448 4
    public function fopCreateFormOfPayment(RequestOptions\FopCreateFopOptions $options, $messageOptions = [])
1449
    {
1450 4
        $msgName = 'FOP_CreateFormOfPayment';
1451
1452 4
        return $this->callMessage($msgName, $options, $messageOptions);
1453
    }
1454
1455
1456
    /**
1457
     * FOP_CreateFormOfPayment
1458
     *
1459
     * @param RequestOptions\FopValidateFopOptions $options
1460
     * @param array $messageOptions (OPTIONAL)
1461
     * @return Result
1462
     * @throws Client\InvalidMessageException
1463
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1464
     * @throws Exception
1465
     */
1466 4
    public function fopValidateFOP(RequestOptions\FopValidateFopOptions $options, $messageOptions = [])
1467
    {
1468 4
        $msgName = 'FOP_ValidateFOP';
1469
1470 4
        return $this->callMessage($msgName, $options, $messageOptions);
1471
    }
1472
1473
    /**
1474
     * PriceXplorer_ExtremeSearch
1475
     *
1476
     * @param RequestOptions\PriceXplorerExtremeSearchOptions $options
1477
     * @param array $messageOptions (OPTIONAL)
1478
     * @return Result
1479
     * @throws Client\InvalidMessageException
1480
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1481
     * @throws Exception
1482
     */
1483 4
    public function priceXplorerExtremeSearch(
1484
        RequestOptions\PriceXplorerExtremeSearchOptions $options,
1485
        $messageOptions = []
1486
    ) {
1487 4
        $msgName = 'PriceXplorer_ExtremeSearch';
1488
1489 4
        return $this->callMessage($msgName, $options, $messageOptions);
1490
    }
1491
1492
    /**
1493
     * SalesReports_DisplayQueryReport
1494
     *
1495
     * @param RequestOptions\SalesReportsDisplayQueryReportOptions $options
1496
     * @param array $messageOptions (OPTIONAL)
1497
     * @return Result
1498
     * @throws Client\InvalidMessageException
1499
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1500
     * @throws Exception
1501
     */
1502 4
    public function salesReportsDisplayQueryReport(
1503
        RequestOptions\SalesReportsDisplayQueryReportOptions $options,
1504
        $messageOptions = []
1505
    ) {
1506 4
        $msgName = 'SalesReports_DisplayQueryReport';
1507
1508 4
        return $this->callMessage($msgName, $options, $messageOptions);
1509
    }
1510
1511
    /**
1512
     * Service_IntegratedPricing
1513
     *
1514
     * @param RequestOptions\ServiceIntegratedPricingOptions $options
1515
     * @param array $messageOptions (OPTIONAL)
1516
     * @return Result
1517
     * @throws Client\InvalidMessageException
1518
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1519
     * @throws Exception
1520
     */
1521 4
    public function serviceIntegratedPricing(
1522
        RequestOptions\ServiceIntegratedPricingOptions $options,
1523
        $messageOptions = []
1524
    ) {
1525 4
        $msgName = 'Service_IntegratedPricing';
1526
1527 4
        return $this->callMessage($msgName, $options, $messageOptions);
1528
    }
1529
1530
    /**
1531
     * Service_IntegratedCatalogue
1532
     *
1533
     * @param RequestOptions\ServiceIntegratedCatalogueOptions $options
1534
     * @param array $messageOptions (OPTIONAL)
1535
     * @return Result
1536
     * @throws Client\InvalidMessageException
1537
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1538
     * @throws Exception
1539
     */
1540 4
    public function serviceIntegratedCatalogue(
1541
        RequestOptions\ServiceIntegratedCatalogueOptions $options,
1542
        $messageOptions = []
1543
    ) {
1544 4
        $msgName = 'Service_IntegratedCatalogue';
1545
1546 4
        return $this->callMessage($msgName, $options, $messageOptions);
1547
    }
1548
1549
    /**
1550
     * Call a message with the given parameters
1551
     *
1552
     * @param string $messageName
1553
     * @param RequestOptions\RequestOptionsInterface $options
1554
     * @param array $messageOptions
1555
     * @param bool $endSession
1556
     * @return Result
1557
     * @throws Client\Exception
1558
     * @throws Client\Struct\InvalidArgumentException
1559
     * @throws Client\InvalidMessageException
1560
     * @throws Client\RequestCreator\MessageVersionUnsupportedException
1561
     * @throws \RuntimeException
1562
     * @throws \InvalidArgumentException
1563
     */
1564 320
    protected function callMessage($messageName, $options, $messageOptions, $endSession = false)
1565
    {
1566 320
        $messageOptions = $this->makeMessageOptions($messageOptions, $endSession);
1567
1568 320
        $this->lastMessage = $messageName;
1569
1570 320
        $sendResult = $this->sessionHandler->sendMessage(
1571 320
            $messageName,
1572 320
            $this->requestCreator->createRequest(
1573 320
                $messageName,
1574 160
                $options
1575 160
            ),
1576 160
            $messageOptions
1577 160
        );
1578
1579 320
        $response = $this->responseHandler->analyzeResponse(
1580 320
            $sendResult,
1581 160
            $messageName
1582 160
        );
1583
1584 320
        if ($messageOptions['returnXml'] === false) {
1585 4
            $response->responseXml = null;
1586 2
        }
1587
1588 320
        return $response;
1589
    }
1590
1591
    /**
1592
     * Make message options
1593
     *
1594
     * Message options are meta options when sending a message to the amadeus web services
1595
     * - 'endSession' (if stateful) : should we end the current session after sending this call?
1596
     * - 'returnXml' : Should we return the XML string in the Result::responseXml property?
1597
     *   (this overrides the default setting returnXml in the Amadeus\Client\Params for a single message)
1598
     *
1599
     * @param array $incoming The Message options chosen by the caller - if any.
1600
     * @param bool $endSession Switch if you want to terminate the current session after making the call.
1601
     * @return array
1602
     */
1603 344
    protected function makeMessageOptions(array $incoming, $endSession = false)
1604
    {
1605
        $options = [
1606 344
            'endSession' => $endSession,
1607 344
            'returnXml' => $this->returnResultXml
1608 172
        ];
1609
1610 344
        if (array_key_exists('endSession', $incoming)) {
1611 4
            $options['endSession'] = $incoming['endSession'];
1612 2
        }
1613
1614 344
        if (array_key_exists('returnXml', $incoming)) {
1615 12
            $options['returnXml'] = $incoming['returnXml'];
1616 6
        }
1617
1618 344
        return $options;
1619
    }
1620
}
1621