예제 #1
0
        public async Task EscapeParameterName()
        {
            var    client = new RestClient("http://congress.api.sunlightfoundation.com");
            string key    = CredentialStore.RetrieveObject("sunlight.key.json").Key;

            client.AddDefaultHeader("X-APIKEY", key);

            dynamic proxy = new RestSharpProxy(client);

            // this is the mechanism by which parameter names that are not valid c# property names can be used
            var parameters = new Dictionary <string, object>()
            {
                { "chamber", "senate" },
                { "history.house_passage_result", "pass" }
            };

            dynamic result = await proxy.bills.get(paramList : parameters);

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.results != null);
            Assert.IsTrue(result.results.Count > 0);

            foreach (dynamic bill in result.results)
            {
                Assert.AreEqual("senate", (string)bill.chamber);
                Assert.AreEqual("pass", (string)bill.history.house_passage_result);
            }
        }
예제 #2
0
        //  [Ignore] // - this test requires user interaction
        public async Task DeleteCalendar()
        {
            var auth = new GoogleOAuth2("email profile https://www.googleapis.com/auth/calendar");

            _token = await auth.Authenticate(_token);

            Assert.IsNotNull(_token, "auth failed");

            var client = new RestClient("https://www.googleapis.com/calendar/v3");

            client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(_token);
            dynamic proxy = new RestSharpProxy(client);
            var     list  = await proxy.users.me.calendarList.get();

            Assert.IsNotNull(list);

            string id = ((IEnumerable <dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => (string)cal.id).FirstOrDefault();

            Assert.IsFalse(string.IsNullOrEmpty(id));

            var result = await proxy.calendars(id).delete();

            Assert.IsNull(result);

            //list = await proxy.users.me.calendarList.get();
            //Assert.IsNotNull(list);
            //id = ((IEnumerable<dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => (string)cal.id).FirstOrDefault();

            //Assert.IsTrue(string.IsNullOrEmpty(id));
        }
예제 #3
0
        public async Task GetMethodSegmentWithArgs()
        {
            var    client = new RestClient("http://openstates.org/api/v1");
            string key    = CredentialStore.RetrieveObject("sunlight.key.json").Key;

            client.AddDefaultHeader("X-APIKEY", key);

            dynamic proxy = new RestSharpProxy(client);

            var result = await proxy.bills.mn("2013s1")("SF 1").get();

            Assert.IsNotNull(result);
            Assert.IsTrue(result.id == "MNB00017167");
        }
예제 #4
0
        public async Task ExplicitGetInvoke()
        {
            var    client = new RestClient("http://openstates.org/api/v1");
            string key    = CredentialStore.RetrieveObject("sunlight.key.json").Key;

            client.AddDefaultHeader("X-APIKEY", key);

            dynamic proxy = new RestSharpProxy(client);

            dynamic result = await proxy.metadata.mn.get();

            Assert.IsNotNull(result);
            Assert.IsTrue(result.name == "Minnesota");
        }
예제 #5
0
        public async Task GetMethod1PathArg1Param()
        {
            var    client = new RestClient("http://openstates.org/api/v1");
            string key    = CredentialStore.RetrieveObject("sunlight.key.json").Key;

            client.AddDefaultHeader("X-APIKEY", key);

            dynamic proxy = new RestSharpProxy(client);

            var result = await proxy.bills.get(state : "mn", chamber : "upper", status : "passed_upper");

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Count > 0);
            Assert.IsTrue(result[0].chamber == "upper");
        }
예제 #6
0
        public async Task FindUserByName()
        {
            var key = CredentialStore.RetrieveObject("flickr.key.json");

            var client = new RestClient("https://api.flickr.com/services/rest/");

            client.AddDefaultParameter("format", "json");
            client.AddDefaultParameter("api_key", (string)key.Key);
            client.AddDefaultParameter("nojsoncallback", "1");

            dynamic proxy = new RestSharpProxy(client);

            dynamic result = await proxy.get(method : "flickr.people.findByUsername", username : "******");

            Assert.IsNotNull(result);
            Assert.AreEqual("9039518@N03", (string)result.user.id);
        }
예제 #7
0
        //  [Ignore] // - this test requires user interaction
        public async Task GetCalendarList()
        {
            var auth = new GoogleOAuth2("email profile https://www.googleapis.com/auth/calendar");

            _token = await auth.Authenticate(_token);

            Assert.IsNotNull(_token, "auth failed");

            var client = new RestClient("https://www.googleapis.com/calendar/v3");

            client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(_token);
            dynamic proxy = new RestSharpProxy(client);
            var     list  = await proxy.users.me.calendarList.get();

            Assert.IsNotNull(list);
            Assert.AreEqual("calendar#calendarList", (string)list.kind);
        }
예제 #8
0
        //  [Ignore] // - this test requires user interaction
        public async Task GetUserProfile()
        {
            var auth = new GoogleOAuth2("profile");

            _token = await auth.Authenticate(_token);

            Assert.IsNotNull(_token, "auth failed");

            var client = new RestClient("https://www.googleapis.com");

            client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(_token);
            dynamic proxy   = new RestSharpProxy(client);
            var     profile = await proxy.oauth2.v1.userinfo.get();

            Assert.IsNotNull(profile);
            Assert.AreEqual("Kackman", (string)profile.family_name);
        }
