Exemplo n.º 1
0
        /// <summary>
        ///     Retrieves all the family members of the document.
        /// </summary>
        /// <param name="number">The publication number.</param>
        /// <param name="cancellationToken">The cancellation notification.</param>
        /// <returns>The family members of the document.</returns>
        public async Task <PatentFamilyMember[]> RetrieveFamily(PatentNumber number, CancellationToken cancellationToken)
        {
            var content = number.Format('.');
            var result  = await _requestManager.Execute("family/publication/docdb", OPSConstants.Format.Exchange, OPSConverter.ToWPD, content, cancellationToken);

            if (!result.Success || result.Content.PatentFamily == null)
            {
                throw new InvalidOperationException($"cannot retrieve family members for {number}: ${result.Error.Code}");
            }

            var patentFamilyMemberAssembler = new PatentFamilyMemberAssembler();

            return(patentFamilyMemberAssembler.Convert(result.Content.PatentFamily.FamilyMembers));
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Write the error to a text file.
        /// </summary>
        /// <param name="number">The publication number.</param>
        /// <param name="exception">The exception.</param>
        private void WriteError(PatentNumber number, Exception exception)
        {
            try
            {
                var content  = new StringBuilder();
                var filename = Path.Combine(_temporaryDirectory, $"{number.Format()}.txt");

                content.AppendFormat("[{0}] {1}{2}", DateTime.Now, exception.Message, Environment.NewLine);
                content.Append(exception.StackTrace).Append(Environment.NewLine).Append(Environment.NewLine);

                File.AppendAllText(filename, content.ToString());
            }
            catch
            {
                // ignored
            }
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Retrieves the patent document corresponding to the publication number.
        /// </summary>
        /// <param name="number">The publication number.</param>
        /// <param name="cancellationToken">The cancellation notification.</param>
        /// <returns>The patent document corresponding to the publication number.</returns>
        public async Task <Patent> RetrievePatent(PatentNumber number, CancellationToken cancellationToken = default)
        {
            if (number == null)
            {
                throw new ArgumentNullException(nameof(number));
            }

            var patentAssembler = new PatentAssembler();

            var content = number.Format('.');
            var result  = await _requestManager.Execute("published-data/publication/docdb/biblio", OPSConstants.Format.Exchange, OPSConverter.ToWPD, content, cancellationToken);

            if (!result.Success && result.Content.ExchangeDocuments.Length != 0)
            {
                throw new InvalidOperationException($"cannot retrieve root document for {number}: ${result.Error.Code}");
            }

            return(patentAssembler.Convert(result.Content.ExchangeDocuments[0]));
        }
Exemplo n.º 4
0
 /// <summary>
 ///     Formats the input value.
 /// </summary>
 /// <param name="input">The input value.</param>
 /// <returns>The output string.</returns>
 private string Format(PatentNumber input)
 {
     return(input != null?input.Format(' ') : _empty);
 }
        /// <summary>
        ///     Gets the temporary target path.
        /// </summary>
        /// <param name="number">The publication number.</param>
        /// <returns>The temporary target path.</returns>
        private string GetTemporaryTarget(PatentNumber number)
        {
            var filename = string.Concat(number.Format(), _pictureFormat).ToLower();

            return(Path.Combine(ToolsContext.Current.TemporaryDirectory, filename));
        }