示例#1
0
        public static async Task<RootObject> Get()
        {
            var serializer = new SimplyMobile.Text.ServiceStack.JsonSerializer ();

            var webClient = new JsonClient (serializer);

            var response = await webClient.GetAsync<RootObject>("http://www.reddit.com/r/all.json", Format.Json);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                return response.Value;
            } 
            else
            {
                System.Diagnostics.Debug.WriteLine (response.Content);
            }

            var serializer2 = new SimplyMobile.Text.JsonNet.JsonSerializer ();

            webClient = new JsonClient(serializer2);

            response = await webClient.GetAsync<RootObject>("http://www.reddit.com/r/all.json", Format.Json);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                return response.Value;
            } 
            else
            {
                System.Diagnostics.Debug.WriteLine (response.Content);
            }
            return null;
        }
示例#2
0
        public void Given_Valid_Url_Api_Returns_Deserialized_Items()
        {
            var url = "http://api.dotnetgroup.dev/v1/stream";

            var items = new JsonClient().Get<IEnumerable<Item>>(url);

            CollectionAssert.IsNotEmpty(items);
        }
示例#3
0
        public void Given_Valid_Url_Api_Returns_Serialized_Items()
        {
            var url = "http://api.dotnetgroup.dev/v1/stream";

            var json = new JsonClient().Get(url);

            CollectionAssert.IsNotEmpty(json);
        }
示例#4
0
        /// <summary>
        /// Returns details about a specific Docker network.
        /// </summary>
        /// <param name="nameOrId">The network name or ID.</param>
        /// <param name="cancellationToken">Optional cancellation token.</param>
        /// <returns>A <see cref="DockerNetwork"/> instance.</returns>
        public async Task <DockerNetwork> NetworkInspect(string nameOrId, CancellationToken cancellationToken = default)
        {
            await SyncContext.Clear;

            Covenant.Requires <ArgumentNullException>(!string.IsNullOrEmpty(nameOrId), nameof(nameOrId));

            var response = await JsonClient.GetAsync(GetUri("networks", nameOrId), cancellationToken : cancellationToken);

            return(new DockerNetwork(response.AsDynamic()));
        }
示例#5
0
        public async Task WithValidParams_ReturnsTrue()
        {
            const string status    = "OK";
            var          basicJson = BasicJson.GetDefault();

            var data = await JsonClient.Post <BasicJson>($"{DefaultHttp}{Api}/WithValidParams", basicJson);

            Assert.IsNotNull(data);
            Assert.AreEqual(status, data.StringData);
        }
示例#6
0
 private void ConfigureOperation(string operation, bool active)
 {
     JsonClient.Post(new ConfigureOperationRequest
     {
         Service   = Capabilities.Service,
         Version   = Capabilities.Version,
         Operation = operation,
         Active    = active
     });
 }
示例#7
0
        public void ClearDatasource()
        {
            using (SosScope())
            {
                Log.Info("Clearing the SOS database ...");
                JsonClient.Post(new ClearDatasourceRequest());
            }

            GetCapabilities();
        }
示例#8
0
        public void ActionRetryTest()
        {
            Assert.Throws <AggregateException>(() =>
            {
                var action =
                    new Action(() => JsonClient.GetString("http://accesscore.azurewebsites.net/api/token").Wait());

                action.Retry();
            });
        }
示例#9
0
        public async Task OptionsAsync_Dynamic_NotJson()
        {
            // Ensure that OPTIONS returning non-JSON returns a NULL dynamic document.

            RequestDoc requestDoc = null;

            using (new MockHttpServer(baseUri,
                                      async context =>
            {
                var request = context.Request;
                var response = context.Response;

                if (request.Method != "OPTIONS")
                {
                    response.StatusCode = (int)HttpStatusCode.MethodNotAllowed;
                    return;
                }

                if (request.Path.ToString() != "/info")
                {
                    response.StatusCode = (int)HttpStatusCode.NotFound;
                    return;
                }

                requestDoc = NeonHelper.JsonDeserialize <RequestDoc>(request.GetBodyText());

                var output = new ReplyDoc()
                {
                    Value1 = "Hello World!"
                };

                response.ContentType = "application/not-json";

                await response.WriteAsync(NeonHelper.JsonSerialize(output));
            }))
            {
                using (var jsonClient = new JsonClient())
                {
                    var doc = new RequestDoc()
                    {
                        Operation = "FOO",
                        Arg0      = "Hello",
                        Arg1      = "World"
                    };

                    var reply = (await jsonClient.OptionsAsync(baseUri + "info", doc)).AsDynamic();

                    Assert.Equal("FOO", requestDoc.Operation);
                    Assert.Equal("Hello", requestDoc.Arg0);
                    Assert.Equal("World", requestDoc.Arg1);

                    Assert.Null(reply);
                }
            };
        }
