コード例 #1
0
        private void GetUserRoleAndStatusList(out List <IdValue> rolesList, out List <IdValue> statusList)
        {
            var roles = GetUserRoles();

            rolesList = new List <IdValue>();
            rolesList.Add(new IdValue()
            {
                Id = 0, Value = "Select"
            });
            foreach (var role in roles)
            {
                IdValue idValues = new IdValue();
                idValues.Id    = role.Id;
                idValues.Value = role.Role;
                rolesList.Add(idValues);
            }

            statusList = new List <IdValue>();
            statusList.Add(new IdValue()
            {
                Id = 0, Value = "Select"
            });
            statusList.Add(new IdValue()
            {
                Id = 0, Value = "Active"
            });
            statusList.Add(new IdValue()
            {
                Id = 0, Value = "Inactive"
            });
        }
コード例 #2
0
        public Task <IReadOnlyList <Schema> > GetSchemasByIdAsync(
            [GraphQLType(typeof(NonNullType <ListType <NonNullType <IdType> > >))] string[] ids,
            [Service] IIdSerializer idSerializer,
            [DataLoader] SchemaByIdDataLoader dataLoader,
            CancellationToken cancellationToken)
        {
            if (ids.Length == 0)
            {
                throw new GraphQLException("No ids where provided.");
            }

            var deserializedIds = new Guid[ids.Length];

            for (int i = 0; i < ids.Length; i++)
            {
                IdValue deserializedId = idSerializer.Deserialize(ids[i]);

                if (!deserializedId.TypeName.Equals(nameof(Schema), StringComparison.Ordinal))
                {
                    throw new GraphQLException("The specified id type is invalid.");
                }

                deserializedIds[i] = (Guid)deserializedId.Value;
            }

            return(dataLoader.LoadAsync(deserializedIds, cancellationToken));
        }
コード例 #3
0
        public Customer GetCustomer(string id)
        {
            IdValue value = _idSerializer.Deserialize(id);

            return(_repository.Customers
                   .FirstOrDefault(t => t.Id.Equals(value.Value)));
        }
コード例 #4
0
ファイル: Query.cs プロジェクト: yuriypts/hotchocolate
        public IEnumerable <IContract> GetContracts(string customerId)
        {
            IdValue value = _idSerializer.Deserialize(customerId);

            return(_contractStorage.Contracts
                   .Where(t => t.CustomerId.Equals(value.Value)));
        }
コード例 #5
0
        public Consultant GetConsultant(string id)
        {
            IdValue value = _idSerializer.Deserialize(id);

            return(_repository.Consultants
                   .FirstOrDefault(t => t.Id.Equals(value.Value)));
        }
コード例 #6
0
        public async Task <CreateClientPayload> CreateClientAsync(
            CreateClientInput input,
            [Service] IClientRepository repository,
            [Service] IIdSerializer idSerializer,
            [DataLoader] SchemaByIdDataLoader dataLoader,
            CancellationToken cancellationToken)
        {
            IdValue deserializedId = idSerializer.Deserialize(input.SchemaId);

            if (!deserializedId.TypeName.Equals(nameof(Schema), StringComparison.Ordinal))
            {
                throw new GraphQLException("The specified id type is invalid.");
            }

            Schema schema = await dataLoader.LoadAsync(
                (Guid)deserializedId.Value, cancellationToken)
                            .ConfigureAwait(false);

            var client = new Client(schema.Id, input.Name, input.Description);

            await repository.AddClientAsync(
                client, cancellationToken)
            .ConfigureAwait(false);

            return(new CreateClientPayload(schema, client, input.ClientMutationId));
        }
コード例 #7
0
        public ICustomerOrConsultant GetCustomerOrConsultant(string id)
        {
            IdValue value = _idSerializer.Deserialize(id);

            if (value.TypeName == "Consultant")
            {
                return(GetConsultant(id));
            }
            return(GetCustomer(id));
        }
