public Task <IObjectState> GetSessionAsync(string sessionToken, CancellationToken cancellationToken) { var command = new AVCommand("sessions/me", method: "GET", sessionToken: sessionToken, data: null); return(commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(t => { return AVObjectCoder.Instance.Decode(t.Result.Item2, AVDecoder.Instance); })); }
public virtual Task <FileState> SaveAsync(FileState state, Stream dataStream, String sessionToken, IProgress <AVUploadProgressEventArgs> progress, CancellationToken cancellationToken = default(CancellationToken)) { if (state.Url != null) { // !isDirty return(Task <FileState> .FromResult(state)); } if (cancellationToken.IsCancellationRequested) { var tcs = new TaskCompletionSource <FileState>(); tcs.TrySetCanceled(); return(tcs.Task); } var oldPosition = dataStream.Position; var command = new AVCommand("files/" + state.Name, method: "POST", sessionToken: sessionToken, contentType: state.MimeType, stream: dataStream); return(commandRunner.RunCommandAsync(command, uploadProgress: progress, cancellationToken: cancellationToken).OnSuccess(uploadTask => { var result = uploadTask.Result; var jsonData = result.Item2; cancellationToken.ThrowIfCancellationRequested(); return new FileState { Name = jsonData["name"] as string, Url = new Uri(jsonData["url"] as string, UriKind.Absolute), MimeType = state.MimeType }; }).ContinueWith(t => { // Rewind the stream on failure or cancellation (if possible) if ((t.IsFaulted || t.IsCanceled) && dataStream.CanSeek) { dataStream.Seek(oldPosition, SeekOrigin.Begin); } return t; }).Unwrap()); }
public Task <IObjectState> FetchAsync(IObjectState state, string sessionToken, CancellationToken cancellationToken) { var command = new AVCommand(string.Format("/classes/{0}/{1}", Uri.EscapeDataString(state.ClassName), Uri.EscapeDataString(state.ObjectId)), method: "GET", sessionToken: sessionToken, data: null); return(commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(t => { return AVObjectCoder.Instance.Decode(t.Result.Item2, AVDecoder.Instance); })); }
public Task SendPushNotificationAsync(IAVState state, CancellationToken cancellationToken) { return(currentUserController.GetCurrentSessionTokenAsync(cancellationToken).OnSuccess(sessionTokenTask => { var command = new AVCommand("push", method: "POST", sessionToken: sessionTokenTask.Result, data: AVPushEncoder.Instance.Encode(state)); return commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken); }).Unwrap()); }
public Task <T> CallFunctionAsync <T>(String name, IDictionary <string, object> parameters, string sessionToken, CancellationToken cancellationToken) { var command = new AVCommand(string.Format("functions/{0}", Uri.EscapeUriString(name)), method: "POST", sessionToken: sessionToken, data: NoObjectsEncoder.Instance.Encode(parameters) as IDictionary <string, object>); return(commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(t => { var decoded = AVDecoder.Instance.Decode(t.Result.Item2) as IDictionary <string, object>; if (!decoded.ContainsKey("result")) { return default(T); } return Conversion.To <T>(decoded["result"]); })); }
public Task TrackEventAsync(string name, IDictionary <string, string> dimensions, string sessionToken, CancellationToken cancellationToken) { IDictionary <string, object> data = new Dictionary <string, object> { { "at", DateTime.Now }, { "name", name }, }; if (dimensions != null) { data["dimensions"] = dimensions; } var command = new AVCommand("/events/" + name, method: "POST", sessionToken: sessionToken, data: PointerOrLocalIdEncoder.Instance.Encode(data) as IDictionary <string, object>); return(commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken)); }
public Task <AVConfig> FetchConfigAsync(String sessionToken, CancellationToken cancellationToken) { var command = new AVCommand("config", method: "GET", sessionToken: sessionToken, data: null); return(commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(task => { cancellationToken.ThrowIfCancellationRequested(); return new AVConfig(task.Result.Item2); }).OnSuccess(task => { cancellationToken.ThrowIfCancellationRequested(); CurrentConfigController.SetCurrentConfigAsync(task.Result); return task; }).Unwrap()); }
private Task <IDictionary <string, object> > FindAsync(string relativeUri, IDictionary <string, object> parameters, string sessionToken, CancellationToken cancellationToken) { var command = new AVCommand(string.Format("{0}?{1}", relativeUri, AVClient.BuildQueryString(parameters)), method: "GET", sessionToken: sessionToken, data: null); return(commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(t => { return t.Result.Item2; })); }
public Task <IObjectState> SignUpAsync(IObjectState state, IDictionary <string, IAVFieldOperation> operations, CancellationToken cancellationToken) { var objectJSON = AVObject.ToJSONObjectForSaving(operations); var command = new AVCommand("classes/_User", method: "POST", data: objectJSON); return(commandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).OnSuccess(t => { var serverState = AVObjectCoder.Instance.Decode(t.Result.Item2, AVDecoder.Instance); serverState = serverState.MutatedClone(mutableClone => { mutableClone.IsNew = true; }); return serverState; })); }