예제 #1
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> Retrieve(PatentNumber number, CancellationToken cancellationToken = default)
        {
            var patent = await _opsClient.RetrievePatent(number, cancellationToken);

            patent.Family = await _opsClient.RetrieveFamily(number, cancellationToken);

            patent.Picture = await _opsClient.RetrieveFirstPicture(number, cancellationToken);

            if (number.C == "EP" && number.K.StartsWith("B"))
            {
                patent.Claims = await _epsClient.RetrieveClaims(number, cancellationToken);
            }

            return(patent);
        }
예제 #2
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> Retrieve(PatentNumber number, CancellationToken cancellationToken = default)
        {
            try
            {
                var patent = await _opsClient.RetrievePatent(number, cancellationToken);

                patent.Family = await _opsClient.RetrieveFamily(number, cancellationToken);

                patent.Picture = await _opsClient.RetrieveFirstPicture(number, cancellationToken);

                if (string.IsNullOrEmpty(patent.Abstract) && patent.Family.Any(x => x.PublicationNumber.C == "WO"))
                {
                    try
                    {
                        var pctFamilyMember = patent.Family.First(x => x.PublicationNumber.C == "WO");
                        var pctPatent       = await _opsClient.RetrievePatent(pctFamilyMember.PublicationNumber, cancellationToken);

                        patent.Abstract = string.Concat("[FROM ", pctFamilyMember.PublicationNumber, "] ", pctPatent.Abstract);
                    }
                    catch
                    {
                        // ignored
                    }
                }

                if (number.C == "EP" && number.K.StartsWith("B"))
                {
                    patent.Claims = await _epsClient.RetrieveClaims(number, cancellationToken);
                }

                return(patent);
            }
            catch (Exception exception)
            {
                WriteError(number, exception);
                throw;
            }
        }