Ejemplo n.º 1
0
 public Api(string accessToken)
 {
     _accessToken = accessToken;
     _uri = @"https://api.telegram.org/bot" + _accessToken + "/";
     _fileUri = @"https://api.telegram.org/file/bot" + _accessToken + "/";
     _responseParser = new ResponseParser();
 }
Ejemplo n.º 2
0
        public static ServerInfoResult Parse(byte[] data)
        {
            var parser = new ResponseParser(data);
            parser.CurrentPosition += 5; //Header
            var result = new ServerInfoResult();
            result.Protocol = parser.GetByte();
            result.Name = parser.GetStringToTermination();
            result.Map = parser.GetStringToTermination();
            result.Folder = parser.GetStringToTermination();
            result.Game = parser.GetStringToTermination();
            result.ID = parser.GetShort();
            result.Players = parser.GetByte();
            result.MaxPlayers = parser.GetByte();
            result.Bots = parser.GetByte();
            result.ServerType = parser.GetStringOfByte();
            result.Environment = parser.GetStringOfByte();
            result.Visibility = parser.GetByte();
            result.VAC = parser.GetByte();
            result.Version = parser.GetStringToTermination();

            //get EDF
            uint edf = parser.GetByte();

            if ((edf & 0x80) != 0) //has port number
            {
                result.Port = parser.GetShort();
            }

            return result;
        }
		public void can_deserialise_response_user_cards()
		{
			var xmlParser = new ResponseParser<AddCard>();

			var deserializedCards = xmlParser.Parse(response);
			
			Assert.That(deserializedCards, Is.Not.Null);
		}
		public void can_deserialise_response_user_cards()
		{
			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var deserializedCards = xmlParser.Parse<AddCard>(response);
			
			Assert.That(deserializedCards, Is.Not.Null);
		}
Ejemplo n.º 5
0
        public void SubscribeReplyExtranonceCanHaveDifferentLengths(string dummyReply, string sessionId, byte[] extraNonce1, int extraNonce2sz)
        {
            var uglee    = JsonConvert.DeserializeObject <Newtonsoft.Json.Linq.JArray>(dummyReply);
            var response = ResponseParser.MiningSubscribe(uglee);

            Assert.Equal(sessionId, response.sessionId);
            Assert.Equal(extraNonce1, response.extraNonceOne);
            Assert.Equal(extraNonce2sz, response.extraNonceTwoByteCount);
        }
Ejemplo n.º 6
0
        public void ReaderNextEntityWithRootEntityWrongName()
        {
            MemoryStream input = new MemoryStream(UTF8Encoding.UTF8.GetBytes(Properties.Resources.ResponseWithBlob));

            XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(input, XmlDictionaryReaderQuotas.Max);

            ResponseParser<Z> parser = new ResponseParser<Z>();
            Z mapStudioFile = parser.ReadNextEntity(reader);
        }
Ejemplo n.º 7
0
        public async Task ParseTokenResponse_post_binding_sp_initiated()
        {
            //ARRANGE
            var inResponseTo = Guid.NewGuid().ToString();

            var response            = ResponseFactoryMock.GetTokenResponseSuccess(inResponseTo, StatusCodes.Success);
            var logger              = new LogProviderMock();
            var serialised          = ResponseFactoryMock.Serialize(response);
            var xmlSignatureManager = new XmlSignatureManager();
            var document            = new XmlDocument();

            document.LoadXml(serialised);
            var cert = AssertionFactroryMock.GetMockCertificate();

            xmlSignatureManager.SignXml(document, response.ID, cert.PrivateKey, null);
            var base64Encoded = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(document.DocumentElement.OuterXml));

            var compressor           = new DeflateCompressor();
            var encoder              = new MessageEncoding(compressor);
            var jsonSerialiser       = new NSJsonSerializer(new DefaultSettingsProvider());
            var relayStateSerialiser = new RelaystateSerialiser(jsonSerialiser, encoder, logger) as IRelayStateSerialiser;
            var relayState           = await relayStateSerialiser.Serialize(new Dictionary <string, object> {
                { "Key", "Value" }
            });

            var form = new SAMLForm();

            form.SetResponse(base64Encoded);
            form.SetRelatState(relayState);

            Func <Type, IMetadataHandler> metadataHandlerFactory = t => new MetadataEntitityDescriptorHandler();

            var certManager      = new CertificateManager(logger);
            var signatureManager = new XmlSignatureManager();
            Func <IEnumerable <ResponseValidationRule> > rulesResolver = () => new[] { new ResponseSignatureRule(logger, certManager, signatureManager) };
            var validator = new Federation.Protocols.Response.Validation.ResponseValidator(logger, new RuleFactory(rulesResolver));
            var configurationRetrieverMock        = new ConfigurationRetrieverMock();
            var federationPartyContextBuilderMock = new FederationPartyContextBuilderMock();
            var configurationManger = new ConfigurationManager <MetadataBase>(federationPartyContextBuilderMock, configurationRetrieverMock);
            var relayStateHandler   = new RelayStateHandler(relayStateSerialiser, logger);
            var responseParser      = new ResponseParser(metadataHandlerFactory, t => new SamlTokenResponseParser(logger),
                                                         configurationManger, relayStateHandler, logger, validator);
            var postBindingDecoder = new PostBindingDecoder(logger);
            var message            = await postBindingDecoder.Decode(form.HiddenControls.ToDictionary(k => k.Key, v => v.Value));

            var context = new SamlInboundContext
            {
                Message            = message,
                DescriptorResolver = m => metadataHandlerFactory(typeof(object)).GetIdentityProviderSingleSignOnDescriptor(m).Single().Roles.Single()
            };
            //ACT
            var result = await responseParser.Parse(context);

            //ASSERT
            Assert.IsTrue(result.IsValidated);
        }