示例#10
0
        public async Task PostUnsafeAsync()
        {
            // Ensure that POST returning an explict type works.

            RequestDoc requestDoc = null;

            using (new MockHttpServer(baseUri,
                                      async context =>
            {
                var request = context.Request;
                var response = context.Response;

                if (request.Method != "POST")
                {
                    response.StatusCode = (int)HttpStatusCode.MethodNotAllowed;
                    return;
                }

                if (request.Path.ToString() != "/info")
                {
                    response.StatusCode = (int)HttpStatusCode.NotFound;
                    return;
                }

                requestDoc = NeonHelper.JsonDeserialize <RequestDoc>(request.GetBodyText());

                var output = new ReplyDoc()
                {
                    Value1 = "Hello World!"
                };

                response.ContentType = "application/json";

                await response.WriteAsync(NeonHelper.JsonSerialize(output));
            }))
            {
                using (var jsonClient = new JsonClient())
                {
                    var doc = new RequestDoc()
                    {
                        Operation = "FOO",
                        Arg0      = "Hello",
                        Arg1      = "World"
                    };

                    var reply = (await jsonClient.PostUnsafeAsync(baseUri + "info", doc)).As <ReplyDoc>();

                    Assert.Equal("Hello World!", reply.Value1);

                    Assert.Equal("FOO", requestDoc.Operation);
                    Assert.Equal("Hello", requestDoc.Arg0);
                    Assert.Equal("World", requestDoc.Arg1);
                }
            };
        }
示例#11
0
 public XblIdentityCache(
     ILoggerFactory loggerFactory,
     IRedisClientsManager redisClientsManager,
     TokenClient tokenClient
     )
 {
     _logger = loggerFactory.CreateLogger(typeof(XblIdentityCache));
     _redisClientsManager = redisClientsManager;
     _tokenClient         = tokenClient;
     _client = new JsonClient("https://profile.xboxlive.com");
 }
示例#12
0
        //---------------------------------------------------------------------
        // Implements Docker Network related operations.

        /// <summary>
        /// Creates a Docker network.
        /// </summary>
        /// <param name="network">The network details.</param>
        /// <param name="cancellationToken">Optional cancellation token.</param>
        /// <returns>A <see cref="NetworkCreateResponse"/>.</returns>
        public async Task <NetworkCreateResponse> NetworkCreateAsync(DockerNetwork network, CancellationToken cancellationToken = default)
        {
            Covenant.Requires <ArgumentNullException>(network != null);

            // $todo(jeff.lill):
            //
            // Ipam.Config settings aren't working.  Looks like I need to wrap them into
            // a JSON array before sending.  It's a bit weird.

            return(new NetworkCreateResponse(await JsonClient.PostAsync(GetUri("networks", "create"), network, cancellationToken: cancellationToken)));
        }
示例#13
0
        private async Task ExecuteGetVersion(JsonClient client, bool isInternal)
        {
            var result = await Assert_NotTimedOut(client.Call(new GetVersion {
                IsInternal = isInternal
            }), "StressTest.GetVersion");

            var expected = isInternal ? "Version 0.01-alpha, build 12345, by yallie" : "0.01-alpha";

            Assert.NotNull(result);
            Assert.AreEqual(expected, result.Version);
        }
