Class: Legion::Extensions::Absorbers::Base
- Inherits:
-
Object
- Object
- Legion::Extensions::Absorbers::Base
- Extended by:
- Definitions
- Includes:
- Helpers::Lex
- Defined in:
- lib/legion/extensions/absorbers/base.rb
Direct Known Subclasses
Defined Under Namespace
Classes: TokenRevocationError, TokenUnavailableError
Constant Summary
Constants included from Definitions
Constants included from Helpers::Base
Helpers::Base::NAMESPACE_BOUNDARIES
Instance Attribute Summary collapse
-
#job_id ⇒ Object
Returns the value of attribute job_id.
-
#runners ⇒ Object
Returns the value of attribute runners.
Class Method Summary collapse
Instance Method Summary collapse
- #absorb(url: nil, content: nil, metadata: {}, context: {}) ⇒ Object (also: #handle)
- #absorb_raw(content:, tags: [], scope: :global) ⇒ Object
- #absorb_to_knowledge(content:, tags: [], scope: :global, **opts) ⇒ Object
- #report_progress(message:, percent: nil) ⇒ Object
- #translate(source, type: :auto) ⇒ Object
- #with_token(provider:) ⇒ Object
Methods included from Definitions
definition, definition_for, definitions
Methods included from Helpers::Lex
#default_settings, included, #runner_desc
Methods included from Helpers::Base
#actor_class, #actor_const, #actor_name, #amqp_prefix, #calling_class, #calling_class_array, #from_json, #full_path, #lex_class, #lex_const, #lex_name, #lex_slug, #log_tag, #normalize, #runner_class, #runner_const, #runner_name, #segments, #settings_path, #table_prefix, #to_dotted_hash
Methods included from Helpers::Task
#generate_task_id, #generate_task_log, #task_update
Methods included from Helpers::Logger
Methods included from Helpers::Secret
reset_identity!, resolve_identity!, #secret
Methods included from Helpers::Core
Instance Attribute Details
#job_id ⇒ Object
Returns the value of attribute job_id.
19 20 21 |
# File 'lib/legion/extensions/absorbers/base.rb', line 19 def job_id @job_id end |
#runners ⇒ Object
Returns the value of attribute runners.
19 20 21 |
# File 'lib/legion/extensions/absorbers/base.rb', line 19 def runners @runners end |
Class Method Details
.description(text = nil) ⇒ Object
31 32 33 |
# File 'lib/legion/extensions/absorbers/base.rb', line 31 def description(text = nil) text ? @description = text : @description end |
.pattern(type, value, priority: 100) ⇒ Object
22 23 24 25 |
# File 'lib/legion/extensions/absorbers/base.rb', line 22 def pattern(type, value, priority: 100) @patterns ||= [] @patterns << { type: type, value: value, priority: priority } end |
.patterns ⇒ Object
27 28 29 |
# File 'lib/legion/extensions/absorbers/base.rb', line 27 def patterns @patterns || [] end |
Instance Method Details
#absorb(url: nil, content: nil, metadata: {}, context: {}) ⇒ Object Also known as: handle
36 37 38 |
# File 'lib/legion/extensions/absorbers/base.rb', line 36 def absorb(url: nil, content: nil, metadata: {}, context: {}) raise NotImplementedError, "#{self.class.name} must implement #absorb" end |
#absorb_raw(content:, tags: [], scope: :global) ⇒ Object
56 57 58 59 60 61 62 63 |
# File 'lib/legion/extensions/absorbers/base.rb', line 56 def absorb_raw(content:, tags: [], scope: :global, **) if apollo_available? Legion::Apollo.ingest(content: content, tags: Array(), scope: scope, **) else Legion::Logging.warn('absorb_raw: Apollo not available') if defined?(Legion::Logging) { success: false, error: :apollo_not_available } end end |
#absorb_to_knowledge(content:, tags: [], scope: :global, **opts) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/legion/extensions/absorbers/base.rb', line 43 def absorb_to_knowledge(content:, tags: [], scope: :global, **opts) return fallback_absorb(:chunker, content, , scope, opts) unless chunker_available? return fallback_absorb(:apollo, content, , scope, opts) unless apollo_available? sections = [{ heading: opts.delete(:heading) || 'absorbed', content: content, section_path: opts.delete(:section_path) || 'absorbed', source_file: opts.delete(:source_file) || 'absorber' }] chunks = Legion::Extensions::Knowledge::Helpers::Chunker.chunk(sections: sections) = (chunks) ingest_chunks(chunks, , , scope, opts) end |
#report_progress(message:, percent: nil) ⇒ Object
71 72 73 74 75 76 |
# File 'lib/legion/extensions/absorbers/base.rb', line 71 def report_progress(message:, percent: nil) return unless job_id return unless defined?(Legion::Logging) Legion::Logging.info("absorb[#{job_id}] #{"#{percent}% " if percent}#{}") end |
#translate(source, type: :auto) ⇒ Object
65 66 67 68 69 |
# File 'lib/legion/extensions/absorbers/base.rb', line 65 def translate(source, type: :auto) raise 'legion-data is required for translate — add it to your Gemfile' unless defined?(Legion::Data::Extract) Legion::Data::Extract.extract(source, type: type) end |
#with_token(provider:) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/legion/extensions/absorbers/base.rb', line 78 def with_token(provider:) raise TokenUnavailableError, "#{provider} token not available" unless token_manager_for(provider).token_valid? raise TokenRevocationError, "#{provider} token has been revoked" if token_manager_for(provider).revoked? token = token_manager_for(provider).ensure_valid_token raise TokenUnavailableError, "#{provider} token refresh failed" unless token yield token rescue Legion::Auth::TokenManager::TokenExpiredError => e raise TokenUnavailableError, e. end |