Ejemplo n.º 8
0
        public void ErrorResponse_Deserialization_ThrowsApplicationException()
        {
            var messageContents = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<Response>
  <Status>ERROR</Status>
  <ErrorDescription>A detailed explanation of the error</ErrorDescription>
</Response>";

            Assert.Throws <ApplicationException>(() => ResponseParser.Deserialize <ErrorResponse>(messageContents));
        }
Ejemplo n.º 9
0
        public List <SimpleMessage> listReceivedSMS()
        {
            this.validateAccountAndPassword();
            base.ContentType = BaseServiceSending.CONTENT_TYPE_APP_URLENCODED;
            StringBuilder        parameters = getParameters();
            Stream               stream     = sendMoRequest(parameters.ToString());
            List <SimpleMessage> messages   = ResponseParser.getMessagesFromStream(stream);

            return(messages);
        }
Ejemplo n.º 10
0
        public void ShouldRiseErrorIfLeverageBelowZero()
        {
            var parameters = "--open 1.2 --close 2 --volume 1.5 --contract-size 100000 --leverage -2";

            var response = ResponseParser.Parse(new FileStarter().LaunchProcess(parameters));

            Assert.That(response[0].Errors.Count == 1, "wrong errors count");
            Assert.That(response[0].Errors[0].Contains("Leverage must be greater than 0"),
                        "Wrong error: " + response[0].Errors[0]);
        }
Ejemplo n.º 11
0
        static bool CheckCertificate(IOcesCertificate certificate)
        {
            var    environment = RootCertificates.GetEnvironment(certificate.IssuingCa);
            string serverUrl   = certificate.OcspUrl;

            var      reqAndId = RequestGenerator.CreateOcspRequest(certificate);
            OcspResp resp     = Requester.Send(reqAndId.Request, serverUrl);

            return(ResponseParser.CertificateIsValid(reqAndId.Id, resp, certificate));
        }
Ejemplo n.º 12
0
        public void CanImplicitlyDeserializeHelloMessage()
        {
            var messageContent = @"{""type"":""hello""}";

            var parser = new ResponseParser();
            var result = parser.DeserializeEvent(messageContent) as Hello;

            Assert.NotNull(result);
            Assert.Equal(EventType.Hello, result.Type);
        }
Ejemplo n.º 13
0
        public void ExtractFlights_ShouldReturnFlights_WhenHtmlContainsData()
        {
            var path =
                @"C:\dev\projects\perso\app1\ConsoleApplication2\TestProject1\Files\InboundFlight.html";
            var fileInfo = new FileInfo(path);
            var res      = new  ResponseParser(fileInfo).ExtractFlights();

            Assert.That(res[0].Number, Is.EqualTo("TO4011"));
            Assert.That(res[1].Number, Is.EqualTo("HV5193"));
        }
Ejemplo n.º 14
0
        public void Test1(string response, int processed, int failed, int total, decimal secondsSpent)
        {
            var parser = new ResponseParser();
            var parsed = parser.Parse(response);

            Assert.Equal(processed, parsed.Processed);
            Assert.Equal(failed, parsed.Failed);
            Assert.Equal(secondsSpent, parsed.SecondsSpent);
            Assert.Equal(total, parsed.Total);
        }
