public async Task <DeviceAddResult> AddAsync([NotNull] DeviceAddOptions options, [NotNull] string appName = ElectOneSignalConstants.DefaultAppName) { var appInfo = Options.Apps.Single(x => x.AppName == appName); options.AppId = appInfo.AppId; try { var result = await ElectOneSignalConstants.DefaultApiUrl .ConfigureRequest(config => { config.JsonSerializer = ElectOneSignalConstants.NewtonsoftJsonSerializer; }) .AppendPathSegment("players") .WithHeader("Authorization", $"Basic {appInfo.ApiKey}") .PostJsonAsync(options) .ReceiveJson <DeviceAddResult>() .ConfigureAwait(true); return(result); } catch (FlurlHttpException e) { var response = await e.GetResponseStringAsync().ConfigureAwait(true); throw new HttpRequestException(response); } }
/// <summary> /// Adds new device into OneSignal App. /// </summary> /// <param name="options">Here you can specify options used to add new device.</param> /// <returns>Result of device add operation.</returns> public DeviceAddResult Add(DeviceAddOptions options) { var restRequest = new RestRequest("players", Method.POST); restRequest.AddHeader("Authorization", string.Format("Basic {0}", base.ApiKey)); restRequest.RequestFormat = DataFormat.Json; restRequest.JsonSerializer = new NewtonsoftJsonSerializer(); restRequest.AddBody(options); var restResponse = base.RestClient.Execute <DeviceAddResult>(restRequest); if (restResponse.ErrorException != null) { throw restResponse.ErrorException; } return(restResponse.Data); }
public async Task <DeviceAddResult> Post([FromBody] JObject objData) { UsuarioDeviceOneSignal usuarioDevice = objData.ToObject <UsuarioDeviceOneSignal>(); //OneSignalClient clientOnesignal = new OneSignalClient(_oneSignalSettings.RestKey, _oneSignalSettings.RestUrl); DeviceAddOptions optionDevide = usuarioDevice.Device; try { optionDevide.AppId = new Guid(_oneSignalSettings.ApiKey); DeviceAddResult resultAdd = OneSignalDeviceAdd(optionDevide); if (resultAdd.IsSuccess == true) { //Consulta os dados do usuario para associar o Token do OneSignal var filter = Builders <Usuario> .Filter.Eq("_id", usuarioDevice.Usuario._id); var usuario = _repository.usuarios.Find(filter).FirstOrDefaultAsync(); var update = Builders <Usuario> .Update .Set(x => x.TokenOneSignal, resultAdd.Id); //Atualiza o Token do usuario await _repository.usuarios.UpdateOneAsync(filter, update); } return(resultAdd); } catch (Exception ex) { throw new Exception(ex.Message); } }
private DeviceAddResult OneSignalDeviceAdd(DeviceAddOptions options) { var restRequest = new RestRequest("players", Method.POST); restRequest.AddHeader("Content-Type", "application/json"); restRequest.AddHeader("Authorization", string.Format("Basic {0}", _oneSignalSettings.RestKey)); restRequest.RequestFormat = DataFormat.Json; restRequest.JsonSerializer = new NewtonsoftJsonSerializer(); restRequest.AddBody(options); RestClient restClient = new RestClient(_oneSignalSettings.RestUrl); restClient.Timeout = -1; var restResponse = restClient.Execute <DeviceAddResult>(restRequest); if (restResponse.ErrorException != null) { throw restResponse.ErrorException; } return(restResponse.Data); }