Module: Rospatent

Defined in:
lib/rospatent.rb,
lib/rospatent/cache.rb,
lib/rospatent/client.rb,
lib/rospatent/errors.rb,
lib/rospatent/logger.rb,
lib/rospatent/search.rb,
lib/rospatent/railtie.rb,
lib/rospatent/version.rb,
lib/rospatent/configuration.rb,
lib/rospatent/patent_parser.rb,
lib/rospatent/input_validator.rb,
lib/generators/rospatent/install/install_generator.rb

Overview

Main module for the Rospatent API client

Defined Under Namespace

Modules: Errors, Generators, InputValidator, PatentParser Classes: Cache, Client, Configuration, Logger, NullCache, NullLogger, Railtie, Search, SearchResult

Constant Summary collapse

VERSION =
"1.5.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationRospatent::Configuration

Returns the current configuration

Returns:



23
24
25
# File 'lib/rospatent.rb', line 23

def configuration
  @configuration ||= Configuration.new
end

Class Method Details

.clear_shared_resourcesObject

Clear all shared resources



74
75
76
77
78
# File 'lib/rospatent.rb', line 74

def clear_shared_resources
  @shared_cache&.clear
  @shared_cache = nil
  @shared_logger = nil
end

.client(token = nil, logger: nil, cache: nil) ⇒ Rospatent::Client

Creates a new client instance

Parameters:

  • token (String) (defaults to: nil)

    API token (optional if already set in configuration)

  • logger (Rospatent::Logger) (defaults to: nil)

    Custom logger instance (optional)

  • cache (Rospatent::Cache) (defaults to: nil)

    Custom cache instance (optional)

  • options (Hash)

    Additional client options

Returns:



40
41
42
# File 'lib/rospatent.rb', line 40

def client(token = nil, logger: nil, cache: nil, **)
  Client.new(token: token, logger: logger, cache: cache, **)
end

.configure {|config| ... } ⇒ Object

Configure the gem

Yields:

  • (config)

    Configuration block

Yield Parameters:



30
31
32
# File 'lib/rospatent.rb', line 30

def configure
  yield(configuration)
end

.resetObject

Reset the configuration to defaults



67
68
69
70
71
# File 'lib/rospatent.rb', line 67

def reset
  @configuration = Configuration.new
  @shared_cache = nil
  @shared_logger = nil
end

.shared_cache(ttl: nil, max_size: nil) ⇒ Rospatent::Cache

Create a shared cache instance

Parameters:

  • ttl (Integer) (defaults to: nil)

    Time to live in seconds

  • max_size (Integer) (defaults to: nil)

    Maximum cache size

Returns:



48
49
50
51
52
53
# File 'lib/rospatent.rb', line 48

def shared_cache(ttl: nil, max_size: nil)
  @shared_cache ||= Cache.new(
    ttl: ttl || configuration.cache_ttl,
    max_size: max_size || configuration.cache_max_size
  )
end

.shared_logger(level: nil, formatter: nil) ⇒ Rospatent::Logger

Create a shared logger instance

Parameters:

  • level (Symbol) (defaults to: nil)

    Log level

  • formatter (Symbol) (defaults to: nil)

    Log formatter (:json or :text)

Returns:



59
60
61
62
63
64
# File 'lib/rospatent.rb', line 59

def shared_logger(level: nil, formatter: nil)
  @shared_logger ||= Logger.new(
    level: level || configuration.log_level,
    formatter: formatter || (configuration.environment == "production" ? :json : :text)
  )
end

.statisticsHash

Get global statistics (if shared cache is being used)

Returns:

  • (Hash)

    Global usage statistics



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/rospatent.rb', line 82

def statistics
  cache_stats = @shared_cache&.statistics || { size: 0, hits: 0, misses: 0 }

  {
    configuration: {
      environment: configuration.environment,
      cache_enabled: configuration.cache_enabled,
      api_url: configuration.effective_api_url
    },
    cache: cache_stats,
    shared_resources: {
      cache_initialized: !@shared_cache.nil?,
      logger_initialized: !@shared_logger.nil?
    }
  }
end

.validate_configurationArray<String>

Validate the current configuration

Returns:

  • (Array<String>)

    Array of validation errors (empty if valid)



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/rospatent.rb', line 101

def validate_configuration
  errors = []

  unless configuration.valid_environment?
    errors << "Invalid environment: #{configuration.environment}"
  end

  errors << "API token is required" if configuration.token.nil? || configuration.token.empty?

  errors << "Timeout must be positive" if configuration.timeout <= 0

  errors << "Retry count cannot be negative" if configuration.retry_count.negative?

  errors
end