예제 #9
0
        public async Task UploadPhoto()
        {
            var key = CredentialStore.RetrieveObject("flickr.key.json");

            var client = new RestClient("https://up.flickr.com/services/");

            client.AddDefaultParameter("format", "json");
            client.AddDefaultParameter("api_key", (string)key.Key);
            client.AddDefaultParameter("nojsoncallback", "1");

            var file = new FileInfo(@"D:\temp\test.png");

            dynamic proxy = new RestSharpProxy(client);

            dynamic result = await proxy.upload.post(photo : file);

            Assert.IsNotNull(result);
        }
예제 #10
0
        public async Task GetMethod2PathAsProperty2Params()
        {
            var    client = new RestClient("http://openstates.org/api/v1");
            string key    = CredentialStore.RetrieveObject("sunlight.key.json").Key;

            client.AddDefaultHeader("X-APIKEY", key);

            dynamic proxy      = new RestSharpProxy(client);
            var     parameters = new Dictionary <string, object>()
            {
                { "lat", 44.926868 },
                { "long", -93.214049 } // since long is a keyword we need to pass arguments in a Dictionary
            };
            var result = await proxy.legislators.geo.get(paramList : parameters);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Count > 0);
        }
예제 #11
0
        public async Task GetFormattedAddressFromCoordinate()
        {
            var    client = new RestClient("http://dev.virtualearth.net/REST/v1/");
            string key    = CredentialStore.RetrieveObject("bing.key.json").Key;

            client.AddDefaultParameter("key", key);

            dynamic proxy  = new RestSharpProxy(client);
            var     result = await proxy.Locations("44.9108238220215,-93.1702041625977").get(includeEntityTypes: "Address,PopulatedPlace,Postcode1,AdminDivision1,CountryRegion");

            Assert.AreEqual(200, (int)result.statusCode);
            Assert.IsTrue(result.resourceSets.Count > 0);
            Assert.IsTrue(result.resourceSets[0].resources.Count > 0);

            var address = result.resourceSets[0].resources[0].address.formattedAddress;

            Assert.AreEqual("1012 Davern St, St Paul, MN 55116", (string)address);
        }
예제 #12
0
        public async Task CoordinateFromPostalCode()
        {
            var    client = new RestClient("http://dev.virtualearth.net/REST/v1/");
            string key    = CredentialStore.RetrieveObject("bing.key.json").Key;

            client.AddDefaultParameter("key", key);

            dynamic proxy  = new RestSharpProxy(client);
            var     result = await proxy.Locations.get(postalCode : "55116", countryRegion : "US");

            Assert.AreEqual(200, (int)result.statusCode);
            Assert.IsTrue(result.resourceSets.Count > 0);
            Assert.IsTrue(result.resourceSets[0].resources.Count > 0);

            var r = result.resourceSets[0].resources[0].point.coordinates;

            Assert.IsTrue((44.9108238220215).AboutEqual((double)r[0]));
            Assert.IsTrue((-93.1702041625977).AboutEqual((double)r[1]));
        }
예제 #13
0
        // [Ignore] // - this test requires user interaction
        public async Task CreateCalendar()
        {
            var auth = new GoogleOAuth2("email profile https://www.googleapis.com/auth/calendar");

            _token = await auth.Authenticate(_token);

            Assert.IsNotNull(_token, "auth failed");

            var client = new RestClient("https://www.googleapis.com/calendar/v3");

            client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(_token);
            dynamic proxy = new RestSharpProxy(client);

            dynamic calendar = new ExpandoObject();

            calendar.summary = "unit_testing";

            var list = await proxy.calendars.post(calendar);

            Assert.IsNotNull(list);
            Assert.AreEqual("unit_testing", (string)list.summary);
        }
예제 #14
0
        //  [Ignore] // - this test requires user interaction
        public async Task UpdateCalendar()
        {
            var auth = new GoogleOAuth2("email profile https://www.googleapis.com/auth/calendar");

            _token = await auth.Authenticate(_token);

            Assert.IsNotNull(_token, "auth failed");

            var client = new RestClient("https://www.googleapis.com/calendar/v3");

            client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(_token);
            dynamic proxy = new RestSharpProxy(client);
            var     list  = await proxy.users.me.calendarList.get();

            Assert.IsNotNull(list);

            string id = ((IEnumerable <dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => (string)cal.id).FirstOrDefault();

            Assert.IsFalse(string.IsNullOrEmpty(id));

            var     guid     = Guid.NewGuid().ToString();
            dynamic calendar = new ExpandoObject();

            calendar.summary     = "unit_testing";
            calendar.description = guid;

            var result = await proxy.calendars(id).put(calendar);

            Assert.IsNotNull(result);

            list = await proxy.users.me.calendarList.get();

            Assert.IsNotNull(list);
            string description = ((IEnumerable <dynamic>)(list.items)).Where(cal => cal.summary == "unit_testing").Select(cal => (string)cal.description).FirstOrDefault();

            Assert.AreEqual(guid, description);
        }
예제 #15
0
 public RequestBuilder(RestSharpProxy proxy)
 {
     Debug.Assert(proxy != null);
     _proxy = proxy;
 }