コード例 #8
0
ファイル: ProductBL.cs プロジェクト: harishkumarhn/Marble
        public void GetSessionData(List <IdValue> typeList, List <IdValue> categoryList, List <TaxSet> TaxList, List <IdValue> DisplayGroupList)
        {
            var typeListDataTable = productData.GetActiveProductTypes();

            foreach (DataRow dr in typeListDataTable.Rows)
            {
                IdValue idValues = new IdValue();
                idValues.Id    = dr.IsNull("Id") ? 0 : int.Parse(dr["Id"].ToString());
                idValues.Value = dr.IsNull("Type") ? "" : dr["Type"].ToString();
                typeList.Add(idValues);
            }

            var catrgoryListDataTable = productData.GetProductCategoryLookUp();

            categoryList.Add(new IdValue()
            {
                Id = null, Value = "Select"
            });
            foreach (DataRow dr in catrgoryListDataTable.Rows)
            {
                IdValue idValues = new IdValue();
                idValues.Id    = dr.IsNull("Id") ? 0 : int.Parse(dr["Id"].ToString());
                idValues.Value = dr.IsNull("Name") ? "" : dr["Name"].ToString();
                categoryList.Add(idValues);
            }
            var TaxListDataTable = productData.GetProductTaxLookUp();

            TaxList.Add(new TaxSet()
            {
                Id = null, Value = "Select"
            });
            foreach (DataRow dr in TaxListDataTable.Rows)
            {
                TaxSet idValues = new TaxSet();
                idValues.Id         = dr.IsNull("Id") ? 0 : int.Parse(dr["Id"].ToString());
                idValues.TaxId      = dr.IsNull("Id") ? 0 : int.Parse(dr["Id"].ToString());
                idValues.Value      = dr.IsNull("Name") ? "" : dr["Name"].ToString();
                idValues.TaxPercent = dr.IsNull("TaxPercent") ? 0 : decimal.Parse(dr["TaxPercent"].ToString());
                TaxList.Add(idValues);
            }

            var DisplayGroupDataTable = commonData.GetListItems((int)ListItemGroup.DisplayGroup);

            DisplayGroupList.Add(new IdValue()
            {
                Id = null, Value = "Select"
            });
            foreach (DataRow dr in DisplayGroupDataTable.Rows)
            {
                IdValue idValues = new IdValue();
                idValues.Id    = dr.IsNull("DisplayGroupId") ? 0 : int.Parse(dr["DisplayGroupId"].ToString());
                idValues.Value = dr.IsNull("DisplayGroup") ? "" : dr["DisplayGroup"].ToString();
                DisplayGroupList.Add(idValues);
            }
        }
コード例 #9
0
ファイル: Dao.cs プロジェクト: ThreeHeadz/Bam.Net
        public override int GetHashCode()
        {
            long id = IdValue.GetValueOrDefault();

            if (id > 0)
            {
                return(id.GetHashCode());
            }
            else
            {
                return(base.GetHashCode());
            }
        }
コード例 #10
0
 public async Task Handle(AddLocal command)
 {
     IdValue.ValidateOrThrow(command.Id);
     LocalName.ValidateOrThrow(command.Name);
     try
     {
         await AppendEvent(command.Id, new LocalAdded(command.Id, command.Name), expectedVersion : 1, command.CommandId);
     }
     catch (EventStreamUnexpectedMaxEventIdException)
     {
         throw new DomainException($"Local with id {command.Id} already exists", ErrorCode.LocalAlreadyExists);
     }
 }
コード例 #11
0
        private void cmbBuilding_SelectedIndexChanged(object sender, EventArgs e)
        {
            IdValue selectedBuilding = cmbBuilding.SelectedItem as IdValue;

            if (cmbBuilding.SelectedItem != null)
            {
                if (!Controller.VerifyBuildingDetailsEntered(selectedBuilding.Id))
                {
                    cmbBuilding.SelectedIndex = -1;
                    dgMaintenance.DataSource  = null;
                    return;
                }
            }
        }
