/// <summary> /// Subscribe to periodic 9-axis IMU measurements. /// </summary> /// <param name="deviceName">Name of the device, e.g. Movesense 174430000051</param> /// <param name="notificationCallback">Callback function to receive the IMU9Data</param> /// <param name="sampleRate">Sampling rate, e.g. 26 for 26Hz</param> public async Task <IMdsSubscription> SubscribeIMU9Async(string deviceName, Action <IMU9Data> notificationCallback, int sampleRate = DEFAULT_SAMPLE_RATE) { string datapath = String.Format(IMU9_SUBSCRIPTION_PATH, sampleRate); var op = new ApiSubscription <IMU9Data>(deviceName, datapath); return(await op.SubscribeAsync(notificationCallback)); }
private void FixRelativeUrl(ApiSubscription sub) { if (!sub.ThumbnailUrl.IsAbsoluteUri) { sub.ThumbnailUrl = new Uri(AppState.BackendBase, sub.ThumbnailUrl); } }
/// <summary> /// Subscribe to periodic Magnetometer data measurements /// </summary> /// <param name="notificationCallback">Callback function to receive the MagnData</param> /// <param name="sampleRate">Sampling rate, e.g. 26 for 26Hz</param> public async Task <IMdsSubscription> SubscribeMagnetometerAsync(Action <MagnData> notificationCallback, int sampleRate = DEFAULT_SAMPLE_RATE) { string datapath = String.Format(MAGNETOMETER_SUBSCRIPTION_PATH, sampleRate); var op = new ApiSubscription <MagnData>(this, datapath); return(await op.SubscribeAsync(notificationCallback)); }
public async Task <IMdsSubscription> SubscribeGyrometerAsync(string deviceName, Action <GyroData> notificationCallback, int sampleRate = DEFAULT_SAMPLE_RATE) { string datapath = String.Format(GYROMETER_SUBSCRIPTION_PATH, sampleRate); var op = new ApiSubscription <GyroData>(deviceName, datapath); return(await op.SubscribeAsync(notificationCallback).ConfigureAwait(false)); }
/// <summary> /// Subscribe to periodic 6-axis IMU measurements (Acc + Gyro). /// </summary> /// <param name="notificationCallback">Callback function to receive the IMU6Data</param> /// <param name="sampleRate">Sampling rate, e.g. 26 for 26Hz</param> public async Task <IMdsSubscription> SubscribeIMU6Async(Action <IMU6Data> notificationCallback, int sampleRate = DEFAULT_SAMPLE_RATE) { string datapath = String.Format(IMU6_SUBSCRIPTION_PATH, sampleRate); var op = new ApiSubscription <IMU6Data>(this, datapath); return(await op.SubscribeAsync(notificationCallback).ConfigureAwait(false)); }
private void AddSubscription(ApiSubscription sub) { FixRelativeUrl(sub); var vmSub = new SubscriptionViewModel(sub); var tvSub = new SortedTreeViewNode <SubscriptionItemViewModelBase, string>(vmSub); GetParentFolder(sub.ParentFolderId).Children.Add(tvSub); }
public async Task Synchronize(ApiSubscription subscription) { using var scope = serviceProvider.CreateScope(); var backend = scope.ServiceProvider.GetRequiredService <BackendService>(); await backend.SubscriptionSynchronize(new SubscriptionSynchronizeRequest() { Id = subscription.Id }); }
public async Task Delete(ApiSubscription subscription, bool deleteDownloadedFiles) { using var scope = serviceProvider.CreateScope(); var backend = scope.ServiceProvider.GetRequiredService <BackendService>(); await backend.SubscriptionDelete(new SubscriptionDeleteRequest() { Ids = new[] { subscription.Id }, DeleteDownloadedFiles = deleteDownloadedFiles }); }
//Delete subscription (DELETE -> /subscriptions/some-url-friendly-identifier) public HttpResponseMessage Delete(int id, ApiSubscription subdata) { try { repo.DeleteSubscription(subdata.Id); return Request.CreateResponse(HttpStatusCode.OK,subdata); } catch (Exception ex) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.GetBaseException()); } }
public async Task AddSubscription_ActivitiesEndPoint_WithoutSubscriberId() { Action <HttpRequestMessage> additionalChecks = message => { Assert.AreEqual(0, message.Headers.Count()); }; FitbitClient fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/activities/apiSubscriptions/323-activities.json", HttpMethod.Post, additionalChecks); ApiSubscription response = await fitbitClient.AddSubscriptionAsync(APICollectionType.activities, "323"); Assert.AreEqual("323", response.SubscriptionId); }
public void Can_Deserialize_UpdatedResource() { // aka Add Subscription response string content = SampleDataHelper.GetContent("AddSubscriptionResponse.json"); JsonDotNetSerializer deserializer = new JsonDotNetSerializer(); ApiSubscription subscription = deserializer.Deserialize <ApiSubscription>(content); Assert.AreEqual(APICollectionType.user, subscription.CollectionType); Assert.AreEqual("227YZL", subscription.OwnerId); Assert.AreEqual("1", subscription.SubscriberId); Assert.AreEqual("323", subscription.SubscriptionId); }
//Create subscription (POST -> /subscriptions) -> Deprecated ;) //Create subscription (POST -> /subscriptions/userId) public HttpResponseMessage Post(int id, ApiSubscription subdata) { if (subdata == null) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, new ArgumentNullException("subdata")); } try { var saved = repo.AddUserSubscription(id, subdata); var response = Request.CreateResponse<ApiSubscription>(HttpStatusCode.Created, saved); return response; } catch (Exception ex) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.GetBaseException()); } }
public void Can_Deserialize_ApiSubscription() { string content = SampleDataHelper.GetContent("ListApiSubscriptionsResponseSingle.json"); JsonDotNetSerializer deserializer = new JsonDotNetSerializer { RootProperty = "apiSubscriptions" }; List <ApiSubscription> subscriptions = deserializer.Deserialize <List <ApiSubscription> >(content); Assert.IsNotNull(subscriptions); Assert.AreEqual(1, subscriptions.Count); ApiSubscription subscription = subscriptions.FirstOrDefault(); Assert.AreEqual(APICollectionType.user, subscription.CollectionType); Assert.AreEqual("227YZL", subscription.OwnerId); Assert.AreEqual("1", subscription.SubscriberId); Assert.AreEqual("323", subscription.SubscriptionId); }
public async Task AddSubscription_ActivitiesEndPoint_WithSubscriberId() { Action <HttpRequestMessage> additionalChecks = message => { Assert.AreEqual(1, message.Headers.Count()); Assert.IsTrue(message.Headers.Contains(Constants.Headers.XFitbitSubscriberId)); IEnumerable <string> headerValues; Assert.IsTrue(message.Headers.TryGetValues(Constants.Headers.XFitbitSubscriberId, out headerValues)); Assert.AreEqual(SubScriberId, headerValues.First()); }; FitbitClient fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/activities/apiSubscriptions/323-activities.json", HttpMethod.Post, additionalChecks); ApiSubscription response = await fitbitClient.AddSubscriptionAsync(APICollectionType.activities, "323", SubScriberId); Assert.AreEqual("323", response.SubscriptionId); }
private bool RemoveSubscription(ApiSubscription subscription) { var parent = GetParentFolder(subscription.ParentFolderId); foreach (var child in parent.Children) { if (child.Data is SubscriptionViewModel subVm && subVm.Subscription.Id == subscription.Id) { parent.Children.Remove(child); if (child == treeView.SelectedItem) { treeView.SelectedItem = null; } return(true); } } return(false); }
//Add subscription to user (PUT -> /users/subscriptionId) spec changed to: //Add subscription to user (PUT -> /users/userId) (major violation of spec) public HttpResponseMessage Put(int id, ApiSubscription subdata) { try { if (subdata == null) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, new ArgumentNullException("subdata")); } //get CurrentUser instead var user = repo.GetUser(id); if (user == null) { return Request.CreateErrorResponse(HttpStatusCode.NoContent,"No user with id: " + id.ToString()); } var replySub = repo.AddUserSubscription(id, subdata); return Request.CreateResponse<ApiSubscription>(HttpStatusCode.OK, replySub); } catch (Exception ex) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.GetBaseException()); } }
public ApiSubscription UpdateSubscription(ApiSubscription sub) { return _client.UpdateSubscription(sub); }
//Update subscription data such (PUT -> /subscriptions/some-url-friendly-identifier) //id is redundant because I update the subscription directly from subdata public HttpResponseMessage Put(int id, ApiSubscription subdata) { if (subdata == null) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, new ArgumentNullException("subdata")); } try { //could have,should have used repo.AddUserSubscription(id, subdata) but I didn't. (Because I would like feedback on best approach) var saved = repo.UpdateSubscription(subdata); if (saved == null) { return Request.CreateErrorResponse(HttpStatusCode.NoContent, subdata.Id.ToString()); } return Request.CreateResponse(HttpStatusCode.OK, saved); } catch (Exception ex) { return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.GetBaseException()); } }
public SubscriptionViewModel(ApiSubscription subscription) { Subscription = subscription; }
public ApiSubscription AddUserSubscription(int userId, ApiSubscription subscription) { return _client.AddUserSubscription(userId, subscription); }
private void Messaging_SubscriptionUpdated(object sender, ApiSubscription subscription) { appState.Subscriptions[subscription.Id] = subscription; }
public async Task <IMdsSubscription> SubscribeTimeAsync(string deviceName, Action <TimeNotificationResult> notificationCallback) { var op = new ApiSubscription <TimeNotificationResult>(deviceName, TIME_SUBSCRIPTION_PATH); return(await op.SubscribeAsync(notificationCallback).ConfigureAwait(false)); }
/// <summary> /// Subscribe to device time notifications /// </summary> /// <param name="notificationCallback">Callback function to receive the time data</param> public async Task <IMdsSubscription> SubscribeTimeAsync(Action <TimeNotificationResult> notificationCallback) { var op = new ApiSubscription <TimeNotificationResult>(this, TIME_SUBSCRIPTION_PATH); return(await op.SubscribeAsync(notificationCallback)); }
public async Task NotifySubscriptionUpdated(UserAccount userAccount, ApiSubscription subscription) { await ForUser(userAccount).NotifySubscriptionUpdated(subscription); }
private void NotifySubscriptionUpdated(ApiSubscription subscription) { SubscriptionUpdated?.Invoke(this, subscription); }