Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
        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)));
        }
Ejemplo n.º 9
0
 public static string GetManagedIdentityPrincipalId(IdentityProperties identity)
 {
     return(identity.PrincipalId ?? identity.UserAssignedIdentities.First().Value.PrincipalId);
 }
Ejemplo n.º 10
0
        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);
            }
        }
Ejemplo n.º 11
0
        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);
            }
        }
Ejemplo n.º 12
0
 public string GetIdentity(CaseInsensitiveBinaryList <string> hideKeys) => IdentityProperties.ToNameValueCollection().AsString(hideKeys);