Class: Lara::Memories
- Inherits:
-
Object
- Object
- Lara::Memories
- Defined in:
- lib/lara/memories.rb
Instance Method Summary collapse
- #add_translation(id_or_ids, source:, target:, sentence:, translation:, tuid: nil, sentence_before: nil, sentence_after: nil, headers: nil) ⇒ Lara::Models::MemoryImport
- #connect(ids) ⇒ Lara::Models::Memory, ...
- #create(name:, external_id: nil) ⇒ Lara::Models::Memory
- #delete(id) ⇒ Lara::Models::Memory
- #delete_translation(id_or_ids, source:, target:, sentence:, translation:, tuid: nil, sentence_before: nil, sentence_after: nil) ⇒ Lara::Models::MemoryImport
- #get(id) ⇒ Lara::Models::Memory?
- #get_import_status(import_id) ⇒ Lara::Models::MemoryImport
- #import_tmx(id, tmx_path) ⇒ Lara::Models::MemoryImport
-
#initialize(client) ⇒ Memories
constructor
A new instance of Memories.
- #list ⇒ Array<Lara::Models::Memory>
- #update(id, name:) ⇒ Lara::Models::Memory
- #wait_for_import(memory_import, max_wait_time: 0) ⇒ Lara::Models::MemoryImport
Constructor Details
#initialize(client) ⇒ Memories
Returns a new instance of Memories.
5 6 7 8 |
# File 'lib/lara/memories.rb', line 5 def initialize(client) @client = client @polling_interval = 2 end |
Instance Method Details
#add_translation(id_or_ids, source:, target:, sentence:, translation:, tuid: nil, sentence_before: nil, sentence_after: nil, headers: nil) ⇒ Lara::Models::MemoryImport
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/lara/memories.rb', line 56 def add_translation(id_or_ids, source:, target:, sentence:, translation:, tuid: nil, sentence_before: nil, sentence_after: nil, headers: nil) body = { source: source, target: target, sentence: sentence, translation: translation, tuid: tuid, sentence_before: sentence_before, sentence_after: sentence_after }.compact if id_or_ids.is_a?(Array) body[:ids] = id_or_ids Lara::Models::MemoryImport.new(**@client.put("/v2/memories/content", body: body, headers: headers).transform_keys(&:to_sym)) else Lara::Models::MemoryImport.new(**@client.put("/v2/memories/#{id_or_ids}/content", body: body, headers: headers).transform_keys(&:to_sym)) end end |
#connect(ids) ⇒ Lara::Models::Memory, ...
46 47 48 49 50 51 52 53 |
# File 'lib/lara/memories.rb', line 46 def connect(ids) ids_array = ids.is_a?(Array) ? ids : [ids] results = @client.post("/v2/memories/connect", body: { ids: ids_array }) || [] models = results.map { |_h| Lara::Models::Memory.new(**_h.transform_keys(&:to_sym)) } return models if ids.is_a?(Array) models.first end |
#create(name:, external_id: nil) ⇒ Lara::Models::Memory
18 19 20 21 22 |
# File 'lib/lara/memories.rb', line 18 def create(name:, external_id: nil) payload = { name: name, external_id: external_id }.compact Lara::Models::Memory.new(**@client.post("/v2/memories", body: payload).transform_keys(&:to_sym)) end |
#delete(id) ⇒ Lara::Models::Memory
34 35 36 |
# File 'lib/lara/memories.rb', line 34 def delete(id) Lara::Models::Memory.new(**@client.delete("/v2/memories/#{id}").transform_keys(&:to_sym)) end |
#delete_translation(id_or_ids, source:, target:, sentence:, translation:, tuid: nil, sentence_before: nil, sentence_after: nil) ⇒ Lara::Models::MemoryImport
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/lara/memories.rb', line 79 def delete_translation(id_or_ids, source:, target:, sentence:, translation:, tuid: nil, sentence_before: nil, sentence_after: nil) body = { source: source, target: target, sentence: sentence, translation: translation, tuid: tuid, sentence_before: sentence_before, sentence_after: sentence_after }.compact if id_or_ids.is_a?(Array) body[:ids] = id_or_ids Lara::Models::MemoryImport.new(**@client.delete("/v2/memories/content", body: body).transform_keys(&:to_sym)) else Lara::Models::MemoryImport.new(**@client.delete("/v2/memories/#{id_or_ids}/content", body: body).transform_keys(&:to_sym)) end end |
#get(id) ⇒ Lara::Models::Memory?
25 26 27 28 29 30 31 |
# File 'lib/lara/memories.rb', line 25 def get(id) Lara::Models::Memory.new(**@client.get("/v2/memories/#{id}").transform_keys(&:to_sym)) rescue Lara::LaraApiError => e return nil if e.status_code == 404 raise end |
#get_import_status(import_id) ⇒ Lara::Models::MemoryImport
119 120 121 |
# File 'lib/lara/memories.rb', line 119 def get_import_status(import_id) Lara::Models::MemoryImport.new(**@client.get("/v2/memories/imports/#{import_id}").transform_keys(&:to_sym)) end |
#import_tmx(id, tmx_path) ⇒ Lara::Models::MemoryImport
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/lara/memories.rb', line 102 def import_tmx(id, tmx_path) require "stringio" require "zlib" basename = File.basename(tmx_path) buffer = StringIO.new gz = Zlib::GzipWriter.new(buffer, 7, Zlib::DEFAULT_STRATEGY) File.open(tmx_path, "rb") { |_f| IO.copy_stream(_f, gz) } gz.finish buffer.rewind files = { "tmx" => Faraday::UploadIO.new(buffer, "application/gzip", "#{basename}.gz") } Lara::Models::MemoryImport.new(**@client.post("/v2/memories/#{id}/import", body: { "compression" => "gzip" }, files: files).transform_keys(&:to_sym)) end |
#list ⇒ Array<Lara::Models::Memory>
11 12 13 14 15 |
# File 'lib/lara/memories.rb', line 11 def list (@client.get("/v2/memories") || []).map do |_h| Lara::Models::Memory.new(**_h.transform_keys(&:to_sym)) end end |
#update(id, name:) ⇒ Lara::Models::Memory
39 40 41 42 |
# File 'lib/lara/memories.rb', line 39 def update(id, name:) Lara::Models::Memory.new(**@client.put("/v2/memories/#{id}", body: { name: name }).transform_keys(&:to_sym)) end |
#wait_for_import(memory_import, max_wait_time: 0) ⇒ Lara::Models::MemoryImport
124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/lara/memories.rb', line 124 def wait_for_import(memory_import, max_wait_time: 0) start = Time.now current = memory_import while current.progress && current.progress < 1.0 if max_wait_time.to_f.positive? && (Time.now - start) > max_wait_time.to_f raise Timeout::Error end sleep @polling_interval current = get_import_status(current.id) yield current if block_given? end current end |