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); } }
internal InaraResponse HandleResponse(InaraResponse response) { Responses?.Invoke(this, response); return(response); }