コード例 #1
0
 public void SchemeIsUsedIfSpecified(UriScheme scheme, string expectedScheme)
 {
     FluentUriBuilder.Create()
     .Scheme(scheme)
     .Host("example.com")
     .ToUri()
     .Scheme
     .Should().Be(expectedScheme);
 }
コード例 #2
0
ファイル: Host.cs プロジェクト: vbegin/FluentUriBuilder
        public void HostIsUsedIfSpecified()
        {
            var host = "test.example.com";

            FluentUriBuilder.Create()
            .Host(host)
            .ToUri()
            .Host
            .Should().Be(host);
        }
コード例 #3
0
 public void GetsQueryParamValueUsingQueryParams()
 {
     FluentUriBuilder.Create()
     .Scheme(UriScheme.Http)
     .Host("example.com")
     .QueryParam("testkey", "testvalue")
     .GetParam("testkey")
     .Should()
     .Be("testvalue");
 }
コード例 #4
0
 public void UserNameCannotBeNullOrWhiteSpace()
 {
     FluentUriBuilder.Create()
     .Invoking(b => b.Credentials(null, "password"))
     .ShouldThrow <ArgumentException>();
     FluentUriBuilder.Create()
     .Invoking(b => b.Credentials(string.Empty, "password"))
     .ShouldThrow <ArgumentException>();
     FluentUriBuilder.Create()
     .Invoking(b => b.Credentials(" ", "password"))
     .ShouldThrow <ArgumentException>();
 }
コード例 #5
0
ファイル: Host.cs プロジェクト: vbegin/FluentUriBuilder
 public void HostCannotBeNullOrWhiteSpace()
 {
     FluentUriBuilder.Create()
     .Invoking(b => b.Host(null))
     .ShouldThrow <ArgumentException>();
     FluentUriBuilder.Create()
     .Invoking(b => b.Host(string.Empty))
     .ShouldThrow <ArgumentException>();
     FluentUriBuilder.Create()
     .Invoking(b => b.Host(" "))
     .ShouldThrow <ArgumentException>();
 }
コード例 #6
0
 public void QueryParamKeyCannotBeNullOrWhiteSpace()
 {
     FluentUriBuilder.Create()
     .Invoking(b => b.QueryParam(null, "a"))
     .ShouldThrow <ArgumentException>();
     FluentUriBuilder.Create()
     .Invoking(b => b.QueryParam(string.Empty, "a"))
     .ShouldThrow <ArgumentException>();
     FluentUriBuilder.Create()
     .Invoking(b => b.QueryParam(" ", "a"))
     .ShouldThrow <ArgumentException>();
 }
コード例 #7
0
 public void QueryParamValueCannotBeNullOrWhiteSpace()
 {
     FluentUriBuilder.Create()
     .Invoking(b => b.QueryParam("a", (string)null))
     .ShouldThrow <ArgumentException>();
     FluentUriBuilder.Create()
     .Invoking(b => b.QueryParam("a", string.Empty))
     .ShouldThrow <ArgumentException>();
     FluentUriBuilder.Create()
     .Invoking(b => b.QueryParam("a", " "))
     .ShouldThrow <ArgumentException>();
 }