示例#14
0
        public async Task PutDynamicAsync()
        {
            // Ensure that PUT sending a dynamic document works.

            RequestDoc requestDoc = null;

            using (new MockHttpServer(baseUri,
                                      context =>
            {
                var request = context.Request;
                var response = context.Response;

                if (request.Method != "PUT")
                {
                    response.StatusCode = (int)HttpStatusCode.MethodNotAllowed;
                    return;
                }

                if (request.Path.ToString() != "/info")
                {
                    response.StatusCode = (int)HttpStatusCode.NotFound;
                    return;
                }

                requestDoc = NeonHelper.JsonDeserialize <RequestDoc>(request.GetBodyText());

                var output = new ReplyDoc()
                {
                    Value1 = "Hello World!"
                };

                response.ContentType = "application/json";

                response.Write(NeonHelper.JsonSerialize(output));
            }))
            {
                using (var jsonClient = new JsonClient())
                {
                    dynamic doc = new ExpandoObject();

                    doc.Operation = "FOO";
                    doc.Arg0      = "Hello";
                    doc.Arg1      = "World";

                    var reply = (await jsonClient.PutAsync(baseUri + "info", doc)).As <ReplyDoc>();

                    Assert.Equal("FOO", requestDoc.Operation);
                    Assert.Equal("Hello", requestDoc.Arg0);
                    Assert.Equal("World", requestDoc.Arg1);

                    Assert.Equal("Hello World!", reply.Value1);
                }
            }
        }
        public ActionResult Check()
        {
            var timer = new Stopwatch();

            timer.Start();

            var check = new Check
            {
                Groups = MvcApplication.Configuration.Groups.Select(cfg => new Group {
                    Name = cfg.Name
                }).ToList()
            };

            Parallel.ForEach(MvcApplication.Configuration.Groups, cfg =>
            {
                var group   = check.Groups.Single(g => g.Name == cfg.Name);
                var nodes   = MvcApplication.Configuration.Nodes.First(nc => nc.Name == cfg.NodeConfiguration).Hosts;
                group.Nodes = nodes.Select(host => new Node {
                    Name = host
                }).ToList();

                Parallel.ForEach(nodes, node =>
                {
                    var viewNode = group.Nodes.Single(vn => vn.Name == node);
                    var nodeTime = new Stopwatch();
                    nodeTime.Start();
                    try
                    {
                        var restClient   = new JsonClient(useISODates: true);
                        var appUri       = new Uri($"http://{node}{cfg.Url}");
                        var jsonVersion  = GetVersion(restClient, appUri);
                        viewNode.Version = new Version {
                            BuildTime = jsonVersion.BuildTime, GitHash = jsonVersion.GitSha
                        };
                        if (!string.IsNullOrEmpty(cfg.HealthCheck))
                        {
                            viewNode.CheckUri    = new Uri($"{appUri}{cfg.HealthCheck}");
                            var checks           = GetChecks(restClient, viewNode.CheckUri);
                            viewNode.CheckPassed = checks.All(c => c.Passed.GetValueOrDefault(true));
                        }
                    }
                    catch (Exception e)
                    {
                        viewNode.CheckPassed = false;
                        viewNode.Exception   = e;
                    }
                    nodeTime.Stop();
                    viewNode.Time = nodeTime.Elapsed;
                });
            });
            timer.Stop();
            check.Duration = timer.Elapsed;
            return(PartialView(check));
        }
        public async Task PostJsonData()
        {
            var model = new Person()
            {
                Key = 10, Name = "Test"
            };
            var result = await JsonClient.Post <Person>(WebServerUrl + TestController.GetPath, model);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Name, model.Name);
        }
示例#17
0
        public async Task WithValidParamsAndAuthorizationToken_ReturnsTrue()
        {
            var data = await JsonClient.Post(
                new Uri($"{DefaultHttp}{Api}/WithValidParamsAndAuthorizationToken"),
                BasicJson.GetDefault(),
                AuthorizationToken);

            Assert.IsNotNull(data);
            Assert.IsTrue(data !.ContainsKey(Authorization));
            Assert.AreEqual($"Bearer {AuthorizationToken}", data[Authorization]);
        }
示例#18
0
        /// <inheritdoc/>
        public override void Reset()
        {
            if (!IsDisposed)
            {
                JsonClient.Dispose();
                WebHost.StopAsync().Wait();

                JsonClient = null;
                WebHost    = null;
            }
        }
