public override Response Delete(string objectType, DataFilter filter) { DataFilter newFilter = Utility.CloneDataContractObject <DataFilter>(filter); AccessLevel accessLevel = Authorize(objectType, ref newFilter); if (accessLevel < AccessLevel.Delete) { throw new UnauthorizedAccessException(String.Format(UNAUTHORIZED_ERROR, _settings["scope"])); } Response response = new Response(); response.StatusList = new List <Status>(); Status status = new Status(); ISession session = NHibernateSessionManager.Instance.GetSession(_settings["AppDataPath"], _settings["Scope"]); try { if (_dbDictionary.IdentityConfiguration != null) { IdentityProperties identityProperties = _dbDictionary.IdentityConfiguration[objectType]; if (identityProperties.UseIdentityFilter) { newFilter = FilterByIdentity(objectType, newFilter, identityProperties); } } status.Identifier = objectType; StringBuilder queryString = new StringBuilder(); queryString.Append("from " + objectType); if (newFilter.Expressions.Count > 0) { DataObject dataObject = _dbDictionary.dataObjects.Find(x => x.objectName.ToUpper() == objectType.ToUpper()); string whereClause = newFilter.ToSqlWhereClause(_dbDictionary, dataObject.tableName, String.Empty); queryString.Append(whereClause); } session.Delete(queryString.ToString()); session.Flush(); status.Messages.Add(string.Format("Records of type [{0}] deleted succesfully.", objectType)); } catch (Exception ex) { _logger.Error("Error in Delete: " + ex); throw new Exception(string.Format("Error while deleting data objects of type [{0}]. {1}", objectType, ex)); //no need to status, thrown exception will be statused above. } finally { CloseSession(session); } response.Append(status); return(response); }
public override long GetCount(string objectType, DataFilter filter) { DataFilter newFilter = null; if (filter != null) { newFilter = Utility.CloneDataContractObject <DataFilter>(filter); newFilter.OrderExpressions = null; } AccessLevel accessLevel = Authorize(objectType, ref newFilter); if (accessLevel < AccessLevel.Read) { throw new UnauthorizedAccessException(String.Format(UNAUTHORIZED_ERROR, _settings["scope"])); } ISession session = NHibernateSessionManager.Instance.GetSession(_settings["AppDataPath"], _settings["Scope"]); try { if (_dbDictionary.IdentityConfiguration != null) { IdentityProperties identityProperties = _dbDictionary.IdentityConfiguration[objectType]; if (identityProperties.UseIdentityFilter) { newFilter = FilterByIdentity(objectType, newFilter, identityProperties); } } StringBuilder queryString = new StringBuilder(); queryString.Append("select count(*) from " + objectType); if (newFilter != null && newFilter.Expressions != null && newFilter.Expressions.Count > 0) { DataObject dataObject = _dbDictionary.dataObjects.Find(x => x.objectName.ToUpper() == objectType.ToUpper()); string whereClause = newFilter.ToSqlWhereClause(_dbDictionary, dataObject.tableName, String.Empty); queryString.Append(whereClause); } IQuery query = session.CreateQuery(queryString.ToString()); long count = query.List <long>().First(); return(count); } catch (Exception ex) { _logger.Error("Error in GetIdentifiers: " + ex); throw new Exception(string.Format("Error while getting a list of identifiers of type [{0}]. {1}", objectType, ex)); } finally { CloseSession(session); } }
internal MonitorResourceData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary <string, string> tags, AzureLocation location, IdentityProperties identity, MonitoringStatus?monitoringStatus, MarketplaceSubscriptionStatus?marketplaceSubscriptionStatus, DynatraceEnvironmentProperties dynatraceEnvironmentProperties, UserInfo userInfo, PlanData planData, LiftrResourceCategories?liftrResourceCategory, int?liftrResourcePreference, ProvisioningState?provisioningState) : base(id, name, resourceType, systemData, tags, location) { Identity = identity; MonitoringStatus = monitoringStatus; MarketplaceSubscriptionStatus = marketplaceSubscriptionStatus; DynatraceEnvironmentProperties = dynatraceEnvironmentProperties; UserInfo = userInfo; PlanData = planData; LiftrResourceCategory = liftrResourceCategory; LiftrResourcePreference = liftrResourcePreference; ProvisioningState = provisioningState; }
private DataFilter FilterByIdentity(string objectType, DataFilter filter, IdentityProperties identityProperties) { DataObject dataObject = _dbDictionary.dataObjects.Find(d => d.objectName == objectType); DataProperty dataProperty = dataObject.dataProperties.Find(p => p.columnName == identityProperties.IdentityProperty); if (dataProperty != null) { if (filter == null) { filter = new DataFilter(); } bool hasExistingExpression = false; if (filter.Expressions == null) { filter.Expressions = new List <Expression>(); } else if (filter.Expressions.Count > 0) { Expression firstExpression = filter.Expressions.First(); Expression lastExpression = filter.Expressions.Last(); firstExpression.OpenGroupCount++; lastExpression.CloseGroupCount++; hasExistingExpression = true; } string identityValue = _keyRing[identityProperties.KeyRingProperty].ToString(); Expression expression = new Expression { PropertyName = dataProperty.propertyName, RelationalOperator = RelationalOperator.EqualTo, Values = new Values { identityValue, }, IsCaseSensitive = identityProperties.IsCaseSensitive }; if (hasExistingExpression) { expression.LogicalOperator = LogicalOperator.And; } filter.Expressions.Add(expression); } return(filter); }
private DataFilter FilterByIdentity(string objectType, DataFilter filter, IdentityProperties identityProperties) { DataObject dataObject = _databaseDictionary.dataObjects.Find(d => d.objectName == objectType); DataProperty dataProperty = dataObject.dataProperties.Find(p => p.columnName == identityProperties.IdentityProperty); if (dataProperty != null) { if (filter == null) { filter = new DataFilter(); } //bool hasExistingExpression = false; if (filter.Expressions == null) { filter.Expressions = new List <org.iringtools.library.Expression>(); } else if (filter.Expressions.Count > 0) { org.iringtools.library.Expression firstExpression = filter.Expressions.First(); org.iringtools.library.Expression lastExpression = filter.Expressions.Last(); firstExpression.OpenGroupCount++; lastExpression.CloseGroupCount++; //hasExistingExpression = true; } //string identityValue = _keyRing[identityProperties.KeyRingProperty].ToString(); //org.iringtools.library.Expression expression = new org.iringtools.library.Expression //{ // PropertyName = dataProperty.propertyName, // RelationalOperator = RelationalOperator.EqualTo, // Values = new Values // { // identityValue, // }, // IsCaseSensitive = identityProperties.IsCaseSensitive //}; //if (hasExistingExpression) // expression.LogicalOperator = LogicalOperator.And; //filter.Expressions.Add(expression); } return(filter); }
private async Task IdentifySelfToGateway() { Guard.IsNotNull(_token, nameof(_token)); var properties = new IdentityProperties() { OS = "DISCORD-UWP", Device = "DISCORD-UWP", Browser = "DISCORD-UWP", Referrer = string.Empty, ReferringDomain = string.Empty, }; var identity = new Identity() { Token = _token, Compress = false, LargeThreshold = 250, Properties = properties, }; await SendMessageAsync(GatewayOperation.Identify, GatewayEvent.IDENTIFY, identity); }
private DataFilter FilterByIdentity(string objectType, DataFilter filter, IdentityProperties identityProperties) { DataObject dataObject = _databaseDictionary.dataObjects.Find(d => d.objectName == objectType); DataProperty dataProperty = dataObject.dataProperties.Find(p => p.columnName == identityProperties.IdentityProperty); if (dataProperty != null) { if (filter == null) { filter = new DataFilter(); } //bool hasExistingExpression = false; if (filter.Expressions == null) { filter.Expressions = new List<org.iringtools.library.Expression>(); } else if (filter.Expressions.Count > 0) { org.iringtools.library.Expression firstExpression = filter.Expressions.First(); org.iringtools.library.Expression lastExpression = filter.Expressions.Last(); firstExpression.OpenGroupCount++; lastExpression.CloseGroupCount++; //hasExistingExpression = true; } //string identityValue = _keyRing[identityProperties.KeyRingProperty].ToString(); //org.iringtools.library.Expression expression = new org.iringtools.library.Expression //{ // PropertyName = dataProperty.propertyName, // RelationalOperator = RelationalOperator.EqualTo, // Values = new Values // { // identityValue, // }, // IsCaseSensitive = identityProperties.IsCaseSensitive //}; //if (hasExistingExpression) // expression.LogicalOperator = LogicalOperator.And; //filter.Expressions.Add(expression); } return filter; }
internal static MonitorResourceData DeserializeMonitorResourceData(JsonElement element) { Optional <IdentityProperties> identity = default; IDictionary <string, string> tags = default; AzureLocation location = default; ResourceIdentifier id = default; string name = default; ResourceType type = default; SystemData systemData = default; Optional <MonitoringStatus> monitoringStatus = default; Optional <MarketplaceSubscriptionStatus> marketplaceSubscriptionStatus = default; Optional <DynatraceEnvironmentProperties> dynatraceEnvironmentProperties = default; Optional <UserInfo> userInfo = default; Optional <PlanData> planData = default; Optional <LiftrResourceCategories> liftrResourceCategory = default; Optional <int> liftrResourcePreference = default; Optional <ProvisioningState> provisioningState = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("identity")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } identity = IdentityProperties.DeserializeIdentityProperties(property.Value); continue; } if (property.NameEquals("tags")) { Dictionary <string, string> dictionary = new Dictionary <string, string>(); foreach (var property0 in property.Value.EnumerateObject()) { dictionary.Add(property0.Name, property0.Value.GetString()); } tags = dictionary; continue; } if (property.NameEquals("location")) { location = new AzureLocation(property.Value.GetString()); continue; } if (property.NameEquals("id")) { id = new ResourceIdentifier(property.Value.GetString()); continue; } if (property.NameEquals("name")) { name = property.Value.GetString(); continue; } if (property.NameEquals("type")) { type = new ResourceType(property.Value.GetString()); continue; } if (property.NameEquals("systemData")) { systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString()); continue; } if (property.NameEquals("properties")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } foreach (var property0 in property.Value.EnumerateObject()) { if (property0.NameEquals("monitoringStatus")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } monitoringStatus = new MonitoringStatus(property0.Value.GetString()); continue; } if (property0.NameEquals("marketplaceSubscriptionStatus")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } marketplaceSubscriptionStatus = new MarketplaceSubscriptionStatus(property0.Value.GetString()); continue; } if (property0.NameEquals("dynatraceEnvironmentProperties")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } dynatraceEnvironmentProperties = DynatraceEnvironmentProperties.DeserializeDynatraceEnvironmentProperties(property0.Value); continue; } if (property0.NameEquals("userInfo")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } userInfo = UserInfo.DeserializeUserInfo(property0.Value); continue; } if (property0.NameEquals("planData")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } planData = PlanData.DeserializePlanData(property0.Value); continue; } if (property0.NameEquals("liftrResourceCategory")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } liftrResourceCategory = new LiftrResourceCategories(property0.Value.GetString()); continue; } if (property0.NameEquals("liftrResourcePreference")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } liftrResourcePreference = property0.Value.GetInt32(); continue; } if (property0.NameEquals("provisioningState")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } provisioningState = new ProvisioningState(property0.Value.GetString()); continue; } } continue; } } return(new MonitorResourceData(id, name, type, systemData, tags, location, identity.Value, Optional.ToNullable(monitoringStatus), Optional.ToNullable(marketplaceSubscriptionStatus), dynatraceEnvironmentProperties.Value, userInfo.Value, planData.Value, Optional.ToNullable(liftrResourceCategory), Optional.ToNullable(liftrResourcePreference), Optional.ToNullable(provisioningState))); }
public static string GetManagedIdentityPrincipalId(IdentityProperties identity) { return(identity.PrincipalId ?? identity.UserAssignedIdentities.First().Value.PrincipalId); }
public override IList <IDataObject> Get(string objectType, DataFilter filter, int pageSize, int startIndex) { DataFilter newFilter = Utility.CloneDataContractObject <DataFilter>(filter); AccessLevel accessLevel = Authorize(objectType, ref newFilter); if (accessLevel < AccessLevel.Read) { throw new UnauthorizedAccessException(String.Format(UNAUTHORIZED_ERROR, _settings["scope"])); } ISession session = NHibernateSessionManager.Instance.GetSession(_settings["AppDataPath"], _settings["Scope"]); try { if (_dbDictionary.IdentityConfiguration != null) { IdentityProperties identityProperties = _dbDictionary.IdentityConfiguration[objectType]; if (identityProperties.UseIdentityFilter) { newFilter = FilterByIdentity(objectType, newFilter, identityProperties); } } DataObject objectDefinition = _dbDictionary.dataObjects.Find(x => x.objectName.ToUpper() == objectType.ToUpper()); if (objectDefinition == null) { throw new Exception("Object type [" + objectType + "] not found."); } string ns = String.IsNullOrEmpty(objectDefinition.objectNamespace) ? String.Empty : (objectDefinition.objectNamespace + "."); Type type = Type.GetType(ns + objectType + ", " + _settings["ExecutingAssemblyName"]); // make an exception for tests if (type == null) { type = Type.GetType(ns + objectType + ", NUnit.Tests"); } ICriteria criteria = NHibernateUtility.CreateCriteria(session, type, objectDefinition, newFilter); if (pageSize == 0 && startIndex == 0) { List <IDataObject> dataObjects = new List <IDataObject>(); long totalCount = GetCount(objectType, filter); int internalPageSize = (_settings["InternalPageSize"] != null) ? int.Parse(_settings["InternalPageSize"]) : 1000; int numOfRows = 0; while (numOfRows < totalCount) { if (filter != null && filter.OrderExpressions != null && filter.OrderExpressions.Count > 0) { criteria.SetFirstResult(numOfRows).SetMaxResults(internalPageSize); } else { NHibernate.Criterion.Order order = new NHibernate.Criterion.Order(objectDefinition.keyProperties.First().keyPropertyName, true); criteria.AddOrder(order).SetFirstResult(numOfRows).SetMaxResults(internalPageSize); } dataObjects.AddRange(criteria.List <IDataObject>()); numOfRows += internalPageSize; } return(dataObjects); } else { if (filter != null && filter.OrderExpressions != null && filter.OrderExpressions.Count > 0) { criteria.SetFirstResult(startIndex).SetMaxResults(pageSize); } else { NHibernate.Criterion.Order order = new NHibernate.Criterion.Order(objectDefinition.keyProperties.First().keyPropertyName, true); criteria.AddOrder(order).SetFirstResult(startIndex).SetMaxResults(pageSize); } IList <IDataObject> dataObjects = criteria.List <IDataObject>(); return(dataObjects); } } catch (Exception ex) { _logger.Error("Error in Get: " + ex); throw new Exception(string.Format("Error while getting a list of data objects of type [{0}]. {1}", objectType, ex)); } finally { CloseSession(session); } }
public override IList <IDataObject> Get(string objectType, DataFilter filter, int pageSize, int startIndex) { ISession session = NHibernateSessionManager.Instance.GetSession(_settings["AppDataPath"], _settings["Scope"]); try { if (_databaseDictionary.IdentityConfiguration != null) { IdentityProperties identityProperties = _databaseDictionary.IdentityConfiguration[objectType]; if (identityProperties.UseIdentityFilter) { filter = FilterByIdentity(objectType, filter, identityProperties); } } DataObject objectDefinition = _databaseDictionary.dataObjects.Find(x => x.objectName.ToUpper() == objectType.ToUpper()); if (objectDefinition == null) { throw new Exception("Object type [" + objectType + "] not found."); } string ns = String.IsNullOrEmpty(objectDefinition.objectNamespace) ? String.Empty : (objectDefinition.objectNamespace + "."); Type type = Type.GetType(ns + objectType + ", " + _settings["ExecutingAssemblyName"]); // make an exception for tests if (type == null) { type = Type.GetType(ns + objectType + ", NUnit.Tests"); } ICriteria criteria = NHibernateUtility.CreateCriteria(session, type, objectDefinition, filter); if (pageSize == 0 && startIndex == 0) { List <IDataObject> dataObjects = new List <IDataObject>(); long totalCount = GetCount(objectType, filter); int internalPageSize = (_settings["InternalPageSize"] != null) ? int.Parse(_settings["InternalPageSize"]) : 1000; int numOfRows = 0; while (numOfRows < totalCount) { criteria.SetFirstResult(numOfRows).SetMaxResults(internalPageSize); dataObjects.AddRange(criteria.List <IDataObject>()); numOfRows += internalPageSize; } return(dataObjects); } else { criteria.SetFirstResult(startIndex).SetMaxResults(pageSize); IList <IDataObject> dataObjects = criteria.List <IDataObject>(); return(dataObjects); } } catch (Exception ex) { _logger.Error("Error in Get: " + ex); throw new Exception(string.Format("Error while getting a list of data objects of type [{0}]. {1}", objectType, ex)); } finally { CloseSession(session); } }
public string GetIdentity(CaseInsensitiveBinaryList <string> hideKeys) => IdentityProperties.ToNameValueCollection().AsString(hideKeys);