lib/babelyoda/tanker.rb in babelyoda-2.1.0 vs lib/babelyoda/tanker.rb in babelyoda-2.1.1
- old
+ new
@@ -102,17 +102,19 @@
end
class Tanker
include Babelyoda::SpecificationLoader
- class FileNameInvalidError < RuntimeError ; end
+ class FileNameInvalidError < Exception ; end
+ class KeysetNameInvalidError < Exception ; end
attr_accessor :endpoint
attr_accessor :token
attr_accessor :project_id
def replace(keyset, language = nil)
+ validate_keyset_name!(keyset.name)
doc = project_xml do |xml|
keyset.to_xml(xml, language)
end
payload = {
:file => StringIO.new(doc),
@@ -129,15 +131,17 @@
def list
get('/keysets/', { 'project-id' => project_id }).css('keyset').map { |keyset| keyset['id'] }
end
def create(keyset_name)
+ validate_keyset_name!(keyset_name)
post('/keysets/create/', { 'project-id' => project_id, 'keyset-id' => keyset_name })
end
def export(keyset_name = nil, languages = nil, status = nil, safe = false)
payload = { 'project-id' => project_id }
+ validate_keyset_name!(keyset_name) if keyset_name
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 })
@@ -146,19 +150,21 @@
payload.merge!({ 'safe' => safe }) if safe
get('/projects/export/xml/', payload)
end
def load_keyset(keyset_name, languages = nil, status = nil, safe = false)
+ validate_keyset_name!(keyset_name)
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
def drop_keyset!(keyset_name)
+ validate_keyset_name!(keyset_name)
delete("/admin/project/#{project_id}/keyset/", { :keyset => keyset_name })
end
private
@@ -202,20 +208,22 @@
end
def post(method_name, payload)
uri = URI(method(method_name))
req = Net::HTTP::Post.new(uri.path)
+
req['AUTHORIZATION'] = token
req.content_type = multipart_content_type
req.body = multipart_data(payload)
- $logger.debug "POST URI: #{uri}"
- $logger.debug "POST BODY: #{req.body}"
-
- res = Net::HTTP.start(uri.host, uri.port) do |http|
+ debug_log = ''
+ conn = Net::HTTP.new(uri.host, uri.port)
+ conn.set_debug_output(debug_log)
+ res = conn.start do |http|
http.request(req)
end
+ $logger.debug "HTTP DEBUG: #{debug_log}"
case res
when Net::HTTPSuccess, Net::HTTPRedirection
Nokogiri::XML.parse(res.body)
else
@@ -229,15 +237,17 @@
uri = URI(method(method_name))
uri.query = URI.encode_www_form(payload) if payload
req = Net::HTTP::Get.new(uri.request_uri)
req['AUTHORIZATION'] = token
- $logger.debug "GET URI: #{uri}"
-
- res = Net::HTTP.start(uri.host, uri.port) do |http|
+ debug_log = ''
+ conn = Net::HTTP.new(uri.host, uri.port)
+ conn.set_debug_output(debug_log)
+ res = conn.start do |http|
http.request(req)
end
+ $logger.debug "HTTP DEBUG: #{debug_log}"
case res
when Net::HTTPSuccess, Net::HTTPRedirection
Nokogiri::XML.parse(res.body)
else
@@ -251,22 +261,30 @@
uri = URI(method(method_name))
uri.query = URI.encode_www_form(payload) if payload
req = Net::HTTP::Delete.new(uri.request_uri)
req['AUTHORIZATION'] = token
- $logger.debug "DELETE URI: #{uri}"
-
- res = Net::HTTP.start(uri.host, uri.port) do |http|
+ debug_log = ''
+ conn = Net::HTTP.new(uri.host, uri.port)
+ conn.set_debug_output(debug_log)
+ res = conn.start do |http|
http.request(req)
end
+ $logger.debug "HTTP DEBUG: #{debug_log}"
case res
when Net::HTTPSuccess, Net::HTTPRedirection
Nokogiri::XML.parse(res.body)
else
doc = Nokogiri::XML.parse(res.body)
error = doc.css('result error')[0].content
raise Error.new(error)
+ end
+ end
+
+ def validate_keyset_name!(keyset_name)
+ if keyset_name.match(/[\s\t]/)
+ raise KeysetNameInvalidError.new("Keyset name must NOT contain tabs or spaces: #{keyset_name}")
end
end
end
end