示例#19
0
 public WaypointClient(TokenClient tokenClient, IdentityClient identityClient, S3Client s3Client)
     : base(s3Client)
 {
     this._tokenClient    = tokenClient;
     this._transpiler     = new Transpiler();
     this._enricher       = new Enricher(identityClient);
     this._presenceClient = new JsonClient(presenceUrl);
     this._statsClient    = new JsonClient(statsUrl);
     this._settingsClient = new JsonClient(settingsUrl);
     this._optionsClient  = new JsonClient(optionsUrl);
 }
示例#20
0
        public async Task <GetFileSteamResponse> GetLogoInfoAsync(long id)
        {
            var parameters = new Dictionary <string, string>
            {
                { "ugcid", id.ToString(CultureInfo.InvariantCulture) },
                { "appid", "570" }
            };
            var requestUrl = GetRequestUrl("ISteamRemoteStorage", "GetUGCFileDetails", parameters);

            return(await JsonClient.GetAsync <GetFileSteamResponse>(requestUrl));
        }
示例#21
0
        /// <summary>
        /// Private constructor.
        /// </summary>
        /// <param name="uri">The Vault server URI.</param>
        private VaultClient(Uri uri)
        {
            var handler = new HttpClientHandler()
            {
                AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
            };

            jsonClient = new JsonClient(handler, disposeHandler: true);
            jsonClient.SafeRetryPolicy = new ExponentialRetryPolicy(TransientDetector.NetworkOrHttp);
            jsonClient.BaseAddress     = uri;
        }
示例#22
0
        public async Task <GetTeamInfoSteamResponse> GetTeamInfoAsync(long teamId)
        {
            var parameters = new Dictionary <string, string>
            {
                { "teams_requested", "1" },
                { "start_at_team_id", teamId.ToString() }
            };
            var requestUrl = GetRequestUrl("IDOTA2Match_570", "GetTeamInfoByTeamID", parameters);

            return(await JsonClient.GetAsync <GetTeamInfoSteamResponse>(requestUrl));
        }
        /// <summary>
        /// Get field and other metadata for an object.
        /// <para>Use the SObject Describe resource to retrieve all the metadata for an object, including information about each field, URLs, and child relationships.</para>
        /// </summary>
        /// <param name="objectTypeName">SObject name, e.g. Account</param>
        /// <returns>Returns SObjectMetadataAll with full object meta including field metadata</returns>
        public async Task <SObjectDescribeFull> GetObjectDescribe(string objectTypeName)
        {
            var uri = UriFormatter.SObjectDescribe(_instanceUrl, _apiVersion, objectTypeName);

            using (var httpClient = new HttpClient())
            {
                JsonClient client = new JsonClient(_accessToken, httpClient);

                return(await client.HttpGetAsync <SObjectDescribeFull>(uri));
            }
        }
示例#24
0
        public TokenClient(string baseUrl, string key)
        {
            var options = new HttpClientOptions
            {
                Headers = new Dictionary <string, string> {
                    { "Authorization", $"bearer {key}" }
                },
            };

            _client = new JsonClient(baseUrl, options);
        }
        /// <summary>
        /// Lists information about limits in your org.
        /// <para>This resource is available in REST API version 29.0 and later for API users with the View Setup and Configuration permission.</para>
        /// </summary>
        public async Task <OrganizationLimits> GetOrganizationLimits()
        {
            var uri = UriFormatter.Limits(_instanceUrl, _apiVersion);

            using (var httpClient = new HttpClient())
            {
                JsonClient client = new JsonClient(_accessToken, httpClient);

                return(await client.HttpGetAsync <OrganizationLimits>(uri));
            }
        }
示例#26
0
        /// <inheritdoc/>
        public override void Reset()
        {
            if (!IsDisposed)
            {
                JsonClient?.Dispose();
                WebHost?.StopAsync().WaitWithoutAggregate();

                JsonClient = null;
                WebHost    = null;
            }
        }
示例#27
0
 public static IClientNetworkedDevice CreateFromJson(UniFiApi api, JsonClient client)
 {
     if (client.is_wired)
     {
         return(new WiredClientNetworkedDevice(api, client));
     }
     else
     {
         return(new WirelessClientNetworkedDevice(api, client));
     }
 }
