Exemplo n.º 1
0
        /// <summary>
        /// Gets the full endpoint URI.
        /// </summary>
        /// <typeparam name="TModel">The type of the model.</typeparam>
        /// <param name="baseApiUri">The base API URI.</param>
        /// <param name="listRequest">The list request.</param>
        /// <returns></returns>
        private static Uri GenerateFullEndpointUri <TModel>(string baseApiUri, ApiGetRequest <TModel> listRequest)
            where TModel : ModelBase, new()
        {
            string endpointUri = baseApiUri;

            if (!endpointUri.EndsWith("/"))
            {
                endpointUri += "/";
            }

            if (!string.IsNullOrEmpty(listRequest.ResourceName))
            {
                endpointUri += listRequest.ResourceName;
            }

            if (!endpointUri.EndsWith("/"))
            {
                endpointUri += "/";
            }

            if (!string.IsNullOrEmpty(listRequest.ResourceId))
            {
                endpointUri += listRequest.ResourceId;
            }

            if (listRequest.RequiresQuerystring)
            {
                endpointUri += "?" + listRequest.ToQuerystring();
            }

            return(new Uri(endpointUri));
        }
        public void TestCacheLifeCycle()
        {
            var cache       = new MemoryCache("TestCacheLifeCycle");
            var baseUrl     = "https://example.com/test";
            var cacheHelper = new ApiRequestCacheHelper(cache, new Uri(baseUrl));
            var endPoint    = "dummy";
            var parameters  = new Dictionary <string, string> {
                { "key", "value" }
            };
            var response = "results";
            var request  = new ApiGetRequest(endPoint, parameters);

            // at first, no cache
            Assert.IsFalse(cacheHelper.HasCache(request));
            Assert.AreEqual(0, cache.GetCount());

            // set and get
            cacheHelper.Set(request, response);
            Assert.IsTrue(cacheHelper.HasCache(request));
            Assert.AreEqual(response, cacheHelper.Get(request));
            Assert.AreEqual(1, cache.GetCount());

            // dispose
            cache.Dispose();
            Assert.IsFalse(cacheHelper.HasCache(request));
        }
        public void GetExceptionTest()
        {
            var           mockApiClientCore = new ErrorMockApiClientCore("dummy");
            var           client            = ApiClientCoreWithCache.Create(mockApiClientCore, cacheHelper);
            ApiGetRequest request           = new ApiGetRequest("dummy endpoint", new Dictionary <string, string>());

            Assert.ThrowsException <BuffettCodeApiClientException>(() => client.Get(request, false, false));
        }
Exemplo n.º 4
0
        public Response GetItemByIdOrCode <TModel>(HttpSessionStateBase session, string resourceId)
            where TModel : ModelBase, new()
        {
            ITokenRepository <AccessToken> accessTokenRepository = new HttpSessionAccessTokenRepository(session);
            ApiGetRequest <TModel>         listRequest           = new ApiGetRequest <TModel> {
                ResourceId = resourceId
            };

            return(Get(accessTokenRepository, listRequest));
        }
Exemplo n.º 5
0
        public void CreateTest()
        {
            var baseUrl    = "baseUrl";
            var endPoint   = "dummy";
            var parameters = new Dictionary <string, string> {
                { "key", "value" }, { "キー", "バリュー" }
            };
            var request = new ApiGetRequest(endPoint, parameters);

            Assert.AreEqual("api/baseUrl/dummy?%e3%82%ad%e3%83%bc=%e3%83%90%e3%83%aa%e3%83%a5%e3%83%bc&key=value", CacheKeyCreator.Create(baseUrl, request));
        }
        public void GetTest()
        {
            var           mockApiClientCore = new MockApiClientCore("dummy");
            var           client            = ApiClientCoreWithCache.Create(mockApiClientCore, cacheHelper);
            ApiGetRequest request           = new ApiGetRequest("dummy endpoint", new Dictionary <string, string>());

            Assert.AreEqual(MockApiClientCore.Response, client.Get(request, false, true));
            // use cache
            Assert.AreEqual(MockApiClientCore.Response, client.Get(request, false, true));

            // don't use cache
            Assert.AreEqual(MockApiClientCore.Response, client.Get(request, false, false));
        }
        //
        // GET: /Invoices/

        public ActionResult Index()
        {
            ApiGetRequest <Invoice> listRequest = new ApiGetRequest <Invoice>
            {
                OrderByClause = "Date DESC",
                WhereClause   = "AmountDue > 0"
            };

            ApiRepository repository = new ApiRepository();
            HttpSessionAccessTokenRepository accessTokenRepository = new HttpSessionAccessTokenRepository(Session);

            if (accessTokenRepository.GetToken("") == null)
            {
                return(new ReturnToHomeResult("There is no access token for the current user. Please click the 'connect' button on the homepage."));
            }

            Response response = repository.Get(accessTokenRepository, listRequest);

            return(View(response.Invoices));
        }
        //
        // GET: /Invoices/

        public ActionResult Index()
        {
            ApiGetRequest<Invoice> listRequest = new ApiGetRequest<Invoice>
            {
                OrderByClause = "Date DESC",
                WhereClause = "AmountDue > 0"
            };

            ApiRepository repository = new ApiRepository();
            HttpSessionAccessTokenRepository accessTokenRepository = new HttpSessionAccessTokenRepository(Session);

            if (accessTokenRepository.GetToken("") == null)
            {
                return new ReturnToHomeResult("There is no access token for the current user. Please click the 'connect' button on the homepage.");
            }

            Response response = repository.Get(accessTokenRepository, listRequest);

            return View(response.Invoices);
        }
 public Task <string> Get(ApiGetRequest request, bool isConfigureAwait)
 {
     return(Task <string> .FromResult(Response));
 }
Exemplo n.º 10
0
 public Task <string> Get(ApiGetRequest request, bool isConfigureAwait)
 {
     throw new BuffettCodeApiClientException();
 }
Exemplo n.º 11
0
        /// <summary>
        /// Makes a GET request to the API
        /// </summary>
        /// <remarks>
        /// This method can GET-one or GET-many items
        /// </remarks>
        /// <typeparam name="TModel">The type of the model.</typeparam>
        /// <param name="accessTokenRepository">The access token repository.</param>
        /// <param name="getRequest">The get request.</param>
        /// <returns></returns>
        public Response Get <TModel>(ITokenRepository <AccessToken> accessTokenRepository, ApiGetRequest <TModel> getRequest)
            where TModel : ModelBase, new()
        {
            string xeroApiBaseUri = ConfigurationManager.AppSettings["XeroApiBaseUrl"];

            IConsumerRequest consumerRequest = GetOAuthSession()
                                               .Request()
                                               .ForMethod("GET")
                                               .ForUri(GenerateFullEndpointUri(xeroApiBaseUri, getRequest));

            // Set the If-Modified-Since http header - if specified
            getRequest.ApplyModifiedSinceDate(consumerRequest);

            return(CallXeroApiInternal(consumerRequest, accessTokenRepository));
        }