예제 #1
0
        private InaraResponse ProcessResponse(Response response)
        {
            if (response?.Header == null)
            {
                return new InaraResponse {
                           Status = ResponseStatus.Unprocessed
                }
            }
            ;

            var result = new InaraResponse
            {
                Status     = response.Header.Status,
                StatusText = response.Header.StatusText,
                User       = response.Header.Data
            };

            if (response.Events == null || response.Events.Length == 0)
            {
                return(result);
            }

            foreach (var requestEvent in Request.Events)
            {
                // try match request and response
                var responseEvent = response.Events.FirstOrDefault(e => e.Id == requestEvent.Id);

                switch (requestEvent.Name)
                {
                case "getCommanderProfile":
                    result.Events.Add(CommanderResult.Process(responseEvent, _inara));
                    break;

                case "addCommanderShip":
                case "setCommanderShip":
                case "setCommanderShipTransfer":
                    result.Events.Add(ShipResult.Process(responseEvent, _inara));
                    break;

                case "addCommanderTravelDock":
                case "addCommanderTravelFSDJump":
                case "setCommanderTravelLocation":
                    result.Events.Add(TravelResult.Process(responseEvent, _inara));
                    break;

                case "getCommunityGoalsRecent":
                    break;

                default:
                    result.Events.Add(new EventResult
                    {
                        Name       = requestEvent.Name,
                        Status     = responseEvent?.Status ?? ResponseStatus.OK,
                        StatusText = responseEvent?.StatusText
                    });
                    break;
                }
            }

            return(result);
        }
    }
예제 #2
0
 internal InaraResponse HandleResponse(InaraResponse response)
 {
     Responses?.Invoke(this, response);
     return(response);
 }