Beispiel #1
0
        private static IReadOnlyList <byte> ConvertHexToBinary(IReadOnlyList <byte> bytes)
        {
            var result = new List <byte>(bytes.Count / 2);

            var last   = '\0';
            var offset = 0;

            for (var i = 0; i < bytes.Count; i++)
            {
                var c = (char)bytes[i];
                if (!ReadHelper.IsHex(c))
                {
                    // TODO: do I need to assert this must be whitespace?
                    continue;
                }

                if (offset == 1)
                {
                    result.Add(HexToken.Convert(last, c));
                    offset = 0;
                }
                else
                {
                    offset++;
                }

                last = c;
            }

            return(result);
        }
Beispiel #2
0
        private bool checkObjectKeys(IRandomAccessRead source, CosObjectKey objectKey, long offset)
        {
            // there can't be any object at the very beginning of a pdf
            if (offset < MINIMUM_SEARCH_OFFSET)
            {
                return(false);
            }
            long   objectNr     = objectKey.Number;
            long   objectGen    = objectKey.Generation;
            long   originOffset = source.GetPosition();
            string objectString = ObjectHelper.createObjectString(objectNr, objectGen);

            try
            {
                source.Seek(offset);
                if (ReadHelper.IsString(source, OtherEncodings.StringAsLatin1Bytes(objectString)))
                {
                    // everything is ok, return origin object key
                    source.Seek(originOffset);
                    return(true);
                }
            }
            catch (InvalidOperationException exception)
            {
                // Swallow the exception, obviously there isn't any valid object number
            }
            finally
            {
                source.Seek(originOffset);
            }
            // no valid object number found
            return(false);
        }
Beispiel #3
0
        public KeyValuePair <string, int>[] ReadWordsWithFrequencyTest(string[] lines)
        {
            var input = new StringReader(String.Join(Environment.NewLine, lines));

            Console.SetIn(input);
            return(ReadHelper.ReadWordsWithFrequency().ToArray());
        }
Beispiel #4
0
        public long CheckXRefOffset(long startXRefOffset, bool isLenientParsing)
        {
            // repair mode isn't available in non-lenient mode
            if (!isLenientParsing)
            {
                return(startXRefOffset);
            }

            source.Seek(startXRefOffset);

            ReadHelper.SkipSpaces(source);

            if (source.Peek() == 'x' && ReadHelper.IsString(source, "xref"))
            {
                return(startXRefOffset);
            }
            if (startXRefOffset > 0)
            {
                if (CheckXRefStreamOffset(source, startXRefOffset, true, pool))
                {
                    return(startXRefOffset);
                }

                return(CalculateXRefFixedOffset(startXRefOffset));
            }
            // can't find a valid offset
            return(-1);
        }
Beispiel #5
0
        private CosBase ReadNormalObjectStream(IRandomAccessRead reader, CosBase currentBase, long offset,
                                               bool isLenientParsing,
                                               out string endObjectKey)
        {
            if (currentBase is PdfDictionary dictionary)
            {
                PdfRawStream stream = streamParser.Parse(reader, dictionary, isLenientParsing, null);

                currentBase = stream;
            }
            else
            {
                // this is not legal
                // the combination of a dict and the stream/endstream
                // forms a complete stream object
                throw new InvalidOperationException($"Stream not preceded by dictionary (offset: {offset}).");
            }

            ReadHelper.SkipSpaces(reader);
            endObjectKey = ReadHelper.ReadLine(reader);

            // we have case with a second 'endstream' before endobj
            if (!endObjectKey.StartsWith("endobj") && endObjectKey.StartsWith("endstream"))
            {
                endObjectKey = endObjectKey.Substring(9).Trim();
                if (endObjectKey.Length == 0)
                {
                    // no other characters in extra endstream line
                    // read next line
                    endObjectKey = ReadHelper.ReadLine(reader);
                }
            }

            return(currentBase);
        }
