/// <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); }
/// <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; } }