Ejemplo n.º 15
0
        public void ParsingGoodSubscribeReply(string dummyReply, string sessionId, byte[] extraNonce1, int extraNonce2sz)
        {
            // That's how it comes out from the parsing. I don't like it at all but that's it.
            var uglee    = JsonConvert.DeserializeObject <Newtonsoft.Json.Linq.JArray>(dummyReply);
            var response = ResponseParser.MiningSubscribe(uglee);

            Assert.Equal(sessionId, response.sessionId);
            Assert.Equal(extraNonce1, response.extraNonceOne);
            Assert.Equal(extraNonce2sz, response.extraNonceTwoByteCount);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// List the parts of an incomplete large file upload.
        /// </summary>
        /// <param name="fileId"></param>
        /// <param name="startPartNumber"></param>
        /// <param name="maxPartCount"></param>
        /// <param name="cancelToken"></param>
        /// <returns></returns>
        public async Task <B2LargeFileParts> ListPartsForIncompleteFile(string fileId, int startPartNumber, int maxPartCount, CancellationToken cancelToken = default(CancellationToken))
        {
            var request = LargeFileRequestGenerators.ListParts(_options, fileId, startPartNumber, maxPartCount);

            // Send the request
            var response = await _client.SendAsync(request, cancelToken);

            // Create B2File from response
            return(await ResponseParser.ParseResponse <B2LargeFileParts>(response, _api));
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Cancel a large file upload
        /// </summary>
        /// <param name="fileId"></param>
        /// <param name="cancelToken"></param>
        /// <returns></returns>
        public async Task <B2CancelledFile> CancelLargeFile(string fileId, CancellationToken cancelToken = default(CancellationToken))
        {
            var request = LargeFileRequestGenerators.Cancel(_options, fileId);

            // Send the request
            var response = await _client.SendAsync(request, cancelToken);

            // Create B2File from response
            return(await ResponseParser.ParseResponse <B2CancelledFile>(response, _api));
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Get an upload url for use with one Thread.
        /// </summary>
        /// <param name="bucketId"></param>
        /// <param name="cancelToken"></param>
        /// <returns></returns>
        public async Task <B2UploadPartUrl> GetUploadPartUrl(string fileId, CancellationToken cancelToken = default(CancellationToken))
        {
            var request = LargeFileRequestGenerators.GetUploadPartUrl(_options, fileId);

            var uploadUrlResponse = await _client.SendAsync(request, cancelToken);

            var uploadUrl = await ResponseParser.ParseResponse <B2UploadPartUrl>(uploadUrlResponse, _api);

            return(uploadUrl);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Downloads one file by providing the name of the bucket and the name of the file.
        /// </summary>
        /// <param name="fileId"></param>
        /// <param name="fileName"></param>
        /// <param name="bucketId"></param>
        /// <param name="cancelToken"></param>
        /// <returns></returns>
        public async Task <B2File> FinishLargeFile(string fileId, string[] partSHA1Array, CancellationToken cancelToken = default(CancellationToken))
        {
            var request = LargeFileRequestGenerators.Finish(_options, fileId, partSHA1Array);

            // Send the request
            var response = await _client.SendAsync(request, cancelToken);

            // Create B2File from response
            return(await ResponseParser.ParseResponse <B2File>(response, _api));
        }
Ejemplo n.º 20
0
        public void should_deserialize_emtpy_release_type_to_unknown()
        {
            var responseXml = File.ReadAllText("StubResponses/ArtistReleases.xml");
            var response    = new Response(HttpStatusCode.OK, responseXml);

            var xmlParser = new ResponseParser(new ApiResponseDetector());
            var release   = xmlParser.Parse <ArtistReleases>(response).Releases.First();

            Assert.That(release.Type, Is.EqualTo(ReleaseType.Unknown));
        }
Ejemplo n.º 21
0
        /// <summary>
        /// List all the incomplete large file uploads for the supplied bucket
        /// </summary>
        /// <param name="bucketId"></param>
        /// <param name="startFileId"></param>
        /// <param name="maxFileCount"></param>
        /// <param name="cancelToken"></param>
        /// <returns></returns>
        public async Task <B2IncompleteLargeFiles> ListIncompleteFiles(string bucketId, string startFileId = "", string maxFileCount = "", CancellationToken cancelToken = default(CancellationToken))
        {
            var request = LargeFileRequestGenerators.IncompleteFiles(_options, bucketId, startFileId, maxFileCount);

            // Send the request
            var response = await _client.SendAsync(request, cancelToken);

            // Create B2File from response
            return(await ResponseParser.ParseResponse <B2IncompleteLargeFiles>(response, _api));
        }
		public void should_deserialize_emtpy_release_type_to_unknown()
		{
			var responseXml = File.ReadAllText("StubResponses/ArtistReleases.xml");
			var response = new Response(HttpStatusCode.OK, responseXml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());
			var release = xmlParser.Parse<ArtistReleases>(response).Releases.First();

			Assert.That(release.Type,Is.EqualTo(ReleaseType.Unknown));
		}
Ejemplo n.º 23
0
        public void CanImplicitlyDeserializeHelloMessage()
        {
            var messageContent = @"{""type"":""hello""}";

            var parser = new ResponseParser();
            var result = parser.DeserializeEvent(messageContent) as Hello;

            Assert.NotNull(result);
            Assert.Equal(EventType.Hello, result.Type);
        }
Ejemplo n.º 24
0
        public void ParseNotificationMultiple()
        {
            var r = (FsResult <IEnumerable <FsNotification> >)ResponseParser.Parse(Verb.GetNotify, null, Xml.NotificationMultiple);

            Assert.IsTrue(r.Succeeded);
            Assert.AreEqual(2, r.Value.Count());
            Assert.AreEqual("netremote.play.info.name", r.Value.ElementAt(0).Name);
            Assert.AreEqual("Lounge FM Vienna", r.Value.ElementAt(0).GetValue <string>());
            Assert.AreEqual("netremote.play.info.text", r.Value.ElementAt(1).Name);
            Assert.AreEqual("Coralie Clément - L'Ombre Et La Lumiere", r.Value.ElementAt(1).GetValue <string>());
        }
		public void Can_Deserialise_ok_response_without_body__as_DeleteCard()
		{
			const string ResponseXml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><response status=\"ok\" version=\"1.2\" />";

			var response = new Response(HttpStatusCode.OK, ResponseXml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());
			var result = xmlParser.Parse<DeleteCard>(response);

			Assert.That(result, Is.Not.Null);
		}
Ejemplo n.º 26
0
        public virtual IJob HandleResponse(IMpdResponse response)
        {
            if (response.IsErrorResponse)
            {
                return(null);
            }

            var parser = new ResponseParser(response);

            return(parser.GetJobInformation());
        }
Ejemplo n.º 27
0
        public ISticker HandleResponse(IMpdResponse response)
        {
            if (response.IsErrorResponse)
            {
                return(null);
            }

            var parser = new ResponseParser(response);

            return(parser.GetListedSticker(Path, StickerType).FirstOrDefault());
        }
Ejemplo n.º 28
0
        public virtual IEnumerable <ISticker> HandleResponse(IMpdResponse response)
        {
            if (response.IsErrorResponse)
            {
                return(null);
            }

            var parser = new ResponseParser(response);

            return(parser.GetListedSticker(Path, StickerType));
        }
		public void can_deseralize_card_types()
		{
			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var result = xmlParser.Parse<PaymentCardTypes>(stubResponse);

			Assert.That(result.CardTypes.Count(),Is.EqualTo(4));
			var lastCard = result.CardTypes.Last();
			Assert.That(lastCard.Type, Is.EqualTo("American Express"));
			Assert.That(lastCard.Id, Is.EqualTo("AMEX"));
		}
Ejemplo n.º 30
0
        public virtual IEnumerable <string> HandleResponse(IMpdResponse response)
        {
            if (response.IsErrorResponse)
            {
                return(null);
            }

            var parser = new ResponseParser(response);

            return(parser.GetValueList(Key));
        }
Ejemplo n.º 31
0
        /// <summary>
        /// Handles the response and returns an item DTO or null if none is found
        /// </summary>
        /// <param name="response">MPD response</param>
        /// <returns>item DTO with metadata</returns>
        public IItem HandleResponse(IMpdResponse response)
        {
            if (!response.HasContent)
            {
                return(null);
            }

            var parser = new ResponseParser(response);

            return(parser.GetListedTracks().ToList().FirstOrDefault());
        }
Ejemplo n.º 32
0
        private List <NotificationTrigger> GetNotificationTriggersInternal(int objectId, CancellationToken token)
        {
            var xmlResponse = ObjectEngine.GetObjectsXml(new NotificationTriggerParameters(objectId), token: token);

            var parsed = ResponseParser.ParseNotificationTriggerResponse(objectId, xmlResponse);

            UpdateTriggerChannels(parsed, token);
            UpdateTriggerActions(parsed, token);

            return(parsed);
        }
Ejemplo n.º 33
0
        public JsonRpcClient Build()
        {
            IJsonConverter       jsonConverter       = new JsonConverter();
            IRequestComposer     requestComposer     = new RequestComposer(new RequestFactory(), jsonConverter);
            IResponseParser      responseParser      = new ResponseParser(jsonConverter);
            INotificationHandler notificationHandler = new NotificationHandler(responseParser, _notificationBaseType);
            IResultHandler       resultHandler       = new ResultHandler(responseParser, _logger);
            IReceiverHandler     receiverHandler     = new ReceiverHandler(_connection, responseParser, notificationHandler, resultHandler);

            return(new JsonRpcClient(_connection, requestComposer, resultHandler, notificationHandler));
        }
Ejemplo n.º 34
0
        public IEnumerable <IPlaylist> HandleResponse(IMpdResponse response)
        {
            if (response.HasContent)
            {
                return(null);
            }

            var parser = new ResponseParser(response);

            return(parser.GetListedPlaylists());
        }
Ejemplo n.º 35
0
        private async Task UpdateTriggerActionsAsync(List <NotificationTrigger> triggers, CancellationToken token)
        {
            var actions = ResponseParser.GroupTriggerActions(triggers);

            var parameters = new NotificationActionParameters(actions.Select(a => a.Key).ToArray());

            var tasks = actions.Select(g => GetNotificationActionPropertiesAsync(g.Key, token));

            var normal = await ObjectEngine.GetObjectsXmlAsync(parameters, token : token).ConfigureAwait(false);

            //All the properties of all desired notifications
            var results = await Task.WhenAll(tasks).ConfigureAwait(false);

            //For each different notification action
            for (int i = 0; i < actions.Count; i++)
            {
                var xDoc = RequestParser.ExtractActionXml(normal, results[i], actions[i].Key);

                //Foreach notification action with the same ID
                foreach (var action in actions[i])
                {
                    action.LazyXml = new Lazy <XDocument>(() => xDoc);
                }
            }

            var list = ResponseParser.GroupActionSchedules(actions.SelectMany(g => g).ToList()).ToList();

            List <Schedule> schedules = new List <Schedule>();

            if (list.Count > 0)
            {
                schedules = await GetSchedulesAsync(Property.Id, list.Select(l => l.Key).ToArray(), token).ConfigureAwait(false);
            }

            foreach (var group in actions)
            {
                foreach (var action in group)
                {
                    if (action.lazyScheduleStr != null)
                    {
                        var id = PrtgObject.GetId(action.lazyScheduleStr);

                        if (id != -1)
                        {
                            action.schedule = new Lazy <Schedule>(() => schedules.First(s => s.Id == id));
                        }
                        else
                        {
                            action.schedule = new Lazy <Schedule>(() => new Schedule(action.lazyScheduleStr));
                        }
                    }
                }
            }
        }
Ejemplo n.º 36
0
        public int HandleResponse(IMpdResponse response)
        {
            if (response.IsErrorResponse)
            {
                return(0);
            }

            var parser = new ResponseParser(response);

            return(parser.GetItemId());
        }
        public void Can_Deserialise_ok_response_without_body__as_DeleteCard()
        {
            const string ResponseXml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><response status=\"ok\" version=\"1.2\" />";

            var response = new Response(HttpStatusCode.OK, ResponseXml);

            var xmlParser = new ResponseParser(new ApiResponseDetector());
            var result    = xmlParser.Parse <DeleteCard>(response);

            Assert.That(result, Is.Not.Null);
        }
Ejemplo n.º 38
0
        /// <summary>
        /// Update an existing bucket. bucketId is only optional if you are persisting a bucket for this client.
        /// </summary>
        /// <param name="bucketType"></param>
        /// <param name="bucketId"></param>
        /// <param name="cancelToken"></param>
        /// <returns></returns>
        public async Task <B2Bucket> Update(BucketTypes bucketType, string bucketId = "", CancellationToken cancelToken = default(CancellationToken))
        {
            var operationalBucketId = Utilities.DetermineBucketId(_options, bucketId);

            var client = HttpClientFactory.CreateHttpClient();

            var requestMessage = BucketRequestGenerators.UpdateBucket(_options, operationalBucketId, bucketType.ToString());
            var response       = await client.SendAsync(requestMessage, cancelToken);

            return(await ResponseParser.ParseResponse <B2Bucket>(response));
        }
Ejemplo n.º 39
0
        public async Task <List <B2Bucket> > GetList(CancellationToken cancelToken = default(CancellationToken))
        {
            var client = HttpClientFactory.CreateHttpClient();

            var requestMessage = BucketRequestGenerators.GetBucketList(_options);
            var response       = await client.SendAsync(requestMessage, cancelToken);

            var bucketList = ResponseParser.ParseResponse <B2BucketListDeserializeModel>(response).Result;

            return(bucketList.Buckets);
        }
Ejemplo n.º 40
0
        public void CanImplicitlyDeserializeMeMessage()
        {
            var messageContent = @"{""type"":""message"",""subtype"":""me_message""}";

            var parser = new ResponseParser();
            var result = parser.DeserializeEvent(messageContent) as MeMessage;

            Assert.NotNull(result);
            Assert.Equal(EventType.Message, result.Type);
            Assert.Equal(MessageSubType.MeMessage, result.Subtype);
        }
Ejemplo n.º 41
0
        public void CanDeserializeEventWithExtraData()
        {
            var messageContent = @"{""type"":""message"",""subtype"":""me_message"",""something"":""extra""}";

            var parser = new ResponseParser();
            var result = parser.Deserialize<MeMessage>(messageContent);

            Assert.NotNull(result);
            Assert.Equal(EventType.Message, result.Type);
            Assert.Equal(MessageSubType.MeMessage, result.Subtype);
            Assert.Equal("extra", result.UnmatchedAdditionalJsonData["something"]);
        }
		public async void SetUp()
		{
			var requestBuilder = A.Fake<IRequestBuilder>();
			var httpClient = A.Fake<IHttpClient>();
			var responseParser = new ResponseParser(new ApiResponseDetector());

			var responseXml = File.ReadAllText("StubResponses/Playlists.xml");
			var validPlaylistsResponse = new Response(HttpStatusCode.OK, responseXml);
			A.CallTo(() => httpClient.Send(null)).WithAnyArguments().Returns(Task.FromResult(validPlaylistsResponse));
			var fluentApi = new FluentApi<UserPlaylists>(httpClient, requestBuilder, responseParser);

			_userPlaylists = await fluentApi.Please();
		}
		public void Can_deserialize_object_without_xml_declaration()
		{
			const string xml = "<response status=\"ok\"><testObject id=\"1\"> <name>A big test object</name><listOfThings><string>one</string><string>two</string><string>three</string></listOfThings><listOfInnerObjects><InnerObject id=\"1\"><Name>Trevor</Name></InnerObject><InnerObject id=\"2\"><Name>Bill</Name></InnerObject></listOfInnerObjects></testObject></response>";
			var stubResponse = new Response(HttpStatusCode.OK, xml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			Assert.DoesNotThrow(() => xmlParser.Parse<TestObject>(stubResponse));

			var testObject = xmlParser.Parse<TestObject>(stubResponse);

			Assert.That(testObject.Id, Is.EqualTo(1));
		}
Ejemplo n.º 44
0
        public void ReadNextEntityBlob()
        {
            MemoryStream input = new MemoryStream(UTF8Encoding.UTF8.GetBytes(Properties.Resources.ResponseWithBlob));
            
            XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(input, XmlDictionaryReaderQuotas.Max);

            ResponseParser<MapStudioFiles> parser = new ResponseParser<MapStudioFiles>();
            MapStudioFiles mapStudioFile = parser.ReadNextEntity(reader);
            Assert.AreEqual(3, mapStudioFile.SomeStringArray.Length);
            Assert.AreEqual("item 1", mapStudioFile.SomeStringArray[0]);
            Assert.AreEqual("item 2", mapStudioFile.SomeStringArray[1]);
            Assert.AreEqual("last item", mapStudioFile.SomeStringArray[2]);
        }
		public void Should_throw_invalid_resource_exception_for_2001_error_code_with_ok_http_status_code()
		{
			const string errorXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error code=\"2001\"><errorMessage>Test error</errorMessage></error></response>";
			var response = new Response(HttpStatusCode.OK, errorXml);

			var xmlParser = new ResponseParser<TestObject>();

			var ex = Assert.Throws<InvalidResourceException>(() => xmlParser.Parse(response));

			Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode));
			Assert.That(ex.ResponseBody, Is.EqualTo(errorXml));
			Assert.That(ex.Message, Is.EqualTo("Test error"));
			Assert.That(ex.ErrorCode, Is.EqualTo(ErrorCode.ResourceNotFound));
		}
		public void Should_throw_input_parameter_exception_for_1001_error_code_with_error_http_status_code()
		{
			const string errorXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error code=\"1001\"><errorMessage>Test error</errorMessage></error></response>";
			var response = new Response(HttpStatusCode.InternalServerError, errorXml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var ex = Assert.Throws<InputParameterException>(() => xmlParser.Parse<TestObject>(response));

			Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode));
			Assert.That(ex.ResponseBody, Is.EqualTo(errorXml));
			Assert.That(ex.Message, Is.EqualTo("Test error"));
			Assert.That(ex.ErrorCode, Is.EqualTo(ErrorCode.RequiredParameterMissing));
		}
		public void Can_deserialize_object()
		{
			const string xml = "<?xml version=\"1.0\"?><response xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" status=\"ok\"><testObject id=\"1\"> <name>A big test object</name><listOfThings><string>one</string><string>two</string><string>three</string></listOfThings><listOfInnerObjects><InnerObject id=\"1\"><Name>Trevor</Name></InnerObject><InnerObject id=\"2\"><Name>Bill</Name></InnerObject></listOfInnerObjects></testObject></response>";

			var stubResponse = new Response(HttpStatusCode.OK, xml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			Assert.DoesNotThrow(() => xmlParser.Parse<TestObject>(stubResponse));

			var testObject = xmlParser.Parse<TestObject>(stubResponse);

			Assert.That(testObject.Id, Is.EqualTo(1));
		}
		public void can_deserialise_response_user_cards()
		{
			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var deserializedCards = xmlParser.Parse<Cards>(response);

			var firstCard = deserializedCards.UserCards[0];
			Assert.That(deserializedCards.UserCards.Count(), Is.EqualTo(1));

			Assert.That(firstCard.Id, Is.EqualTo(8154430));
			Assert.That(firstCard.CardHolderName, Is.EqualTo("MR I HUNT"));
			Assert.That(firstCard.Type, Is.EqualTo("Visa"));
			Assert.That(firstCard.Last4Digits, Is.EqualTo("5485"));
			Assert.That(firstCard.IsoTwoLetterCountryCode, Is.EqualTo("NZ"));


			Assert.That(firstCard.ExpiryDate, Is.EqualTo("201202"));
			Assert.That(firstCard.FormatedExpiryDate, Is.EqualTo(new DateTime(2012, 02, 29, 23, 59, 59, 999)));
		}
		public void Should_throw_exception_when_deserialize_with_missing_status()
		{
			const string MissingStatusXmlResponse = "<?xml version=\"1.0\"?><response version=\"1.2\"></response>";
			var response = new Response(HttpStatusCode.OK, MissingStatusXmlResponse);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var ex = Assert.Throws<UnrecognisedStatusException>(() => xmlParser.Parse<TestEmptyObject>(response));

			Assert.That(ex, Is.Not.Null);
			Assert.That(ex.Message, Is.EqualTo(UnrecognisedStatusException.DEFAULT_ERROR_MESSAGE));
			Assert.That(ex.ResponseBody, Is.EqualTo(MissingStatusXmlResponse));
			Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode));
		}
		public void Should_handle_plaintext_oauth_fail_with_ok_status()
		{
			const string ErrorText = "OAuth authentication error: Not found";
			var response = new Response(HttpStatusCode.OK, ErrorText);

			var xmlParser = new ResponseParser(new ApiResponseDetector());
			var ex = Assert.Throws<OAuthException>(() => xmlParser.Parse<TestObject>(response));

			Assert.That(ex, Is.Not.Null);
			Assert.That(ex.Message, Is.EqualTo(ErrorText));
			Assert.That(ex.ResponseBody, Is.EqualTo(response.Body));
			Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode));
		}
		public void Should_throw_non_xml_response_exception_for_content_that_appears_XML_but_is_not()
		{
			const string badXml = @"<?xml version=""1.0"" encoding=""utf-8"" ?><response status=""ok"">LOL!</hah>";

			var response = new Response(HttpStatusCode.OK, badXml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var ex = Assert.Throws<NonXmlResponseException>(() => xmlParser.Parse<TestObject>(response));

			Assert.That(ex, Is.Not.Null);
			Assert.That(ex.Message, Is.EqualTo("Response is not xml"));
			Assert.That(ex.ResponseBody, Is.EqualTo(badXml));
			Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode));
		}
		public void Should_throw_non_xml_response_exception_for_html_ok_response()
		{
			const string badXml = "<html><head>Error</head><body>Some random html page<br><hr></body></html>";

			var response = new Response(HttpStatusCode.OK, badXml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var ex = Assert.Throws<NonXmlResponseException>(() => xmlParser.Parse<TestObject>(response));

			Assert.That(ex, Is.Not.Null);
			Assert.That(ex.Message, Is.EqualTo("Response is not xml"));
			Assert.That(ex.ResponseBody, Is.EqualTo(badXml));
			Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode));
		}
		public void Error_captures_http_status_code_from_html()
		{
			const string badXml = "<html><head>Error</head><body>It did not work<br><hr></body></html>";

			var response = new Response(HttpStatusCode.InternalServerError, badXml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var ex = Assert.Throws<NonXmlResponseException>(() => xmlParser.Parse<TestObject>(response));

			Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode));
		}
		public void Detects_html_as_not_xml()
		{
			const string badXml = "<html><head>Error</head><body>It did not work<br><hr></body></html>";

			var response = new Response(HttpStatusCode.InternalServerError, badXml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var ex = Assert.Throws<NonXmlResponseException>(() => xmlParser.Parse<TestObject>(response));

			Assert.That(ex, Is.Not.Null);
			Assert.That(ex.Message, Is.EqualTo("Response is not xml"));
			Assert.That(ex.ResponseBody, Is.EqualTo(badXml));
		}
		public void Should_throw_unrecognised_error_exception_if_xml_is_missing_error_message()
		{
			const string validXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error code=\"123\"></error></response>";
			var response = new Response(HttpStatusCode.OK, validXml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var ex = Assert.Throws<UnrecognisedErrorException>(() => xmlParser.Parse<TestObject>(response));
			Assert.That(ex.ResponseBody, Is.EqualTo(response.Body));
			Assert.That(ex.Message, Is.EqualTo(UnrecognisedErrorException.DEFAULT_ERROR_MESSAGE));
		}
Ejemplo n.º 56
0
        public void SerializeValidMessage()
        {
            var message = new OutputMessage { Id = 1, Channel = "CHANID", Text = "MSG" };

            var parser = new ResponseParser();
            var result = parser.SerializeMessage(message);

            var expected = @"{""id"":1,""type"":""message"",""channel"":""CHANID"",""text"":""MSG""}";
            Assert.Equal(expected, result);
        }
		public void Should_throw_unrecognised_error_exception_for_error_code_out_of_range_with_ok_http_status_code()
		{
			const string errorXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><response status=\"error\" version=\"1.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://api.7digital.com/1.2/static/7digitalAPI.xsd\" ><error code=\"42\"><errorMessage>Test error</errorMessage></error></response>";
			var response = new Response(HttpStatusCode.OK, errorXml);

			var xmlParser = new ResponseParser(new ApiResponseDetector());

			var ex = Assert.Throws<UnrecognisedErrorException>(() => xmlParser.Parse<TestObject>(response));

			Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode));
			Assert.That(ex.ResponseBody, Is.EqualTo(errorXml));
			Assert.That(ex.Message, Is.EqualTo("Test error"));
		}
		public void Should_throw_argument_null_exception_when_reponse_is_null()
		{
			var apiXmlDeserializer = new ResponseParser(new ApiResponseDetector());

			Assert.Throws<ArgumentNullException>(() => apiXmlDeserializer.Parse<TestObject>(null));
		}
		public void Should_throw_non_xml_response_exception_when_response_body_is_empty()
		{
			var response = new Response(HttpStatusCode.OK, string.Empty);


			var xmlSerializer = new ResponseParser(new ApiResponseDetector());

			var ex = Assert.Throws<NonXmlResponseException>(() => xmlSerializer.Parse<TestObject>(response));
			Assert.That(ex.StatusCode, Is.EqualTo(response.StatusCode));
			Assert.That(ex.ResponseBody, Is.Empty);
		}