Beispiel #6
0
 private void BfSearchForXRefTables()
 {
     if (bfSearchXRefTablesOffsets == null)
     {
         // a pdf may contain more than one xref entry
         bfSearchXRefTablesOffsets = new List <long>();
         long originOffset = source.GetPosition();
         source.Seek(MinimumSearchOffset);
         // search for xref tables
         while (!source.IsEof())
         {
             if (ReadHelper.IsString(source, "xref"))
             {
                 long newOffset = source.GetPosition();
                 source.Seek(newOffset - 1);
                 // ensure that we don't read "startxref" instead of "xref"
                 if (ReadHelper.IsWhitespace(source))
                 {
                     bfSearchXRefTablesOffsets.Add(newOffset);
                 }
                 source.Seek(newOffset + 4);
             }
             source.Read();
         }
         source.Seek(originOffset);
     }
 }
Beispiel #7
0
        private static async Task MainAsync(string[] args, TestData testData)
        {
            var configHelper = new ConfigureHelper();

            var cfg = await configHelper.CreateAndConfigureClient();

            // Initialize a client using the validate configuration

            using (var client = new XConnectClient(cfg))
            {
                try
                {
                    var FilterByTime = new Tutorial4();
                    await FilterByTime.ExecuteAsync(client);

                    var createHelper = new CreateHelper();

                    Contact newKnownContact = createHelper.CreateNewContact(testData.NewContact);

                    var updateHelper = new UpdateHelper();

                    updateHelper.PopulatePersonalInformationFacet(client, newKnownContact);

                    client.AddContact(newKnownContact);

                    updateHelper.RecordInteractionFacet(client, newKnownContact);

                    // Submit contact and interaction - a total of two operations (three)
                    await client.SubmitAsync();

                    var reportingHelper = new ReportingHelpers();
                    reportingHelper.DisplayResults(client);

                    var readHelper = new ReadHelper();

                    Contact existingContact = await readHelper.RetrieveExistingContactAsync(client);

                    if (existingContact != null)
                    {
                        reportingHelper.DisplayExistingContactData(existingContact);

                        var existingContactFacetData = readHelper.RetrieveExistingContactFacetData(client, existingContact);

                        reportingHelper.DisplayExistingContactFacetData(existingContactFacetData);

                        reportingHelper.ReportInteractionsForExistingContact(existingContact, client);
                    }
                    else
                    {
                        Console.WriteLine("ExistingContact is null");
                    }

                    ReportingHelpers.EnterToProceed();
                }
                catch (XdbExecutionException ex)
                {
                    // deal with exception
                }
            }
        }
Beispiel #8
0
        static int[] EnterNumbers(IReader reader, IWriter writer)
        {
            writer.WriteLine("Enter 2 numbers: ");
            var input = ReadHelper.GetInputRow(reader);

            return(ReadHelper.SplitInput(input, 2, " ").Select(e => ReadHelper.ParseIntSave(e, "Number")).ToArray());
        }
Beispiel #9
0
        public string[] ReadUserWordsTest(string[] lines)
        {
            var input = new StringReader(String.Join(Environment.NewLine, lines));

            Console.SetIn(input);
            return(ReadHelper.ReadUserWords().ToArray());
        }
Beispiel #10
0
        private void SetStudentsCount()
        {
            _writer.WriteLine("Enter students count: ");
            var input = ReadHelper.GetInputRow(_reader);

            _students = new Student[ReadHelper.ParseIntSave(input, "Students Count")];
        }
        /// <summary>
        /// Attempts to read the <see cref="TableSubsectionDefinition"/> from the current line of the source.
        /// </summary>
        public static bool TryRead(ILog log, IRandomAccessRead source, out TableSubsectionDefinition definition)
        {
            definition = default(TableSubsectionDefinition);

            var line = ReadHelper.ReadLine(source);

            var parts = line.Split(Splitters, StringSplitOptions.RemoveEmptyEntries);

            if (parts.Length != 2)
            {
                return(false);
            }

            try
            {
                var firstObjectId = long.Parse(parts[0]);
                var objectCount   = int.Parse(parts[1]);

                definition = new TableSubsectionDefinition(firstObjectId, objectCount);

                return(true);
            }
            catch (Exception ex)
            {
                log.Error(
                    $"The format for the subsection definition was invalid, expected [long] [int], instead got '{line}'", ex);

                return(false);
            }
        }
