예제 #1
0
        public virtual async Task <string> GetAsync(string idOrName, string urlParameters = null)
        {
            var url = $"{ServiceUrl}/{EntityPluralized}({idOrName})";

            url = AppendUrlParameters(urlParameters, url);
            return(await HttpClientRunner.Run(HttpClient.GetAsync, url));
        }
        /// <inheritdoc />
        internal virtual async Task <string> GetByMappedEntityAsync(string pluralizedEntityName, List <string> ids, string urlParameters = null)
        {
            var url = $"{ServiceUrl}/{EntityPluralized}/{pluralizedEntityName}/Ids";

            url = AppendUrlParameters(urlParameters, url);
            return(await HttpClientRunner.RunAndDeserialize <List <string>, string>(HttpClient.PostAsync, url, ids));
        }
예제 #3
0
        public virtual async Task <string> GetByIdsAsync(IEnumerable <string> ids, string urlParameters = null)
        {
            var url = $"{ServiceUrl}/{EntityPluralized}/Ids";

            url = AppendUrlParameters(urlParameters, url);
            return(await HttpClientRunner.Run(HttpClient.PostAsync, url, ids));
        }
예제 #4
0
        /// <inheritdoc />
        public virtual async Task <string> GetByPropertyValuesAsync(string property, List <string> values, string urlParameters = null)
        {
            var url = $"{ServiceUrl}/{EntityPluralized}/{property}/Values";

            url = AppendUrlParameters(urlParameters, url);
            HttpContent postContent = new StringContent(JsonConvert.SerializeObject(values, JsonSerializerSettings), Encoding.UTF8, "application/json");

            return(await HttpClientRunner.Run(HttpClient.PostAsync, url, postContent));
        }
예제 #5
0
        internal async Task <OdataObject <T, TId> > UpdateCache(Func <string, Task <HttpResponseMessage> > methodIfNotCached, string url)
        {
            OdataObject <T, TId> e = await HttpClientRunner.RunAndDeserialize <OdataObject <T, TId> >(methodIfNotCached, url);

            if (e != null)
            {
                var key = (TId)e.GetType().GetProperty(Id).GetValue(e);
                Cache[key] = e;
            }
            return(e);
        }