Ejemplo n.º 60
0
        public void ShouldRemapMessagesToConcreteTypes()
        {
            var meMessage = new MeMessage
            {
                Type = EventType.Message,
                Subtype = MessageSubType.MeMessage,
                Text = "me",
                Team = "team1"
            };

            var topicMessage = new ChannelTopic
            {
                Type = EventType.Message,
                Subtype = MessageSubType.ChannelTopic,
                Topic = "topic"
            };

            var plainMessage = new PlainMessage
            {
                Type = EventType.Message,
                Subtype = MessageSubType.PlainMessage,
                Text = "text"
            };

            var parser = new ResponseParser();

            var messages = new List<MessageBase>
            {
                parser.Deserialize<MessageBase>(parser.SerializeMessage(meMessage)),
                parser.Deserialize<MessageBase>(parser.SerializeMessage(topicMessage)),
                parser.Deserialize<MessageBase>(parser.SerializeMessage(plainMessage))
            };

            var concreteMessages = parser.RemapMessagesToConcreteTypes(messages).ToList();

            Assert.IsType<MeMessage>(concreteMessages[0]);
            Assert.IsType<ChannelTopic>(concreteMessages[1]);
            Assert.IsType<PlainMessage>(concreteMessages[2]);

            Assert.Equal(EventType.Message, concreteMessages[0].Type);
            Assert.Equal(MessageSubType.MeMessage, concreteMessages[0].Subtype);
            Assert.Equal("me", concreteMessages[0].Text);
            Assert.Equal("team1", concreteMessages[0].Team);

            Assert.Equal(EventType.Message, concreteMessages[1].Type);
            Assert.Equal("topic", ((ChannelTopic)concreteMessages[1]).Topic);
        }