Beispiel #12
0
        private void BruteForceSearchForTables(IInputBytes bytes)
        {
            if (bfSearchXRefTablesOffsets != null)
            {
                return;
            }

            // a pdf may contain more than one xref entry
            bfSearchXRefTablesOffsets = new List <long>();

            var startOffset = bytes.CurrentOffset;

            bytes.Seek(MinimumSearchOffset);

            // search for xref tables
            while (bytes.MoveNext() && !bytes.IsAtEnd())
            {
                if (ReadHelper.IsString(bytes, "xref"))
                {
                    var newOffset = bytes.CurrentOffset;

                    bytes.Seek(newOffset - 1);

                    // ensure that we don't read "startxref" instead of "xref"
                    if (ReadHelper.IsWhitespace(bytes.CurrentByte))
                    {
                        bfSearchXRefTablesOffsets.Add(newOffset);
                    }

                    bytes.Seek(newOffset + 4);
                }
            }

            bytes.Seek(startOffset);
        }
Beispiel #13
0
        private static OperationType EnterOperation(IReader reader, IWriter writer)
        {
            writer.WriteLine("Enter operation: ");
            var           input = ReadHelper.GetInputRow(reader);
            OperationType operation;

            switch (input)
            {
            case "+":
                operation = OperationType.Add;
                break;

            case "-":
                operation = OperationType.Subtract;
                break;

            case "*":
                operation = OperationType.Multiplay;
                break;

            default:
                throw new ArgumentException();
            }

            return(operation);
        }
Beispiel #14
0
        /// <inheritdoc />
        public bool TryTokenize(byte currentByte, IInputBytes inputBytes, out IToken token)
        {
            token = null;

            if (currentByte != '/')
            {
                return(false);
            }

            var builder = new StringBuilder();

            while (inputBytes.MoveNext())
            {
                if (ReadHelper.IsWhitespace(inputBytes.CurrentByte) ||
                    inputBytes.CurrentByte == '{' ||
                    inputBytes.CurrentByte == '<' ||
                    inputBytes.CurrentByte == '/' ||
                    inputBytes.CurrentByte == '[' ||
                    inputBytes.CurrentByte == '(')
                {
                    break;
                }

                builder.Append((char)inputBytes.CurrentByte);
            }

            token = NameToken.Create(builder.ToString());

            return(true);
        }
Beispiel #15
0
 public TagInfo()
 {
     Name     = new string(TRB._f.ReadChars(4));
     Offset   = TRB._f.ReadUInt32();
     Flag     = TRB._f.ReadUInt32();
     FullName = ReadHelper.ReadStringFromOffset(TRB.sections[0].SectionOffset + TRB._f.ReadUInt32());
 }
Beispiel #16
0
        private void ProviderLoop()
        {
            WriteHelper.PrintAvaibleCommands();
            var choosenCommand = ReadHelper.GetCommandFromUser();

            CommandManager <IGameCommand> .GetInstance(System.Reflection.Assembly.GetExecutingAssembly()).Execute(choosenCommand);
        }
Beispiel #17
0
        private void SetCourcesCount()
        {
            _writer.WriteLine("Enter course count:");
            var input = ReadHelper.GetInputRow(_reader);

            _cources = new Course[ReadHelper.ParseIntSave(input, "Course count")];
        }
