Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PNR_Info service #13

Open
wants to merge 31 commits into
base: mass-refactoring
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
8173691
logger
alexkadyrov Jul 12, 2019
7cb307c
pnr_retrieve
alexkadyrov Jul 13, 2019
6ae820c
pnr_retrieve
alexkadyrov Jul 15, 2019
cf6e1f6
pnr_retrieve
alexkadyrov Jul 15, 2019
bbecf3b
правки по дискашену
alexkadyrov Jul 16, 2019
c90777b
правки по дискашену
alexkadyrov Jul 16, 2019
cfcb2c0
правки по дискашену
alexkadyrov Jul 16, 2019
074d09d
правки по дискашену
alexkadyrov Jul 16, 2019
9a13392
PNR info. Segments parsing
alexkadyrov Jul 16, 2019
4804268
Tests (#18)
smgladkovskiy Jul 16, 2019
1eb476d
Update README.md
smgladkovskiy Jul 16, 2019
1c0bdf7
PNR info. Segments parsing
alexkadyrov Jul 17, 2019
e924a5b
Merge branch 'mass-refactoring' into refactoring-2
alexkadyrov Jul 17, 2019
6af3efe
search request
alexkadyrov Jul 25, 2019
6048cf5
search request
alexkadyrov Jul 25, 2019
c9b4a60
search request
alexkadyrov Jul 25, 2019
3a8d88e
search complete
alexkadyrov Sep 27, 2019
89d0479
убрана бизнес логика, фильтры, скипы
alexkadyrov Sep 27, 2019
3b955a5
cleanup
alexkadyrov Sep 27, 2019
9e29012
config
alexkadyrov Sep 27, 2019
69652c3
got rid of config
alexkadyrov Sep 29, 2019
52b9b98
search request validation
alexkadyrov Sep 29, 2019
6a2edef
search request add travelers
alexkadyrov Sep 29, 2019
cac9f47
search request add travelers
alexkadyrov Sep 29, 2019
8dcb91d
тесты на make query и на валидаторы
alexkadyrov Sep 30, 2019
c251e9d
тесты на функции по работе с датами и временем
alexkadyrov Sep 30, 2019
9ee8a84
тесты на методы структур
alexkadyrov Sep 30, 2019
0bbdbe9
тесты на методы работы со слайсами и массивами
alexkadyrov Sep 30, 2019
af2a79d
deploy
alexkadyrov Sep 30, 2019
1886525
deploy
alexkadyrov Sep 30, 2019
83b7c9d
FareMasterPricerTravelBoardSearch V16.3
alexkadyrov Oct 2, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
version: 2.0

orbs:
codecov: codecov/[email protected]

jobs:
build:
docker:
- image: circleci/golang:1.12
steps:
- checkout
- run:
name: "Create directories"
command: |
mkdir -p /tmp/artifacts
- run:
name: "Run tests and collect coverage reports"
command: |
make test
mv coverage.html /tmp/artifacts
mv c.out /tmp/artifacts
- store_artifacts:
path: /tmp/artifacts
- run:
name: Upload Coverage Results
command: "bash <(curl -s https://codecov.io/bash) \
-f /tmp/artifacts/* \
-n ${CIRCLE_BUILD_NUM} \
-t ${CODECOV_TOKEN} \
-y .codecov.yml"
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.idea
.env
vendor
vendor
c.out
coverage.html
19 changes: 17 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,2 +1,17 @@
tests:
go test ./... -v
deps:
go mod vendor
.PHONY: deps

lint:
golint $(PKGS)
.PHONY: lint

test-unit:
go test ./... --race --cover -count=1 -timeout 1s -coverprofile=c.out -v
.PHONY: test-unit

coverage-html:
go tool cover -html=c.out -o coverage.html

test: deps test-unit coverage-html
.PHONY: test
57 changes: 32 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Amadeus WBS SDK

[![CircleCI](https://circleci.com/gh/tmconsulting/amadeus-golang-sdk/tree/mass-refactoring.svg?style=shield)](https://circleci.com/gh/tmconsulting/amadeus-golang-sdk/tree/mass-refactoring) [![codecov](https://codecov.io/gh/tmconsulting/amadeus-golang-sdk/branch/mass-refactoring/graph/badge.svg)](https://codecov.io/gh/tmconsulting/amadeus-golang-sdk)

This package contains structures, forms, functions and SOAP handler for Amadeus WS.

## Methods implementation progress
Expand All @@ -26,6 +28,7 @@ This package contains structures, forms, functions and SOAP handler for Amadeus
- [ ] Queue_RemoveItem (03.1)
- [x] Security_Authenticate (06.1)
- [x] Security_SignOut (04.1)
- [ ] Service_BookPriceService
- [x] Ticket_CreateTSTFromPricing (04.1)
- [ ] Ticket_CreditCardCheck (06.1)
- [x] Ticket_DeleteTST (04.1)
Expand All @@ -36,47 +39,51 @@ This package contains structures, forms, functions and SOAP handler for Amadeus

It is go gettable and go.mod powered

$ go get github.com/tmconsulting/amadeus-golang-sdk@latest
$ go get github.com/tmconsulting/amadeus-golang-sdk@mass-refactoring

## Usage

Prepare log writer realisation if you need to see outgoing and incoming xmls (null logging used if nil is passed),
methods map that you want (and allowed by Amadeus) to run (use `GetLatestMethodsMap()` to use latest methods versions
that are implemented) and credentials to connect: url, originator, password (not in base64!). Initiate SDK and service:
Prepare log writer realisation if you need to see outgoing and incoming xmls (null logging used if nil is passed).
Check methods version that will be used in SDK (use `GetLatestMethodsMap()` to use latest methods versions that are
implemented). Ыуе credentials to connect: url, originator, password (not in base64!). Initiate SDK and service and use
service methods:

```go
package main

import (
"log"
"github.com/tmconsulting/amadeus-golang-sdk/logger/stdoutLogger"
"github.com/tmconsulting/amadeus-golang-sdk/sdk"
"github.com/tmconsulting/amadeus-golang-sdk/service"
"log"
"github.com/tmconsulting/amadeus-golang-sdk/client"
"github.com/tmconsulting/amadeus-golang-sdk/service"
"github.com/tmconsulting/amadeus-golang-sdk/structs/commandCryptic"
)

func main() {
url := "https://nodeD1.test.webservices.amadeus.com/1ASIWXXXXXX"
originator := "WSBENXXX"
passwordRaw := "dGhlIHBhc3N3b3Jk"
officeID := "BRUXX1111"
client := sdk.CreateAmadeusClient(url, originator, passwordRaw, officeID, stdoutLogger.Init())

amadeusSDK := service.NewSKD(client, service.GetLatestMethodsMap())

response, err := amadeusSDK.CommandCryptic("AN20MAYMOWLED/ALH")
if err != nil {
log.Fatalf("error: %v", err)
}

log.Printf("response: %v\n", response)
url := "https://nodeD1.test.webservices.amadeus.com/1ASIWXXXXXX"
originator := "WSBENXXX"
passwordRaw := "dGhlIHBhc3N3b3Jk"
officeID := "BRUXX1111"
cl := client.New(client.SetURL(url), client.SetUser(originator), client.SetPassword(passwordRaw), client.SetAgent(officeID))
s := service.New(cl)
resp, err := s.CommandCryptic("AN20DECMOWLED/ALH")
if err != nil {
panic(err)
}
log.Printf("responses: %v\n", resp)
}
```

## Testing

Create test `.env` file from [test.env-example](test.env-example), or run with ENV variables `make test`
(or `go test ./... -v`)
Run tests (`make test` or `go test ./... -v`) with ENV variabless:
* URL
* ORIGINATOR
* PASSWORD_RAW
* OFFICE_ID

## Contribution

Expand Down
10 changes: 5 additions & 5 deletions client/book.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/pricePNRWithBookingClass/v14.1/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/addMultiElements/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/cancel/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/reply/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v11.3/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/ticket/createTSTFromPricing/v04.1"
)

Expand All @@ -17,8 +17,8 @@ func (client *AmadeusClient) AirSellFromRecommendationV052(query *Air_SellFromRe
return &reply, header, err
}

func (client *AmadeusClient) PNRAddMultiElementsV113(query *PNR_AddMultiElementsRequest_v11_3.Request) (*PNR_Reply_v11_3.Response, *ResponseSOAPHeader, error) {
var reply PNR_Reply_v11_3.Response
func (client *AmadeusClient) PNRAddMultiElementsV113(query *PNR_AddMultiElementsRequest_v11_3.Request) (*PNR_Retrieve_v11_3_response.Response, *ResponseSOAPHeader, error) {
var reply PNR_Retrieve_v11_3_response.Response
header, err := client.service.Call(soapUrl, "PNRADD_11_3_1A", query, &reply, client)
return &reply, header, err
}
Expand All @@ -35,8 +35,8 @@ func (client *AmadeusClient) TicketCreateTSTFromPricingV041(query *Ticket_Create
return &reply, header, err
}

func (client *AmadeusClient) PNRCancelV113(query *PNR_Cancel_v11_3.Request) (*PNR_Reply_v11_3.Response, *ResponseSOAPHeader, error) {
var reply PNR_Reply_v11_3.Response
func (client *AmadeusClient) PNRCancelV113(query *PNR_Cancel_v11_3.Request) (*PNR_Retrieve_v11_3_response.Response, *ResponseSOAPHeader, error) {
var reply PNR_Retrieve_v11_3_response.Response
header, err := client.service.Call(soapUrl, "PNRXCL_11_3_1A", query, &reply, client)
return &reply, header, err
}
16 changes: 12 additions & 4 deletions client/information.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,24 @@ import (
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/checkRules/v07.1/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/informativePricingWithoutPNR/v12.4/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/informativePricingWithoutPNR/v12.4/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/reply/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v11.3/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v11.3/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v19.1/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v19.1/response"
)

func (client *AmadeusClient) PNRRetrieveV113(query *PNR_Retrieve_v11_3.Request) (*PNR_Reply_v11_3.Response, *ResponseSOAPHeader, error) {
var reply PNR_Reply_v11_3.Response
func (client *AmadeusClient) PNRRetrieveV113(query *PNR_Retrieve_v11_3_request.Request) (*PNR_Retrieve_v11_3_response.Response, *ResponseSOAPHeader, error) {
var reply PNR_Retrieve_v11_3_response.Response
header, err := client.service.Call(soapUrl, "PNRRET_11_3_1A", query, &reply, client)
return &reply, header, err
}

func (client *AmadeusClient) PNRRetrieveV191(query *PNR_Retrieve_v19_1_request.Request) (*PNR_Retrieve_v19_1_response.Response, *ResponseSOAPHeader, error) {
var reply PNR_Retrieve_v19_1_response.Response
header, err := client.service.Call(soapUrl, "PNRRET_19_1_1A", query, &reply, client)
return &reply, header, err
}

func (client *AmadeusClient) FareInformativePricingWithoutPNRV124(query *Fare_InformativePricingWithoutPNR_v12_4.Request) (*Fare_InformativePricingWithoutPNRReply_v12_4.Response, *ResponseSOAPHeader, error) {
var reply Fare_InformativePricingWithoutPNRReply_v12_4.Response
header, err := client.service.Call(soapUrl, "TIPNRQ_12_4_1A", query, &reply, client)
Expand Down
11 changes: 10 additions & 1 deletion client/options.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package client

import "github.com/tmconsulting/amadeus-golang-sdk/logger"
import (
"github.com/tmconsulting/amadeus-golang-sdk/configuration"
"github.com/tmconsulting/amadeus-golang-sdk/logger"
)

// Option describes a functional option for configuring AmadeusClient.
type Option func(client *AmadeusClient)
Expand Down Expand Up @@ -38,3 +41,9 @@ func SetLogger(l logger.LogWriter) Option {
c.service.Client.Logger = logger.NewLogger(l)
}
}

func SetConfig(config configuration.ConfigType) Option {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не надо так. Опции -- для опций. Тут не нужно передавать структурой целой конфиг. Если нужен формат -- сделай "setTimeFormat" функцию и всё. По-дефолту формат в свойство клиента и переопределяй опцией.

return func(c *AmadeusClient) {
configuration.Config = config
}
}
2 changes: 2 additions & 0 deletions client/soapClient.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,8 @@ func (s *SOAP4Client) Call(soapUrl, soapAction, messageId string, query, reply i
return nil, err
}

fmt.Println("XML Response: ", string(rawbody))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это в логи нужно. дебагом


err = s.Logger.Push("inc", soapAction, string(rawbody))
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Failed to fire hook log_response: %v\n", err)
Expand Down
14 changes: 14 additions & 0 deletions configuration/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package configuration
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

не нужен конфиг тут от слова совсем!


var Config ConfigType

type ConfigType struct {
Formats formatsConfig
Provider string
}

type formatsConfig struct {
Time string
Date string
XMLDate string
}
23 changes: 20 additions & 3 deletions service/10_search.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,29 @@ import (
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/informativeBestPricingWithoutPNR/v12.4/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/informativePricingWithoutPNR/v12.4/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/informativePricingWithoutPNR/v12.4/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/masterPricerTravelBoardSearch"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/masterPricerTravelBoardSearch/v14.3/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/masterPricerTravelBoardSearch/v14.3/response"
//"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/masterPricerTravelBoardSearch/v14.3/response"
)

func (s *service) FareMasterPricerTravelBoardSearch(query *Fare_MasterPricerTravelBoardSearchRequest_v14_3.Request) (*Fare_MasterPricerTravelBoardSearchResponse_v14_3.Response, *client.ResponseSOAPHeader, error) {
return s.sdk.FareMasterPricerTravelBoardSearchV143(query)
func (s *service) FareMasterPricerTravelBoardSearch(query *search.SearchRequest) (*search.SearchResponse, *client.ResponseSOAPHeader, error) {
switch s.mm[FareMasterPricerTravelBoardSearch] {
case FareMasterPricerTravelBoardSearchV143:
request := Fare_MasterPricerTravelBoardSearchRequest_v14_3.MakeRequest(query)
response, header, err := s.sdk.FareMasterPricerTravelBoardSearchV143(request)
if response == nil {
return nil, header, err
}

errResponse := response.CheckErrorReply()
if errResponse != nil {
return nil, header, errResponse
}

reply, err := response.ToCommon(query)
return reply, header, err
}
return nil, nil, nil
}

func (s *service) FareInformativeBestPricingWithout(query *Fare_InformativeBestPricingWithoutPNRRequest_v12_4.Request) (*Fare_InformativeBestPricingWithoutPNRResponse_v12_4.Response, *client.ResponseSOAPHeader, error) {
Expand Down
5 changes: 3 additions & 2 deletions service/20_book.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,16 @@ import (
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/pricePNRWithBookingClass/v14.1/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/pricePNRWithBookingClass/v14.1/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/addMultiElements/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/reply/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v11.3/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/ticket/createTSTFromPricing/v04.1"
)

func (s *service) AirSellFromRecommendation(query *Air_SellFromRecommendationRequest_v05_2.Request) (*Air_SellFromRecommendationResponse_v05_2.Response, *client.ResponseSOAPHeader, error) {
return s.sdk.AirSellFromRecommendationV052(query)
}

func (s *service) PNRAddMultiElements(query *PNR_AddMultiElementsRequest_v11_3.Request) (*PNR_Reply_v11_3.Response, *client.ResponseSOAPHeader, error) {
func (s *service) PNRAddMultiElements(query *PNR_AddMultiElementsRequest_v11_3.Request) (*PNR_Retrieve_v11_3_response.Response, *client.ResponseSOAPHeader, error) {
// @TODO сделать версионирование
return s.sdk.PNRAddMultiElementsV113(query)
}

Expand Down
4 changes: 2 additions & 2 deletions service/21_cancel.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package service
import (
"github.com/tmconsulting/amadeus-golang-sdk/client"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/cancel/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/reply/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v11.3/response"
)

func (s *service) PNRCancel(query *PNR_Cancel_v11_3.Request) (*PNR_Reply_v11_3.Response, *client.ResponseSOAPHeader, error) {
func (s *service) PNRCancel(query *PNR_Cancel_v11_3.Request) (*PNR_Retrieve_v11_3_response.Response, *client.ResponseSOAPHeader, error) {
return s.sdk.PNRCancelV113(query)
}
25 changes: 21 additions & 4 deletions service/99_information.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,31 @@ import (
"github.com/tmconsulting/amadeus-golang-sdk/structs/commandCryptic/v07.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/checkRules/v07.1/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/fare/checkRules/v07.1/response"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/reply/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v11.3"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v11.3/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/pnr/retrieve/v19.1/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/ticket/displayTST/v07.1/request"
"github.com/tmconsulting/amadeus-golang-sdk/structs/ticket/displayTST/v07.1/response"
)

func (s *service) PNRRetrieve(query *PNR_Retrieve_v11_3.Request) (*PNR_Reply_v11_3.Response, *client.ResponseSOAPHeader, error) {
return s.sdk.PNRRetrieveV113(query)
func (s *service) PNRRetrieve(query *PNR_Information.Request) (*PNR_Information.Response, *client.ResponseSOAPHeader, error) {
switch s.mm[PNRRetrieve] {
case PNRRetrieveV113:
query := PNR_Retrieve_v11_3_request.MakeRequest(query)
response, header, err := s.sdk.PNRRetrieveV113(query)
if response == nil {
return nil, header, err
}
return response.ToCommon(), header, err
case PNRRetrieveV191:
query := PNR_Retrieve_v19_1_request.MakeRequest(query)
response, header, err := s.sdk.PNRRetrieveV191(query)
if response == nil {
return nil, header, err
}
return response.ToCommon(), header, err
}
return nil, nil, nil
}

func (s *service) TicketDisplayTST(query *Ticket_DisplayTSTRequest_v07_1.Request) (*Ticket_DisplayTSTResponse_v07_1.Response, *client.ResponseSOAPHeader, error) {
Expand Down
1 change: 1 addition & 0 deletions service/methods.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ var ErrNoRealisation = errors.New("sorry, method has no realisation")
// Methods versions sdk realisation
const (
PNRRetrieveV113 MethodVersion = iota
PNRRetrieveV191
TicketDisplayTSTV071
FareInformativePricingWithoutPNRV124
FareCheckRulesV071
Expand Down
Loading