Class: Babelyoda::Tanker

Inherits:
Object
  • Object
show all
Includes:
SpecificationLoader
Defined in:
lib/babelyoda/tanker.rb

Defined Under Namespace

Classes: FileNameInvalidError

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from SpecificationLoader

#dump, included, #initialize, #method_missing

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Babelyoda::SpecificationLoader

Instance Attribute Details

#endpointObject

Returns the value of attribute endpoint.



59
60
61
# File 'lib/babelyoda/tanker.rb', line 59

def endpoint
  @endpoint
end

#project_idObject

Returns the value of attribute project_id.



61
62
63
# File 'lib/babelyoda/tanker.rb', line 61

def project_id
  @project_id
end

#tokenObject

Returns the value of attribute token.



60
61
62
# File 'lib/babelyoda/tanker.rb', line 60

def token
  @token
end

Instance Method Details

#create(keyset_name) ⇒ Object



81
82
83
# File 'lib/babelyoda/tanker.rb', line 81

def create(keyset_name)
  post('/keysets/create/', { 'project-id' => project_id, 'keyset-id' => keyset_name })
end

#export(keyset_name = nil, languages = nil, status = nil, safe = false) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/babelyoda/tanker.rb', line 85

def export(keyset_name = nil, languages = nil, status = nil, safe = false)
  payload = { 'project-id' => project_id }
  payload.merge!({ 'keyset-id' => keyset_name }) if keyset_name
  if languages
    value = languages
    value = languages.join(',') if languages.respond_to?(:join)
    payload.merge!({ 'language' => value })
  end
  payload.merge!({ 'status' => status.to_s }) if status
  payload.merge!({ 'safe' => safe }) if safe
  get('/projects/export/xml/', payload)
end

#listObject



77
78
79
# File 'lib/babelyoda/tanker.rb', line 77

def list
  get('/keysets/', { 'project-id' => project_id }).css('keyset').map { |keyset| keyset['id'] }
end

#load_keyset(keyset_name, languages = nil, status = nil, safe = false) ⇒ Object



98
99
100
101
102
103
104
105
# File 'lib/babelyoda/tanker.rb', line 98

def load_keyset(keyset_name, languages = nil, status = nil, safe = false)
  doc = export(keyset_name, languages, status, safe)
  doc.css("keyset[@id='#{keyset_name}']").each do |keyset_node|
    keyset = Babelyoda::Keyset.parse_xml(keyset_node)
    return keyset if keyset.name == keyset_name
  end
  Babelyoda::Keyset.new(keyset_name)
end

#replace(keyset, language = nil) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/babelyoda/tanker.rb', line 63

def replace(keyset, language = nil)
  doc = project_xml do |xml|
    keyset.to_xml(xml, language)
  end
  payload = { 
    :file => StringIO.new(doc),
    'project-id' => project_id,
    'keyset-id' => keyset.name,
    :format => 'xml'
  }
  payload.merge!({:language => language}) if language
  post('/keysets/replace/', payload)
end