Beispiel #18
0
        public int Insert_Soa_Trans(List <FileInfo> logFiles, ServiceHelper sh)
        {
            string        query            = string.Empty;
            int           total            = 0;
            List <string> soatransactionId = new List <string>();

            foreach (FileInfo file in logFiles)
            {
                string   id           = ReadHelper.GetTransactionId_StreamReader(file);
                DateTime modifiedDate = file.LastWriteTime;
                if (id != null || id != string.Empty)
                {
                    OracleParameter[] parameters = new OracleParameter[]
                    {
                        new OracleParameter("SERVICE_NAME", sh.ServiceName),
                        new OracleParameter("TRANSID", id),
                        new OracleParameter("TRANSTIME", modifiedDate)
                    };
                    query = string.Format("INSERT into SOA_TRANSACTION (ID, SERVICE, TRANSACTION_ID, TRANSACTION_TIME)" +
                                          "(SELECT SQ_SOA_TRANSACTION.NEXTVAL ID, " +
                                          ":SERVICE_NAME SERVICE, " +
                                          ":TRANSID TRANSACTION_ID, " +
                                          ":TRANSTIME TRANSACTION_TIME " +
                                          "FROM DUAL)");
                    ExecNonQuery(query, parameters);
                    PrintHelper.Trace(string.Format(Messages.TransactionId_SUCCESS, id));
                    total++;
                }
            }

            return(total);
        }
        public async Task <JsonResult> GetLogMessage()
        {
            var data = ReadHelper.Read();
            await _hubContext.Clients.All.SendAsync("ReceiveLog", data);

            return(new JsonResult(0));
        }
Beispiel #20
0
        public void IsEndOfLine_LineFeed()
        {
            const char c = '\n';

            var result = ReadHelper.IsEndOfLine(c);

            Assert.True(result);
        }
Beispiel #21
0
        private Complex ReadComplexNumber()
        {
            var input = ReadHelper.GetInputRow(_reader);
            var parts = ReadHelper.SplitInput(input, 2, _inputDelimiter);

            return(new Complex(ReadHelper.ParseIntSave(parts[0], "Complex number real part"),
                               ReadHelper.ParseIntSave(parts[1], "Complex number imaginary part")));
        }
Beispiel #22
0
            public MatLibInfo(BinaryReader sectFile)
            {
                fileOffset = sectFile.ReadUInt32();
                unk1       = sectFile.ReadUInt32();
                unk2       = sectFile.ReadUInt32();

                file = ReadHelper.ReadStringFromOffset(sectFile, fileOffset);
            }
Beispiel #23
0
        public void IsEndOfLine_CarriageReturn()
        {
            const char c = '\r';

            var result = ReadHelper.IsEndOfLine(c);

            Assert.True(result);
        }
Beispiel #24
0
        public IReadOnlyList <CosObject> Parse(PdfRawStream stream, CosObjectPool pool)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            //need to first parse the header.
            var numberOfObjects = stream.Dictionary.GetIntOrDefault(CosName.N);
            var objectNumbers   = new List <long>(numberOfObjects);

            var streamObjects = new List <CosObject>(numberOfObjects);

            var bytes = stream.Decode(filterProvider);

            var reader = new RandomAccessBuffer(bytes);

            for (int i = 0; i < numberOfObjects; i++)
            {
                long objectNumber = ObjectHelper.ReadObjectNumber(reader);
                // skip offset
                ReadHelper.ReadLong(reader);
                objectNumbers.Add(objectNumber);
            }

            CosObject obj;
            CosBase   cosObject;
            int       objectCounter = 0;

            while ((cosObject = baseParser.Parse(reader, pool)) != null)
            {
                obj = new CosObject(cosObject);
                obj.SetGenerationNumber(0);

                if (objectCounter >= objectNumbers.Count)
                {
                    log.Error("/ObjStm (object stream) has more objects than /N " + numberOfObjects);
                    break;
                }

                obj.SetObjectNumber(objectNumbers[objectCounter]);
                streamObjects.Add(obj);

                // According to the spec objects within an object stream shall not be enclosed
                // by obj/endobj tags, but there are some pdfs in the wild using those tags
                // skip endobject marker if present
                if (!reader.IsEof() && reader.Peek() == 'e')
                {
                    ReadHelper.ReadLine(reader);
                }

                objectCounter++;
            }

            return(streamObjects);
        }
Beispiel #25
0
 public TextureInfo(uint offset)
 {
     Flag           = Trb.SectFile.ReadUInt32();
     FileNameOffset = offset + Trb.SectFile.ReadUInt32();
     FileName       = ReadHelper.ReadStringFromOffset(Trb.SectFile, FileNameOffset);
     DdsSize        = Trb.SectFile.ReadUInt32();
     DdsOffset      = offset + Trb.SectFile.ReadUInt32();
     RawImage       = ReadHelper.ReadFromOffset(Trb.SectFile, DdsSize, DdsOffset);
     Dds            = new DDSImage(RawImage);
 }