예제 #6
0
        /// <inheritdoc />
        public virtual async Task <OdataObject <TEntity, TId> > GetAsync(string idOrName)
        {
            var id = idOrName.To <TId>();

            if (id.Equals(default(TId)))
            {
                var urlEncodedAlternateId = WebUtility.UrlEncode(idOrName);
                return(await HttpClientRunner.RunAndDeserialize <OdataObject <TEntity, TId> >(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}({urlEncodedAlternateId})"));
            }
            return(await EntityCache.GetWithCache(id, HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}({idOrName})"));
        }
예제 #7
0
        internal async Task <OdataObjectCollection <T, TId> > UpdateCache(IEnumerable <TId> ids, Func <string, HttpContent, Task <HttpResponseMessage> > methodIfNotCached, string url)
        {
            if (ids == null && !ids.Any())
            {
                return(null);
            }
            var list = await HttpClientRunner.RunAndDeserialize <IEnumerable <TId>, OdataObjectCollection <T, TId> >(methodIfNotCached, url, ids);

            if (list != null && list.Count > 0)
            {
                foreach (var e in list)
                {
                    var key = (TId)e.GetType().GetProperty(Id).GetValue(e);
                    Cache[key] = e;
                }
            }
            return(list);
        }
예제 #8
0
 public virtual async Task <string> PutAsync(string id, HttpContent content)
 {
     return(await HttpClientRunner.Run(HttpClient.PutAsync, $"{ServiceUrl}/{EntityPluralized}({id})", content, JsonSerializerSettings));
 }
예제 #9
0
 public virtual async Task <string> UpdatePropertyAsync(string id, string property, string value)
 {
     return(await HttpClientRunner.Run(HttpClient.PostAsync, $"{ServiceUrl}/{EntityPluralized}({id})/{property}", value, JsonSerializerSettings));
 }
예제 #10
0
 public virtual async Task <string> GetMetadataAsync()
 {
     return(await HttpClientRunner.Run(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}/$Metadata"));
 }
예제 #11
0
 public virtual async Task <string> GetPropertyAsync(string id, string property)
 {
     return(await HttpClientRunner.Run(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}({id})/{property}"));
 }
예제 #12
0
 /// <inheritdoc />
 public virtual async Task <OdataObjectCollection <Addendum, long> > GetAddendaAsync(string id)
 {
     return(await HttpClientRunner.RunAndDeserialize <OdataObjectCollection <Addendum, long> >(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}({id})/Addenda"));
 }
예제 #13
0
 public virtual async Task <string> GetByQueryParametersAsync(string queryParameters)
 {
     return(await HttpClientRunner.Run(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}?{queryParameters}"));
 }
예제 #14
0
 /// <inheritdoc />
 public virtual async Task <OdataObjectCollection <TEntity, TId> > GetByQueryParametersAsync(string queryParameters)
 {
     return(await HttpClientRunner.RunAndDeserialize <OdataObjectCollection <TEntity, TId> >(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}?{queryParameters}"));
 }
예제 #15
0
 public virtual async Task <string> GetAddendaByNameAsync(string id, string name)
 {
     return(await HttpClientRunner.Run(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}({id})/Addenda({name})"));
 }
예제 #16
0
        /// <inheritdoc />
        public virtual async Task <OdataObject <TEntity, TId> > GetByAlternateKeyAsync(string altKey)
        {
            var urlEncodedAlternateId = WebUtility.UrlEncode(altKey);

            return(await HttpClientRunner.RunAndDeserialize <OdataObject <TEntity, TId> >(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}({urlEncodedAlternateId})"));
        }
예제 #17
0
 public virtual async Task <string> GetByCustomUrlAsync(string urlPart)
 {
     return(await HttpClientRunner.Run(HttpClient.GetAsync, $"{ServiceUrl}/{urlPart}"));
 }
예제 #18
0
 /// <inheritdoc />
 public virtual async Task <OdataObjectCollection <TEntity, TId> > PostAsync(List <TEntity> entities)
 {
     return(await HttpClientRunner.RunAndDeserialize <List <TEntity>, OdataObjectCollection <TEntity, TId> >(HttpClient.PostAsync, $"{ServiceUrl}/{EntityPluralized}", entities, JsonSerializerSettings));
 }
예제 #19
0
 public virtual async Task <int> GetCountAsync()
 {
     return(await HttpClientRunner.RunAndDeserialize <int>(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}?$count"));
 }
예제 #20
0
 /// <inheritdoc />
 public virtual async Task <OdataObjectCollection <Addendum, long> > GetAddendaByEntityIdsAsync(List <string> ids)
 {
     return(await HttpClientRunner.RunAndDeserialize <List <string>, OdataObjectCollection <Addendum, long> >(HttpClient.PostAsync, $"{ServiceUrl}/{EntityPluralized}/Ids/Addenda", ids));
 }
예제 #21
0
 public virtual async Task <bool> DeleteAsync(string id)
 {
     return(await HttpClientRunner.RunAndDeserialize <bool>(HttpClient.DeleteAsync, $"{ServiceUrl}/{EntityPluralized}({id})"));
 }
예제 #22
0
 /// <inheritdoc />
 public virtual async Task <CsdlEntity <TEntity> > GetMetadataAsync()
 {
     return(await HttpClientRunner.RunAndDeserialize <CsdlEntity <TEntity> >(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}/$Metadata"));
 }
예제 #23
0
 public virtual async Task <string> GetAddendaByEntityIdsAsync(List <string> ids)
 {
     return(await HttpClientRunner.Run(HttpClient.PostAsync, $"{ServiceUrl}/{EntityPluralized}/Ids/Addenda", ids));
 }
예제 #24
0
        /// <inheritdoc />
        public virtual async Task <OdataObjectCollection <TEntity, TId> > GetByPropertyValuesAsync(string property, IEnumerable <string> values)
        {
            HttpContent postContent = new StringContent(JsonConvert.SerializeObject(values, JsonSerializerSettings), Encoding.UTF8, "application/json");

            return(await HttpClientRunner.RunAndDeserialize <OdataObjectCollection <TEntity, TId> >(HttpClient.PostAsync, $"{ServiceUrl}/{EntityPluralized}/{property}/Values", postContent));
        }
예제 #25
0
 /// <inheritdoc />
 public virtual async Task <OdataObjectCollection <TEntity, TId> > GetAllAsync()
 {
     return(await HttpClientRunner.RunAndDeserialize <OdataObjectCollection <TEntity, TId> >(HttpClient.GetAsync, $"{ServiceUrl}/{EntityPluralized}"));
 }
예제 #26
0
 /// <inheritdoc />
 public virtual async Task <OdataObject <TEntity, TId> > PutAsync(string id, TEntity entity)
 {
     return(await HttpClientRunner.RunAndDeserialize <TEntity, OdataObject <TEntity, TId> >(HttpClient.PutAsync, $"{ServiceUrl}/{EntityPluralized}({id})", entity, JsonSerializerSettings));
 }
예제 #27
0
 public virtual async Task <string> GetByCustomUrlAsync(string urlPart, Func <string, HttpContent, Task <HttpResponseMessage> > httpMethod, object content)
 {
     return(await HttpClientRunner.Run(httpMethod, $"{ServiceUrl}/{urlPart}", content));
 }
예제 #28
0
 /// <inheritdoc />
 public virtual async Task <OdataObjectCollection <TEntity, TId> > GetByCustomUrlAsync(string urlPart)
 {
     return(await HttpClientRunner.RunAndDeserialize <OdataObjectCollection <TEntity, TId> >(HttpClient.GetAsync, $"{ServiceUrl}/{urlPart}"));
 }
예제 #29
0
 /// <inheritdoc />
 internal virtual async Task <OdataObjectCollection <TEntity, TId> > GetByMappedEntityAsync <Eid>(string pluralizedEntityName, List <Eid> ids)
 {
     return(await HttpClientRunner.RunAndDeserialize <List <Eid>, OdataObjectCollection <TEntity, TId> >(HttpClient.PostAsync, $"{ServiceUrl}/{EntityPluralized}/{pluralizedEntityName}/Ids", ids));
 }
예제 #30
0
 /// <inheritdoc />
 public virtual async Task <OdataObjectCollection <TEntity, TId> > GetByCustomUrlAsync(string urlPart, Func <string, HttpContent, Task <HttpResponseMessage> > httpMethod, HttpContent content)
 {
     return(await HttpClientRunner.RunAndDeserialize <OdataObjectCollection <TEntity, TId> >(httpMethod, $"{ServiceUrl}/{urlPart}", content));
 }