コード例 #12
0
        public Task <SchemaVersion> GetSchemaVersionByIdAsync(
            [GraphQLType(typeof(NonNullType <IdType>))] string id,
            [Service] IIdSerializer idSerializer,
            [DataLoader] SchemaVersionByIdDataLoader dataLoader,
            CancellationToken cancellationToken)
        {
            IdValue deserializedId = idSerializer.Deserialize(id);

            if (!deserializedId.TypeName.Equals(nameof(SchemaVersion), StringComparison.Ordinal))
            {
                throw new GraphQLException("The specified id type is invalid.");
            }

            return(dataLoader.LoadAsync((Guid)deserializedId.Value, cancellationToken));
        }
コード例 #13
0
 protected internal override void Denormalise()
 {
     base.Denormalise();
     // If the user leaves the code (IdValue) blank then
     // the UI does not retrieve the selected values on pages.
     // Fill blank codes with one constructed from the description.
     // noting that this is not guarenteed to be unique
     if (string.IsNullOrEmpty(this.IdValue))
     {
         this.IdValue = System.Text.RegularExpressions.Regex.Replace(this.Text, "\\s+", "").ToUpper();
         if (IdValue.Length > 11)
         {
             IdValue = IdValue.Substring(0, 11);
         }
     }
 }
コード例 #14
0
        public List <Settings> GetSettings()
        {
            try
            {
                var typeListDataTable = siteSetupData.GetDatatypes();
                var typeList          = new List <IdValue>();
                typeList.Add(new IdValue()
                {
                    Id = 0, Value = "Select"
                });
                foreach (DataRow dr in typeListDataTable.Rows)
                {
                    IdValue idValues = new IdValue();
                    idValues.Id    = dr.IsNull("Id") ? 0 : int.Parse(dr["Id"].ToString());
                    idValues.Value = dr.IsNull("Type") ? "" : dr["Type"].ToString();
                    typeList.Add(idValues);
                }

                var             dataTable    = siteSetupData.GetSettings();
                List <Settings> listSettings = new List <Settings>();
                foreach (DataRow dr in dataTable.Rows)
                {
                    Settings setting = new Settings();
                    setting.Active          = dr.IsNull("Active") ? false : bool.Parse(dr["Active"].ToString());
                    setting.DefaultValue    = dr.IsNull("DefaultValue") ? "" : dr["DefaultValue"].ToString();
                    setting.Description     = dr.IsNull("Description") ? "" : dr["Description"].ToString();
                    setting.Id              = dr.IsNull("Id") ? 0 : int.Parse(dr["Id"].ToString());
                    setting.Caption         = dr.IsNull("Caption") ? "" : dr["Caption"].ToString();
                    setting.LastUpdatedBy   = dr.IsNull("LastUpdatedBy") ? "" : dr["LastUpdatedBy"].ToString();
                    setting.LastUpdatedDate = dr.IsNull("LastUpdatedDate") ? new DateTime() : Convert.ToDateTime(dr["LastUpdatedDate"]);
                    setting.Name            = dr.IsNull("Name") ? "" : dr["Name"].ToString();
                    setting.PosLevel        = dr.IsNull("PosLevel") ? false : bool.Parse(dr["PosLevel"].ToString());
                    setting.ScreenGroup     = dr.IsNull("ScreenGroup") ? "" : dr["ScreenGroup"].ToString();
                    setting.Type            = dr.IsNull("Type") ? "" : dr["Type"].ToString();
                    setting.UserLevel       = dr.IsNull("UserLevel") ? false : bool.Parse(dr["UserLevel"].ToString());
                    setting.BasicDataTypes  = typeList;
                    listSettings.Add(setting);
                }

                return(listSettings);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
コード例 #15
0
ファイル: Query.cs プロジェクト: yuriypts/hotchocolate
        public IContract GetContract(string contractId)
        {
            IdValue value = _idSerializer.Deserialize(contractId);

            if (value.TypeName == nameof(LifeInsuranceContract))
            {
                return(_contractStorage.Contracts
                       .OfType <LifeInsuranceContract>()
                       .FirstOrDefault(t => t.Id.Equals(value.Value)));
            }
            else
            {
                return(_contractStorage.Contracts
                       .OfType <SomeOtherContract>()
                       .FirstOrDefault(t => t.Id.Equals(value.Value)));
            }
        }
コード例 #16
0
        public List <IdValue> gettechcardtype()
        {
            var techcard = cardData.GetTechCardType();
            var typeList = new List <IdValue>();

            typeList.Add(new IdValue()
            {
                Id = 0, Value = "Select"
            });
            foreach (DataRow dr in techcard.Rows)
            {
                IdValue idValues = new IdValue();
                idValues.Id    = dr.IsNull("Id") ? 0 : int.Parse(dr["Id"].ToString());
                idValues.Value = dr.IsNull("Name") ? "" : dr["Name"].ToString();
                typeList.Add(idValues);
            }
            return(typeList);
        }
        public void AddIdSerializer_Exclude_Schema()
        {
            // arrange
            IIdSerializer serializer =
                new ServiceCollection()
                .TryAddIdSerializer()
                .AddIdSerializer(false)
                .BuildServiceProvider()
                .GetRequiredService <IIdSerializer>();

            // act
            var serializedId = serializer.Serialize("abc", "def", "ghi");

            // assert
            IdValue id = serializer.Deserialize(serializedId);

            Assert.False(id.SchemaName.HasValue);
            Assert.Equal("def", id.TypeName);
            Assert.Equal("ghi", id.Value);
        }
        public void RequestBuilder_AddIdSerializer_Include_Schema()
        {
            // arrange
            IIdSerializer serializer =
                new ServiceCollection()
                .AddGraphQL()
                .AddIdSerializer(true)
                .Services
                .BuildServiceProvider()
                .GetRequiredService <IIdSerializer>();

            // act
            var serializedId = serializer.Serialize("abc", "def", "ghi");

            // assert
            IdValue id = serializer.Deserialize(serializedId);

            Assert.Equal("abc", id.SchemaName);
            Assert.Equal("def", id.TypeName);
            Assert.Equal("ghi", id.Value);
        }
コード例 #19
0
    private static async ValueTask <object?> ResolveSingleNode(
        IResolverContext context,
        IIdSerializer serializer,
        NameString argumentName)
    {
        StringValueNode nodeId         = context.ArgumentLiteral <StringValueNode>(argumentName);
        IdValue         deserializedId = serializer.Deserialize(nodeId.Value);
        NameString      typeName       = deserializedId.TypeName;

        context.SetLocalValue(NodeId, nodeId.Value);
        context.SetLocalValue(InternalId, deserializedId.Value);
        context.SetLocalValue(InternalType, typeName);
        context.SetLocalValue(WellKnownContextData.IdValue, deserializedId);

        if (context.Schema.TryGetType <ObjectType>(typeName, out ObjectType? type) &&
            type.ContextData.TryGetValue(NodeResolver, out var o) &&
            o is FieldResolverDelegate resolver)
        {
            return(await resolver.Invoke(context).ConfigureAwait(false));
        }

        return(null);
    }
コード例 #20
0
        public async Task <UpdateSchemaPayload> UpdateSchema(
            UpdateSchemaInput input,
            [Service] IIdSerializer idSerializer,
            [Service] ISchemaRepository repository,
            CancellationToken cancellationToken)
        {
            IdValue deserializedId = idSerializer.Deserialize(input.Id);

            if (!deserializedId.TypeName.Equals(nameof(Schema), StringComparison.Ordinal))
            {
                throw new GraphQLException(Resources.General_IdTypeInvalid);
            }

            var schema = new Schema(
                (Guid)deserializedId.Value,
                input.Name,
                input.Description);

            await repository.UpdateSchemaAsync(schema, cancellationToken)
            .ConfigureAwait(false);

            return(new UpdateSchemaPayload(schema, input.ClientMutationId));
        }
コード例 #21
0
        public async Task <UpdateEnvironmentPayload?> UpdateEnvironmentAsync(
            UpdateEnvironmentInput input,
            [Service] IIdSerializer idSerializer,
            [Service] IEnvironmentRepository repository,
            CancellationToken cancellationToken)
        {
            IdValue deserializedId = idSerializer.Deserialize(input.Id);

            if (!deserializedId.TypeName.Equals(nameof(Environment), StringComparison.Ordinal))
            {
                throw new GraphQLException("The specified id type is invalid.");
            }

            var environment = new Environment(
                (Guid)deserializedId.Value,
                input.Name,
                input.Description);

            await repository.UpdateEnvironmentAsync(environment, cancellationToken)
            .ConfigureAwait(false);

            return(new UpdateEnvironmentPayload(environment, input.ClientMutationId));
        }
コード例 #22
0
        protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
        {
            IdValue      = GetIdForOperation(settings.Inferrer);
            RoutingValue = GetRoutingForOperation(settings.Inferrer);

            writer.WriteStartObject();

            if (IdValue is not null)
            {
                // TODO - This flow is a bit inefficient and annoying just to get "clean" JSON
                var id = IdValue.GetString(settings);

                if (!string.IsNullOrEmpty(id))
                {
                    writer.WritePropertyName("_id");
                    writer.WriteStringValue(id);
                }
            }

            if (IfPrimaryTermValue.HasValue)
            {
                writer.WritePropertyName("if_primary_term");
                JsonSerializer.Serialize(writer, IfPrimaryTermValue.Value, options);
            }

            if (IfSequenceNoValue.HasValue)
            {
                writer.WritePropertyName("if_seq_no");
                JsonSerializer.Serialize(writer, IfSequenceNoValue.Value, options);
            }

            if (IndexNameValue is not null)
            {
                writer.WritePropertyName("_index");
                JsonSerializer.Serialize(writer, IndexNameValue, options);
            }

            if (RoutingValue is not null)
            {
                // TODO - This flow is a bit inefficient and annoying just to get "clean" JSON
                var value = RoutingValue.GetString(settings);

                if (!string.IsNullOrEmpty(value))
                {
                    writer.WritePropertyName("routing");
                    writer.WriteStringValue(value);
                }
            }

            if (_requireAlias.HasValue)
            {
                writer.WritePropertyName("require_alias");
                JsonSerializer.Serialize(writer, _requireAlias.Value, options);
            }

            if (_version.HasValue)
            {
                writer.WritePropertyName("version");
                JsonSerializer.Serialize(writer, _version.Value, options);
            }

            if (_versionType.HasValue)
            {
                writer.WritePropertyName("version_type");
                JsonSerializer.Serialize(writer, _versionType.Value, options);
            }

            SerializeInternal(writer, options, settings);

            writer.WriteEndObject();
        }
コード例 #23
0
 public async Task Handle(RenameLocal command)
 {
     IdValue.ValidateOrThrow(command.Id);
     LocalName.ValidateOrThrow(command.NewName);
     await AppendEvent(command.Id, new LocalRenamed(command.Id, command.NewName), commandId : command.CommandId);
 }
コード例 #24
0
 public async Task Handle(RemoveLocal command)
 {
     IdValue.ValidateOrThrow(command.Id);
     await AppendEvent(command.Id, new LocalRemoved(command.Id), commandId : command.CommandId);
 }
コード例 #25
0
 public async Task Handle(RemoveLocalAlias command)
 {
     IdValue.ValidateOrThrow(command.LocalId);
     LocalName.ValidateOrThrow(command.Alias);
     await AppendEvent(command.LocalId, new LocalAliasRemoved(command.LocalId, command.Alias), commandId : command.CommandId);
 }
コード例 #26
0
        public List <User> GetUsers()
        {
            var roles     = GetUserRoles();
            var rolesList = new List <IdValue>();

            rolesList.Add(new IdValue()
            {
                Id = 0, Value = "Select"
            });
            foreach (var role in roles)
            {
                IdValue idValues = new IdValue();
                idValues.Id    = role.Id;
                idValues.Value = role.Role;
                rolesList.Add(idValues);
            }

            var statusList = new List <IdValue>();

            statusList.Add(new IdValue()
            {
                Id = 0, Value = "Select"
            });
            statusList.Add(new IdValue()
            {
                Id = 0, Value = "Active"
            });
            statusList.Add(new IdValue()
            {
                Id = 0, Value = "Inactive"
            });

            var         dataTable = siteSetupData.GetUsers();
            List <User> users     = new List <User>();

            foreach (DataRow dr in dataTable.Rows)
            {
                User user = new User();
                user.Id      = dr.IsNull("Id") ? 0 : int.Parse(dr["Id"].ToString());
                user.RoleId  = dr.IsNull("RoleId") ? 0 : int.Parse(dr["RoleId"].ToString());
                user.Name    = dr.IsNull("Name") ? "" : dr["Name"].ToString();
                user.LoginId = dr.IsNull("LoginId") ? "" : dr["LoginId"].ToString();
                var bytes_s = (byte[])dr["Password"];
                user.Password        = Encoding.ASCII.GetString(bytes_s, 0, bytes_s.Length);
                user.Manager         = dr.IsNull("Manager") ? "" : dr["Manager"].ToString();
                user.Department      = dr.IsNull("Department") ? "" : dr["Department"].ToString();
                user.Email           = dr.IsNull("Email") ? "" : dr["Email"].ToString();
                user.CompanyAdmin    = dr.IsNull("CompanyAdmin") ? false : bool.Parse(dr["CompanyAdmin"].ToString());
                user.CreatedBy       = dr.IsNull("CreatedBy") ? "" : dr["CreatedBy"].ToString();
                user.LastLoginTime   = dr.IsNull("LastLoginTime") ? new DateTime() : Convert.ToDateTime(dr["LastLoginTime"].ToString());
                user.LastLogoutTime  = dr.IsNull("LastLogoutTime") ? new DateTime() : Convert.ToDateTime(dr["LastLogoutTime"].ToString());
                user.EmpStartDate    = dr.IsNull("EmpStartDate") ? new DateTime() : Convert.ToDateTime(dr["EmpStartDate"].ToString());
                user.EmpEndDate      = dr.IsNull("EmpEndDate") ? new DateTime() : Convert.ToDateTime(dr["EmpEndDate"].ToString());
                user.EmpEndReason    = dr.IsNull("EmpEndReason") ? "" : dr["EmpEndReason"].ToString();
                user.Status          = dr.IsNull("Status") ? "" : dr["Status"].ToString();
                user.POSCounter      = dr.IsNull("POSCounter") ? "" : dr["POSCounter"].ToString();
                user.LastUpdatedBy   = dr.IsNull("LastUpdatedBy") ? "" : dr["LastUpdatedBy"].ToString();
                user.LastUpdatedDate = dr.IsNull("LastUpdatedDate") ? new DateTime() : Convert.ToDateTime(dr["LastUpdatedDate"]);
                user.InvalidAttempts = dr.IsNull("InvalidAttempts") ? 0 : int.Parse(dr["InvalidAttempts"].ToString());


                user.Roles    = rolesList;
                user.Statuses = statusList;
                users.Add(user);
            }
            if (users.Count == 0)
            {
                users.Add(new User()
                {
                    Roles = rolesList, Statuses = statusList
                });
            }
            return(users);
        }
コード例 #27
0
    private static async ValueTask <object?> ResolveManyNode(
        IResolverContext context,
        IIdSerializer serializer)
    {
        if (context.ArgumentKind(Ids) == ValueKind.List)
        {
            ListValueNode    list  = context.ArgumentLiteral <ListValueNode>(Ids);
            Task <object?>[] tasks = ArrayPool <Task <object?> > .Shared.Rent(list.Items.Count);

            var result = new object?[list.Items.Count];

            try
            {
                for (var i = 0; i < list.Items.Count; i++)
                {
                    context.RequestAborted.ThrowIfCancellationRequested();

                    // it is guaranteed that this is always a string literal.
                    StringValueNode nodeId         = (StringValueNode)list.Items[i];
                    IdValue         deserializedId = serializer.Deserialize(nodeId.Value);
                    NameString      typeName       = deserializedId.TypeName;

                    context.SetLocalValue(NodeId, nodeId.Value);
                    context.SetLocalValue(InternalId, deserializedId.Value);
                    context.SetLocalValue(InternalType, typeName);
                    context.SetLocalValue(WellKnownContextData.IdValue, deserializedId);

                    tasks[i] =
                        context.Schema.TryGetType <ObjectType>(typeName, out ObjectType? type) &&
                        type.ContextData.TryGetValue(NodeResolver, out var o) &&
                        o is FieldResolverDelegate resolver
                            ? resolver.Invoke(context).AsTask()
                            : _nullTask;
                }

                for (var i = 0; i < list.Items.Count; i++)
                {
                    context.RequestAborted.ThrowIfCancellationRequested();

                    Task <object?> task = tasks[i];
                    if (task.IsCompleted)
                    {
                        if (task.Exception is null)
                        {
                            result[i] = task.Result;
                        }
                        else
                        {
                            result[i] = null;
                            ReportError(context, i, task.Exception);
                        }
                    }
                    else
                    {
                        try
                        {
                            result[i] = await task;
                        }
                        catch (Exception ex)
                        {
                            result[i] = null;
                            ReportError(context, i, ex);
                        }
                    }
                }

                return(result);
            }
            finally
            {
                ArrayPool <Task <object?> > .Shared.Return(tasks);
            }
        }
        else
        {
            var result = new object?[1];
            result[0] = await ResolveSingleNode(context, serializer, Ids);

            return(result);
        }
    }
コード例 #28
0
ファイル: ExtMeta.cs プロジェクト: whoshoe/Readarr
        public ExtMeta(byte[] ext, Encoding encoding)
        {
            var  num_items = Util.GetUInt32(ext, 8);
            uint pos       = 12;

            for (var i = 0; i < num_items; i++)
            {
                var id   = Util.GetUInt32(ext, pos);
                var size = Util.GetUInt32(ext, pos + 4);
                if (IdMapping.Id_map_strings.ContainsKey(id))
                {
                    var a = encoding.GetString(Util.SubArray(ext, pos + 8, size - 8));

                    if (IdString.ContainsKey(id))
                    {
                        IdString[id].Add(a);
                    }
                    else
                    {
                        IdString.Add(id, new List <string> {
                            a
                        });
                    }
                }
                else if (IdMapping.Id_map_values.ContainsKey(id))
                {
                    ulong a = 0;
                    switch (size)
                    {
                    case 9:
                        a = Util.GetUInt8(ext, pos + 8);
                        break;

                    case 10:
                        a = Util.GetUInt16(ext, pos + 8);
                        break;

                    case 12:
                        a = Util.GetUInt32(ext, pos + 8);
                        break;

                    case 16:
                        a = Util.GetUInt64(ext, pos + 8);
                        break;

                    default:
                        Logger.Warn("unexpected size:" + size);
                        break;
                    }

                    if (IdValue.ContainsKey(id))
                    {
                        Logger.Debug("Meta id duplicate:{0}\nPervious:{1}  \nLatter:{2}", IdMapping.Id_map_values[id], IdValue[id], a);
                    }
                    else
                    {
                        IdValue.Add(id, a);
                    }
                }
                else if (IdMapping.Id_map_hex.ContainsKey(id))
                {
                    var a = Util.ToHexString(ext, pos + 8, size - 8);

                    if (IdHex.ContainsKey(id))
                    {
                        Logger.Debug("Meta id duplicate:{0}\nPervious:{1}  \nLatter:{2}", IdMapping.Id_map_hex[id], IdHex[id], a);
                    }
                    else
                    {
                        IdHex.Add(id, a);
                    }
                }
                else
                {
                    // Unknown id
                }

                pos += size;
            }
        }