Beispiel #26
0
        public bool TryTokenize(byte currentByte, IInputBytes inputBytes, out IToken token)
        {
            token = null;

            if (ReadHelper.IsWhitespace(currentByte))
            {
                return(false);
            }

            var builder = stringBuilder;

            builder.Append((char)currentByte);
            while (inputBytes.MoveNext())
            {
                if (ReadHelper.IsWhitespace(inputBytes.CurrentByte))
                {
                    break;
                }

                if (inputBytes.CurrentByte == '<' || inputBytes.CurrentByte == '[' ||
                    inputBytes.CurrentByte == '/' || inputBytes.CurrentByte == ']' ||
                    inputBytes.CurrentByte == '>' || inputBytes.CurrentByte == '(' ||
                    inputBytes.CurrentByte == ')')
                {
                    break;
                }

                builder.Append((char)inputBytes.CurrentByte);
            }

            var text = builder.ToString();

            builder.Clear();

            switch (text)
            {
            case "true":
                token = BooleanToken.True;
                break;

            case "false":
                token = BooleanToken.False;
                break;

            case "null":
                token = NullToken.Instance;
                break;

            default:
                token = OperatorToken.Create(text);
                break;
            }

            return(true);
        }
        public static List <BaseMenu> GetMenuList()
        {
            string json = ReadHelper.Read(Application.StartupPath + "\\menu.json");

            if (string.IsNullOrEmpty(json))
            {
                throw new ArgumentNullException("菜单json字符串为空!");
            }

            return(JsonHelper.Json2List <BaseMenu>(json));
        }
Beispiel #28
0
 public Tag()
 {
     Name = new string(TRB._f.ReadChars(4));
     Zero = TRB._f.ReadUInt32();
     RelocationDataCount = TRB._f.ReadUInt16();
     Size     = TRB._f.ReadUInt16();
     Zero2    = TRB._f.ReadUInt32();
     FullName = ReadHelper.ReadStringFromOffset(TRB._f.ReadUInt32() + TRB.sections[0].SectionOffset);
     Hash     = TRB._f.ReadUInt32();
     Zero3    = TRB._f.ReadUInt32();
     Zero4    = TRB._f.ReadUInt32();
 }
Beispiel #29
0
        private Command ReadCommand()
        {
            var input   = ReadHelper.GetInputRow(_reader);
            var command = _commands.FirstOrDefault(c => c.Name.Equals(input, StringComparison.CurrentCultureIgnoreCase));

            if (command == null)
            {
                throw new ArgumentException("Input must be valid command!");
            }

            return(command);
        }
Beispiel #30
0
        private void BruteForceSearchForEndOfFileMarker(IInputBytes source)
        {
            if (lastEndOfFileMarker != null)
            {
                return;
            }

            long startOffset = source.CurrentOffset;

            source.Seek(MINIMUM_SEARCH_OFFSET);

            while (!source.IsAtEnd())
            {
                // search for EOF marker
                if (ReadHelper.IsString(source, "%%EOF"))
                {
                    long tempMarker = source.CurrentOffset;

                    if (tempMarker >= source.Length)
                    {
                        lastEndOfFileMarker = tempMarker;
                        break;
                    }

                    try
                    {
                        source.Seek(tempMarker + 5);
                        // check if the following data is some valid pdf content
                        // which most likely indicates that the pdf is linearized,
                        // updated or just cut off somewhere in the middle
                        ReadHelper.SkipSpaces(source);
                        ObjectHelper.ReadObjectNumber(source);
                        ObjectHelper.ReadGenerationNumber(source);
                    }
                    catch (Exception)
                    {
                        // save the EOF marker as the following data is most likely some garbage
                        lastEndOfFileMarker = tempMarker;
                    }
                }

                source.MoveNext();
            }

            source.Seek(startOffset);

            // no EOF marker found
            if (lastEndOfFileMarker == null)
            {
                lastEndOfFileMarker = long.MaxValue;
            }
        }