コード例 #8
0
        /// <summary>
        /// Hämtar pågående driftavbrott på de kanaler som anges. Om något
        /// annat fel inträffar kastas ett ApplicationException.
        /// </summary>
        /// <param name="kanaler">Samling kanaler vars driftavbrott ska hämtas</param>
        /// <returns>Ska endast returnera noll eller ett driftavbrott i praktiken</returns>
        /// <exception cref="ApplicationException"></exception>
        public IEnumerable <driftavbrottType> GetPagaendeDriftavbrott(IEnumerable <String> kanaler)
        {
            if (senastFråganTillDriftavbrott < DateTime.Now)
            {
                #region Bygg frågan och klient

                // Använder ett tredjeparts-lib för att snyggt bygga en URI
                FluentUriBuilder builder = FluentUriBuilder.Create()
                                           .Scheme(myHttps ? UriScheme.Https : UriScheme.Http)
                                           .Host(myServer)
                                           .Port(myPort)
                                           .Path(BASE_URI + PÅGÅENDE_PATH);

                foreach (var kanal in kanaler)
                {
                    builder = builder.QueryParam(KANAL_PARAM, kanal);
                }

                // Släng in systemId som parameter till tjänsten, som alltid är ett krav
                builder = builder.QueryParam(SYSTEM_PARAM, mySystemId);

                // REST client
                RestClient restClient = new RestClient
                {
                    // BaseUrl (REST Service EndPoint adress)
                    BaseUrl  = builder.ToUri(),
                    Encoding = Encoding.UTF8
                };

                // Request som skickas
                RestRequest restRequest = new RestRequest
                {
                    // Metod (POST, GET, PUT, DELETE)
                    // RequestFormat (XML, JSON)
                    Method        = Method.GET,
                    RequestFormat = DataFormat.Xml
                };

                // Lägg till Header (endast XML accepteras)
                restRequest.AddHeader("Accept", "application/xml,application/json");

                #endregion

                // Gör anropet
                IRestResponse <driftavbrottType> restResponse = restClient.Execute <driftavbrottType>(restRequest);

                // Fick vi något svar alls?
                if (restResponse != null)
                {
                    if (restResponse.IsSuccessful)
                    {
                        // Sätter tidpunkten för senaste frågan.
                        senastFråganTillDriftavbrott = DateTime.Now.AddMinutes(1);

                        // Hämta HTTP statuskoden i numerisk form (ex: 200)
                        Int32 numericStatusCode = (Int32)restResponse.StatusCode;

                        // Servern returnerade 404 eller 406 (HTTP Statuskod=404)
                        if (restResponse.StatusCode == HttpStatusCode.NotFound)
                        {
                            throw new ApplicationException($"#Driftavbrottstjänsten returnerade 404/406. ResponseCode={numericStatusCode} {restResponse.StatusCode}, ResponseServer={restResponse.Server}, RequestBaseUrl={restClient.BaseHost}{restClient.BaseUrl}.", new HttpException(404, "File Not Found"));
                        }

                        // Servern returnerade inga driftavbrott alls (HTTP Statuskod=204, innehåll saknas)
                        if (restResponse.StatusCode == HttpStatusCode.NoContent)
                        {
                            gällandeSvarFrånDriftavbrott = Enumerable.Empty <driftavbrottType>();
                            return(gällandeSvarFrånDriftavbrott);
                        }
                        // Servern returnerade eventuella driftavbrott (HTTP Statuskod=200)
                        if (restResponse.StatusCode == HttpStatusCode.OK)
                        {
                            // Sätter gällande svar till svar eller tomt om vi inte fick någon data.
                            gällandeSvarFrånDriftavbrott = restResponse.Data == null?Enumerable.Empty <driftavbrottType>() : new[] { restResponse.Data };
                            return(gällandeSvarFrånDriftavbrott);
                        }
                        // Servern returnerade någon form av annan statuskod som ej behandlas specifikt
                        throw new ApplicationException($"#Driftavbrottstjänsten returnerade en oväntad statuskod. ResponseCode={numericStatusCode} {restResponse.StatusCode}, ResponseServer={restResponse.Server}, RequestBaseUrl={restClient.BaseHost}{restClient.BaseUrl}.");
                    }
                    throw new ApplicationException($"Driftavbrottstjänsten svarar inte. ResponseServer={restResponse.Server}, RequestBaseUrl={restClient.BaseHost}{restClient.BaseUrl}.");
                }

                // Servern returnerade inget svar (Response) alls
                throw new ApplicationException($"#Fick inget svar från driftavbrottstjänsten. RequestBaseUrl={restClient.BaseHost}{restClient.BaseUrl}.");
            }
            // returnerar senaste svaret.
            return(gällandeSvarFrånDriftavbrott);
        }
コード例 #9
0
ファイル: Port.cs プロジェクト: vbegin/FluentUriBuilder
 public void PortCanBe65535()
 {
     FluentUriBuilder.Create()
     .Invoking(b => b.Port(65535))
     .ShouldNotThrow <ArgumentOutOfRangeException>();
 }
コード例 #10
0
ファイル: Port.cs プロジェクト: vbegin/FluentUriBuilder
 public void PortCannotBeGreaterThan65535()
 {
     FluentUriBuilder.Create()
     .Invoking(b => b.Port(65536))
     .ShouldThrow <ArgumentOutOfRangeException>();
 }
コード例 #11
0
ファイル: Port.cs プロジェクト: vbegin/FluentUriBuilder
 public void PortCannotBeLessThanMinus1()
 {
     FluentUriBuilder.Create()
     .Invoking(b => b.Port(-2))
     .ShouldThrow <ArgumentOutOfRangeException>();
 }
コード例 #12
0
 public void QueryParamsObjectCannotBeNull()
 {
     FluentUriBuilder.Create()
     .Invoking(b => b.QueryParams((object)null))
     .ShouldThrow <ArgumentNullException>();
 }
コード例 #13
0
 public void FragmentCannotBeNull()
 {
     FluentUriBuilder.Create().Invoking(b => b.Fragment(null)).ShouldThrow <ArgumentNullException>();
 }
コード例 #14
0
 public void CreateReturnsFluentUriBuilderInstance()
 {
     FluentUriBuilder.Create().Should().NotBeNull();
 }