public Uri GetUri(string baseId, string tableName) { var uriBuilder = new UriBuilder(AirClient.TableUri(baseId, tableName)); if (!string.IsNullOrEmpty(Offset)) { AddParametersToQuery(uriBuilder, "offset", Offset); } if (Fields != null) { string flattenFieldsParam = FlattenFieldsParam(Fields); AddParametersToQuery(uriBuilder, flattenFieldsParam); } if (!string.IsNullOrEmpty(FilterByFormula)) { AddParametersToQuery(uriBuilder, "filterByFormula", FilterByFormula); } if (Sort != null) { string flattenSortParam = FlattenSortParam(Sort); AddParametersToQuery(uriBuilder, flattenSortParam); } if (!string.IsNullOrEmpty(View)) { AddParametersToQuery(uriBuilder, "view", View); } if (MaxRecords != null) { if (MaxRecords <= 0) { throw new ArgumentException("Maximum Number of Records must be > 0", nameof(MaxRecords)); } AddParametersToQuery(uriBuilder, "maxRecords", MaxRecords, encode: false); } if (PageSize != null) { if (PageSize <= 0 || PageSize > MAX_PAGE_SIZE) { throw new ArgumentException("Page Size must be > 0 and <= 100", nameof(PageSize)); } AddParametersToQuery(uriBuilder, "pageSize", PageSize, encode: false); } return(uriBuilder.Uri); }
async Task <TRecord> CUROperation <TRecord>(HttpMethod method, string recordId, Dictionary <string, object> fields, bool typecast) where TRecord : AirRecord { // For JsonConvert fields = FixDates(fields); var uri = AirClient.RecordUri(Base.BaseId, Name, recordId); var fieldsAndTypecast = new FieldsAndTypecast(fields, typecast); var response = await AirClient.SendAsync(method, Base.ApiKey, uri, fieldsAndTypecast.ToJson()); var record = JsonConvert.DeserializeObject <TRecord>(response.Body); return(record); }
public async Task <bool> DeleteRecord(string recordId) { var uri = AirClient.RecordUri(Base.BaseId, Name, recordId); try { await AirClient.DeleteAsync(Base.ApiKey, uri); return(true); } catch (Exception exc) { Debug.ExceptionCaught(exc); return(false); } }
//public async Task<DataQueryResult> Query<TRecord>(object queryToken) where TRecord : AirRecord //{ // QyeryBuilder queryBuilder; // if (queryToken is QyeryBuilder) { // queryBuilder = (QyeryBuilder)queryToken; // } // else if (queryToken == null) { // queryBuilder = new QyeryBuilder(); // } // else { // throw new ArgumentException("Invalid type of query token", queryToken.GetType().ToString()); // } // var list = await List<TRecord>(queryBuilder); // if (list != null && list.Records.Length > 0) { // queryBuilder.Offset += list.Records.Length; // return new DataQueryResult { // Records = list.Records, // Count = list.Records.Length, // NextToken = queryBuilder // }; // } // else { // return new DataQueryResult { Records = null, Count = 0, NextToken = null }; // } //} //public async Task<DataQueryResult> Filter<TRecord>(string formula, QyeryBuilder queryBuilder = null) where TRecord : AirRecord //{ // Guard.ArgumentNotEmpty(formula, nameof(formula)); // string savedFormula = null; // if (queryBuilder == null) { // queryBuilder = new QyeryBuilder { FilterByFormula = formula }; // } // else { // savedFormula = queryBuilder.FilterByFormula; // queryBuilder.FilterByFormula = formula; // } // var result = await Query<TRecord>(queryBuilder); // queryBuilder.FilterByFormula = savedFormula; // return result; //} //public async Task<ICollection<IDataRecord>> GetAllRecords<TRecord>() where TRecord : AirRecord //{ // var records = new List<IDataRecord>(); // var queryBuilder = new QyeryBuilder(); // bool hasMore = true; // do { // var list = await List<TRecord>(queryBuilder); // if (list != null && list.Records.Length > 0) { // records.AddRange(list.Records); // queryBuilder.Offset = list.Offset; // hasMore = list.Offset != null; // } // else { // hasMore = false; // } // } // while (hasMore); // return records; //} public async Task <TRecord> GetRecord <TRecord>(string recordId) { var uri = AirClient.RecordUri(Base.BaseId, Name, recordId); var response = await AirClient.GetAsync(Base.ApiKey, uri); var settings = new JsonSerializerSettings(); settings.DateTimeZoneHandling = UsesUTC ? DateTimeZoneHandling.Utc : DateTimeZoneHandling.Local; var record = JsonConvert.DeserializeObject <TRecord>(response.Body, settings); return(record); }
public async Task <AirRecordList <TRecord> > List <TRecord>(QyeryBuilder queryBuilder = null) where TRecord : AirRecord { if (queryBuilder == null) { queryBuilder = new QyeryBuilder { } } ; var uri = queryBuilder.GetUri(Base.BaseId, Name); var response = await AirClient.GetAsync(Base.ApiKey, uri); var recordList = JsonConvert.DeserializeObject <AirRecordList <TRecord> >(response.Body); return(recordList); }