/// <summary> /// Build SyncState from json /// </summary> /// <param name="sync"></param> /// <returns></returns> public static SyncState FromJson(JObject sync) { if (sync == null) { return(null); } var jsonTarget = sync.ExtractValue <JObject>(Constants.SyncTarget); var syncType = (SyncTypes)Enum.Parse(typeof(SyncTypes), sync.ExtractValue <string>(Constants.SyncType)); var state = new SyncState { Id = sync.ExtractValue <long>(SmartStore.Store.SmartStore.SoupEntryId), Target = (syncType == SyncTypes.SyncDown ? (SyncTarget)SyncDownTarget.FromJson(jsonTarget) : SyncUpTarget.FromJson(jsonTarget)), Options = SyncOptions.FromJson(sync.ExtractValue <JObject>(Constants.SyncOptions)), SoupName = sync.ExtractValue <string>(Constants.SyncSoupName), Progress = sync.ExtractValue <int>(Constants.SyncProgress), TotalSize = sync.ExtractValue <int>(Constants.SyncTotalSize), Type = syncType, Status = (SyncStatusTypes) Enum.Parse(typeof(SyncStatusTypes), sync.ExtractValue <string>(Constants.SyncStatus)), MaxTimeStamp = sync.ExtractValue <long>(Constants.SyncMaxTimeStamp) }; return(state); }
public Models.SyncState SyncDown(SyncEvent syncEvent, string target, string soupName, Models.SyncOptions options) { var soqlsyncDownTarget = JObject.Parse(target); var soqlsyncDown = new SoqlSyncDownTarget(soqlsyncDownTarget); SyncDownTarget syncDown = soqlsyncDown; var syncOptions = options != null?SyncOptions.FromJson(JObject.Parse(JsonConvert.SerializeObject(options))) : null; var state = _syncManager.SyncDown(syncDown, soupName, syncEvent.OnSyncEventRaised, syncOptions); return(Models.SyncState.FromJson(state.AsJson().ToString())); }
public Models.SyncState SyncUp(SyncEvent syncEvent, Models.SyncUpTarget target, Models.SyncOptions options, string soupName) { var syncUp = JsonConvert.SerializeObject(target); var syncOptions = JsonConvert.SerializeObject(options, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); var state = _syncManager.SyncUp(JsonConvert.DeserializeObject <SyncUpTarget>(syncUp), SyncOptions.FromJson(JObject.Parse(syncOptions)), soupName, syncEvent.OnSyncEventRaised); return(Models.SyncState.FromJson(state.AsJson().ToString())); }