private async Task CreateLocationDataRequest(bool urgent) { // Don't send anything unless we're setup if (!Settings.WeatherLoaded) { return; } if (mWearNodesWithApp == null) { // Create requests if nodes exist with app support mWearNodesWithApp = await FindWearDevicesWithApp(); if (mWearNodesWithApp == null || mWearNodesWithApp.Count == 0) { return; } } PutDataMapRequest mapRequest = PutDataMapRequest.Create(WearableHelper.LocationPath); var homeData = Settings.HomeData; mapRequest.DataMap.PutString("locationData", homeData?.ToJson()); mapRequest.DataMap.PutLong("update_time", DateTime.UtcNow.Ticks); PutDataRequest request = mapRequest.AsPutDataRequest(); if (urgent) { request.SetUrgent(); } await WearableClass.DataApi.PutDataItem(mGoogleApiClient, request); Logger.WriteLine(LoggerLevel.Info, "{0}: CreateLocationDataRequest(): urgent: {1}", TAG, urgent.ToString()); }
public IHttpActionResult PutData(PutDataRequest request) { try { var sw = Stopwatch.StartNew(); if (request.ApiKey != ApiAdminKey) { Log.Warn($"Invalid API key on {nameof(PutData)}: {request.ApiKey}"); throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("Incorrect key! Your try was logged."), ReasonPhrase = "Incorrect key" }); } if (request.Context == "Player") { var player = request.GetObject <Player>(); if (player == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable) { Content = new StringContent("Null Player was sent."), ReasonPhrase = "Null Player" }); } var connectionString = ConfigurationManager.ConnectionStrings["Store"].ConnectionString; var db = new KeyStore(connectionString); db.Set(player); } else { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("Invalid Context."), ReasonPhrase = "Invalid Context." }); } Log.Debug($"PutData in {sw.Elapsed}"); return(Ok()); } catch (HttpResponseException ex) { Log.Error("PutData", ex); throw; } catch (Exception ex) { Log.Error("PutData", ex); throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(ex.Message), ReasonPhrase = "Put data failed" }); } }
void SendCommand(string path, byte[] data = null) { if (data == null) { data = new byte[] { 1 } } ; Task.Factory.StartNew(() => { Console.WriteLine("Wear DataApi -> Sending update in thread..."); if (googleClient.IsConnected) { var pdr = PutDataRequest.Create("/" + Guid.NewGuid().ToString("D")); pdr.SetData(data); WearableClass.DataApi.PutDataItem(googleClient, pdr).Await(); Console.WriteLine("Sent Data Item"); } }).ContinueWith(t => { if (t.Exception != null) { Console.WriteLine("Wear DataApi -> Failed to Send Contraction: " + t.Exception); } }); } }
protected override void OnHandleIntent(Intent intent) { google_api_client.BlockingConnect(TIME_OUT_MS, TimeUnit.Milliseconds); Android.Net.Uri dataItemUri = intent.Data; if (!google_api_client.IsConnected) { Log.Error(TAG, "Failed to update data item " + dataItemUri + " because client is disconnected from Google Play Services"); return; } var dataItemResult = WearableClass.DataApi.GetDataItem( google_api_client, dataItemUri).Await().JavaCast <IDataApiDataItemResult> (); var putDataMapRequest = PutDataMapRequest.CreateFromDataMapItem( DataMapItem.FromDataItem(dataItemResult.DataItem)); var dataMap = putDataMapRequest.DataMap; //update quiz status variables int questionIndex = intent.GetIntExtra(EXTRA_QUESTION_INDEX, -1); bool chosenAnswerCorrect = intent.GetBooleanExtra(EXTRA_QUESTION_CORRECT, false); dataMap.PutInt(Constants.QUESTION_INDEX, questionIndex); dataMap.PutBoolean(Constants.CHOSEN_ANSWER_CORRECT, chosenAnswerCorrect); dataMap.PutBoolean(Constants.QUESTION_WAS_ANSWERED, true); PutDataRequest request = putDataMapRequest.AsPutDataRequest(); WearableClass.DataApi.PutDataItem(google_api_client, request).Await(); //remove this question notification ((NotificationManager)GetSystemService(NotificationService)).Cancel(questionIndex); google_api_client.Disconnect(); }
public void SendData() { //send data to DataApi layer if (!_client.IsConnected) { return; } PutDataMapRequest mrequest = PutDataMapRequest.Create(syncPath); mrequest.DataMap.PutInt("heartratedata", heartRate); PutDataRequest request = mrequest.AsPutDataRequest(); WearableClass.DataApi.PutDataItem(_client, request); }
public static NoneQueryResponse AddUpdate <T>(string serviceUrl, string serviceMethod, string tokenKey, T dataPost, string denyFields = "", string username = "", string permissionCode = "") // Return Single Object { try { var _client = new RestClient(serviceUrl); var request = new RestRequest(serviceMethod, Method.POST) { RequestFormat = DataFormat.Json }; PutDataRequest dataRequest = new PutDataRequest(); dataRequest.RequestObject = dataPost; dataRequest.DenyFields = denyFields; /* * For case add more param over object */ request.AddBody(dataRequest); if (!String.IsNullOrEmpty(tokenKey)) { request.AddHeader("tokenKey", tokenKey); } var response = _client.Execute(request); GetDataResponse responseData = JsonConvert.DeserializeObject <GetDataResponse>(response.Content); NoneQueryResponse dataObject = new NoneQueryResponse(); if (responseData != null) { dataObject = JsonConvert.DeserializeObject <NoneQueryResponse>(responseData.Content.ToString()); return(dataObject); } return(dataObject); } catch (Exception ex) { return(new NoneQueryResponse()); } }
/** * Transfer the required data over to the wearable * @param attractions list of attraction data to transfer over */ private void SendDataToWearable(List <Attraction> attractions) { GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this) .AddApi(WearableClass.API) .Build(); // It's OK to use blockingConnect() here as we are running in an // IntentService that executes work on a separate (background) thread. ConnectionResult connectionResult = googleApiClient.BlockingConnect( Constants.GOOGLE_API_CLIENT_TIMEOUT_S, TimeUnit.Seconds); // Limit attractions to send int count = attractions.Count > Constants.MAX_ATTRACTIONS ? Constants.MAX_ATTRACTIONS : attractions.Count; List <DataMap> attractionsData = new List <DataMap>(count); for (int i = 0; i < count; i++) { Attraction attraction = attractions[i]; Bitmap image = null; Bitmap secondaryImage = null; try { //TODO: // Fetch and resize attraction image bitmap //image = Glide.with(this) // .load(attraction.imageUrl) // .asBitmap() // .diskCacheStrategy(DiskCacheStrategy.SOURCE) // .into(Constants.WEAR_IMAGE_SIZE_PARALLAX_WIDTH, Constants.WEAR_IMAGE_SIZE) // .get(); //secondaryImage = Glide.with(this) // .load(attraction.secondaryImageUrl) // .asBitmap() // .diskCacheStrategy(DiskCacheStrategy.SOURCE) // .into(Constants.WEAR_IMAGE_SIZE_PARALLAX_WIDTH, Constants.WEAR_IMAGE_SIZE) // .get(); } catch (Exception e) { Log.Error("UtilityService", "Exception loading bitmap from network"); } if (image != null && secondaryImage != null) { DataMap attractionData = new DataMap(); string distance = Utils.FormatDistanceBetween( Utils.GetLocation(this), attraction.Location); attractionData.PutString(Constants.EXTRA_TITLE, attraction.Name); attractionData.PutString(Constants.EXTRA_DESCRIPTION, attraction.Description); attractionData.PutDouble( Constants.EXTRA_LOCATION_LAT, attraction.Location.Latitude); attractionData.PutDouble( Constants.EXTRA_LOCATION_LNG, attraction.Location.Longitude); attractionData.PutString(Constants.EXTRA_DISTANCE, distance); attractionData.PutString(Constants.EXTRA_CITY, attraction.City); //TODO: // attractionData.PutAsset(Constants.EXTRA_IMAGE, // Utils.CreateAssetFromBitmap(image)); //attractionData.PutAsset(Constants.EXTRA_IMAGE_SECONDARY, // Utils.CreateAssetFromBitmap(secondaryImage)); attractionsData.Add(attractionData); } } if (connectionResult.IsSuccess && googleApiClient.IsConnected && attractionsData.Count > 0) { PutDataMapRequest dataMap = PutDataMapRequest.Create(Constants.ATTRACTION_PATH); dataMap.DataMap.PutDataMapArrayList(Constants.EXTRA_ATTRACTIONS, attractionsData); //TODO: //dataMap.DataMap.PutLong(Constants.EXTRA_TIMESTAMP, DateTime.Now.ToFileTime); PutDataRequest request = dataMap.AsPutDataRequest(); request.SetUrgent(); //TODO: Async/Await // Send the data over // var result = // WearableClass.DataApi.PutDataItem(googleApiClient, request)); // if (!result.).isSuccess()) { // Log.e(TAG, String.format("Error sending data using DataApi (error code = %d)", // result.getStatus().getStatusCode())); // } //} else { // Log.e(TAG, String.format(Constants.GOOGLE_API_CLIENT_ERROR_MSG, // connectionResult.getErrorCode())); // } googleApiClient.Disconnect(); } }
public static async Task <IDataApiDataItemResult> PutDataItemAsync(this IDataApi api, GoogleApiClient client, PutDataRequest request) { return((await api.PutDataItem(client, request)).JavaCast <IDataApiDataItemResult> ()); }
//public Task<DataClienGetFdForAssetResponse> GetFdForAssetAsync (Asset p0) //{ // return GetFdForAsset (p0).AsAsync<DataClienGetFdForAssetResponse> (); //} //public Task<DataClienGetFdForAssetResponse> GetFdForAssetAsync (IDataItemAsset p0) //{ // return GetFdForAsset (p0).AsAsync<DataClienGetFdForAssetResponse> (); //} public Task <IDataItem> PutDataItemAsync(PutDataRequest p0) { return(PutDataItem(p0).AsAsync <IDataItem> ()); }
private async Task CreateWeatherDataRequest(bool urgent) { // Don't send anything unless we're setup if (!Settings.WeatherLoaded) { return; } if (mWearNodesWithApp == null) { // Create requests if nodes exist with app support mWearNodesWithApp = await FindWearDevicesWithApp(); if (mWearNodesWithApp == null || mWearNodesWithApp.Count == 0) { return; } } PutDataMapRequest mapRequest = PutDataMapRequest.Create(WearableHelper.WeatherPath); var homeData = Settings.HomeData; var weatherData = await Settings.GetWeatherData(homeData.query); var alertData = await Settings.GetWeatherAlertData(homeData.query); if (weatherData != null) { weatherData.weather_alerts = alertData; // location // update_time // forecast // hr_forecast // txt_forecast // condition // atmosphere // astronomy // precipitation // ttl // source // query // locale mapRequest.DataMap.PutString("weatherData", weatherData?.ToJson()); List <String> alerts = new List <String>(); if (weatherData.weather_alerts.Count > 0) { foreach (WeatherData.WeatherAlert alert in weatherData.weather_alerts) { alerts.Add(alert.ToJson()); } } mapRequest.DataMap.PutStringArrayList("weatherAlerts", alerts); mapRequest.DataMap.PutLong("update_time", weatherData.update_time.UtcTicks); PutDataRequest request = mapRequest.AsPutDataRequest(); if (urgent) { request.SetUrgent(); } await WearableClass.DataApi.PutDataItem(mGoogleApiClient, request); Logger.WriteLine(LoggerLevel.Info, "{0}: CreateWeatherDataRequest(): urgent: {1}", TAG, urgent.ToString()); } }
public IHttpActionResult PutData(PutDataRequest request) { try { var sw = Stopwatch.StartNew(); if (request.ApiKey != ApiAdminKey) { Log.Warn($"Invalid API key on {nameof(PutData)}: {request.ApiKey}"); throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("Incorrect key! Your try was logged."), ReasonPhrase = "Incorrect key" }); } if (request.Context == PutDataRequestContext.Player) { var o = request.GetObject <Player>(); if (o == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable) { Content = new StringContent("Null Player was sent."), ReasonPhrase = "Null Player" }); } var connectionString = ConfigurationManager.ConnectionStrings["Store"].ConnectionString; var db = new KeyStore(connectionString); db.Set(o); } else if (request.Context == PutDataRequestContext.Leaderboard) { if (string.IsNullOrWhiteSpace(request.Title)) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable) { Content = new StringContent($"A title is required for context {PutDataRequestContext.Leaderboard}."), ReasonPhrase = "No Title" }); } var o = request.GetObject <Leader[]>(); if (o == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable) { Content = new StringContent("Null Leader[] was sent."), ReasonPhrase = "Null Leaders" }); } var file = Path.Combine(GlobalHelper.DataFolder, "Tanks", $"{request.Title}.Leaders.json"); var json = JsonConvert.SerializeObject(o, Formatting.Indented); RetryPolicy.Default.ExecuteAction(() => { File.WriteAllText(file, json, Encoding.UTF8); }); } else if (request.Context == PutDataRequestContext.TankMoE) { if (string.IsNullOrWhiteSpace(request.Title)) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable) { Content = new StringContent($"A title is required for context {PutDataRequestContext.TankMoE}."), ReasonPhrase = "No Title" }); } var o = request.GetObject <IDictionary <long, TankMoe> >(); if (o == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable) { Content = new StringContent("Null Leader[] was sent."), ReasonPhrase = "Null Leaders" }); } var file = Path.Combine(GlobalHelper.DataFolder, "MoE", $"{request.Title}.moe.json"); var json = JsonConvert.SerializeObject(o, Formatting.Indented); RetryPolicy.Default.ExecuteAction(() => { File.WriteAllText(file, json, Encoding.UTF8); }); } else if (request.Context == PutDataRequestContext.TankWN8) { var o = request.GetObject <Wn8ExpectedValues>(); if (o == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable) { Content = new StringContent("Null WN8 was sent."), ReasonPhrase = "Null WN8" }); } RetryPolicy.Default.ExecuteAction(() => { o.ToFile(GlobalHelper.DataFolder); }); } else if (request.Context == PutDataRequestContext.TankReference) { var o = request.GetObject <TankReference>(); if (o == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable) { Content = new StringContent("Null TankReference was sent."), ReasonPhrase = "Null TankReference" }); } RetryPolicy.Default.ExecuteAction(() => { o.ToFile(GlobalHelper.DataFolder); }); } else if (request.Context == PutDataRequestContext.Clan) { var o = request.GetObject <Clan>(); if (o == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable) { Content = new StringContent("Null Clan was sent."), ReasonPhrase = "Null Clan" }); } RetryPolicy.Default.ExecuteAction(() => { o.ToFile(GlobalHelper.DataFolder); }); } else { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("Invalid Context."), ReasonPhrase = "Invalid Context." }); } Log.Debug($"PutData in {sw.Elapsed}"); return(Ok()); } catch (HttpResponseException ex) { Log.Error("PutData", ex); throw; } catch (Exception ex) { Log.Error("PutData", ex); throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(ex.Message), ReasonPhrase = "Put data failed" }); } }