示例#28
0
        public void RespectOptions()
        {
            var options = new Options
            {
                Timeout = TimeSpan.FromMilliseconds(2500),
            };

            var client = new JsonClient("https://example.com", options);

            Assert.Equal(client.Client.Options.Timeout, options.Timeout);
        }
示例#29
0
        public async Task WithValidParams_ReturnsTrue()
        {
            var responseObj = new Dictionary <string, object> {
                { AuthorizationToken, "123" }
            };

            var data = await JsonClient.Authenticate(new Uri($"{DefaultHttp}/Authenticate"), "admin", "password");

            Assert.IsNotNull(data);
            Assert.IsTrue(data !.ContainsKey(AuthorizationToken));
            Assert.AreEqual(responseObj[AuthorizationToken], data[AuthorizationToken]);
        }
示例#30
0
        public async Task PostAsync_Retry()
        {
            // Ensure that POST will retry after soft errors.

            RequestDoc requestDoc = null;

            var attemptCount = 0;

            using (new MockHttpServer(baseUri,
                                      async context =>
            {
                var request = context.Request;
                var response = context.Response;

                if (attemptCount++ == 0)
                {
                    response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;

                    return;
                }

                requestDoc = NeonHelper.JsonDeserialize <RequestDoc>(request.GetBodyText());

                var output = new ReplyDoc()
                {
                    Value1 = "Hello World!"
                };

                response.ContentType = "application/json";

                await response.WriteAsync(NeonHelper.JsonSerialize(output));
            }))
            {
                using (var jsonClient = new JsonClient())
                {
                    var doc = new RequestDoc()
                    {
                        Operation = "FOO",
                        Arg0      = "Hello",
                        Arg1      = "World"
                    };

                    var reply = (await jsonClient.PostAsync(baseUri + "info", doc)).AsDynamic();

                    Assert.Equal("FOO", requestDoc.Operation);
                    Assert.Equal("Hello", requestDoc.Arg0);
                    Assert.Equal("World", requestDoc.Arg1);

                    Assert.Equal(2, attemptCount);
                    Assert.Equal("Hello World!", (string)reply.Value1);
                }
            };
        }
        /// <summary>
        /// Get SObject by ID
        /// </summary>
        /// <param name="sObjectTypeName">SObject name, e.g. "Account"</param>
        /// <param name="objectId">SObject ID</param>
        /// <param name="fields">(optional) List of fields to retrieve, if not supplied, all fields are retrieved.</param>
        public async Task <T> GetObjectById <T>(string sObjectTypeName, string objectId, List <string> fields = null)
        {
            Dictionary <string, string> headers = HeaderFormatter.SforceCallOptions(_clientName);
            var uri = UriFormatter.SObjectRows(_instanceUrl, _apiVersion, sObjectTypeName, objectId, fields);

            using (var httpClient = new HttpClient())
            {
                JsonClient client = new JsonClient(_accessToken, httpClient);

                return(await client.HttpGetAsync <T>(uri, headers));
            }
        }
示例#32
0
        public async void RottenTomato()
        {
            var client  = new JsonClient("https://beta.izooble.com");
            var request = new StreamRequest
            {
                BeforeDate = "2014-06-12T19:07:09.771Z"
            };

            var result = await client.Get(request);

            Assert.That(result.Reviews.Count(), Is.EqualTo(10));
        }
示例#33
0
        public void Connect()
        {
            JsonClient?.Dispose();

            JsonClient = new SdkServiceClient(HostUrl);

            UserAgent = JsonClient.UserAgent;

            GetCapabilities();

            CreateAuthenticatedSession();
        }
 public JsonResponseStatusException(JsonClient jsonClient, string status)
     : base($"{jsonClient.Uri} returned Error {status}")
 {
     this.Uri = jsonClient.Uri;
     this.Status = status;
 }
 public void Setup()
 {
     this.Client = new JsonClient(Profile.GetActiveProfile().Uri);
 }
 public void TearDown()
 {
     this.Client = null;
 }
示例#37
0
 private static string GetTitle(
     this Torrent torrent,
     JsonClient client)
 {
     return torrent.GetTitle(client.GetGroups, client.GetArtists);
 }