class RESTClient
Public Class Methods
new(service_account, bundle_id, locale = "")
click to toggle source
# File lib/rest_client.rb, line 55 def initialize(service_account, bundle_id, locale = "") @bundles = [] @languages = {} @resource_data = {} @service_account = service_account @bundle_id = bundle_id get_resource_strings(locale) end
Public Instance Methods
get_bundle_id()
click to toggle source
# File lib/rest_client.rb, line 137 def get_bundle_id @bundle_id end
get_bundle_info()
click to toggle source
bundle info contains the languages - used get_bundle_info
to reflect current API
# File lib/rest_client.rb, line 75 def get_bundle_info if @languages.empty? url_string = "#{@service_account.get_url_string}/#{@service_account.get_instance_id}/#{URL_PATH}/#{@bundle_id}" puts url_string response = make_request(url_string, @service_account) source_language = response[BUNDLE_STRING][SOURCE_LANGUAGE_STRING] @languages[source_language] = response[BUNDLE_STRING][TARGET_LANGUAGES_STRING] end @languages end
get_bundles()
click to toggle source
# File lib/rest_client.rb, line 65 def get_bundles if @bundles.empty? url_string = "#{@service_account.get_url_string}/#{@service_account.get_instance_id}/#{URL_PATH}" response = make_request(url_string, service_account) @bundles = request[BUNDLE_ID_STRING] end @bundles end
get_resource_strings(locale = "")
click to toggle source
# File lib/rest_client.rb, line 86 def get_resource_strings(locale = "") if @resource_data.empty? target_languages = [] if locale.empty? language_dictionary = get_bundle_info target_languages = get_target_languages.dup target_languages << get_source_language else if (!@supportedLangs.include? locale) if (@expectedMatches.has_key? locale) locale = @expectedMatches[locale] else raise "Unsupported Locale: #{locale}" end end target_languages << locale end get_translations(@service_account, target_languages, @bundle_id) else @resource_data end end
get_service_account()
click to toggle source
# File lib/rest_client.rb, line 133 def get_service_account @service_account end
get_source_language()
click to toggle source
# File lib/rest_client.rb, line 124 def get_source_language @languages.keys[0] end
get_target_languages()
click to toggle source
# File lib/rest_client.rb, line 128 def get_target_languages source_language = get_source_language @languages[source_language] end
has_language(language)
click to toggle source
# File lib/rest_client.rb, line 111 def has_language(language) if language.equal? get_source_language return true end get_target_languages.each do |lang| if lang.equal? language return true end end return false end
set_bundle_id(name)
click to toggle source
# File lib/rest_client.rb, line 149 def set_bundle_id(name) @bundle_id = name end
set_resource_strings(map)
click to toggle source
# File lib/rest_client.rb, line 141 def set_resource_strings (map) @resource_data = map end
set_service_account(sa)
click to toggle source
# File lib/rest_client.rb, line 145 def set_service_account(sa) @service_account = sa end
Private Instance Methods
get_translations(service_account, locale_list, project_name)
click to toggle source
# File lib/rest_client.rb, line 182 def get_translations(service_account, locale_list, project_name) url_string = "#{service_account.get_url_string}/#{service_account.get_instance_id}/#{URL_PATH}/#{project_name}" locale_list.each do |language| target_lang_url = "#{url_string}/#{language}" response = make_request(target_lang_url, service_account) @resource_data[language] = {} response[RESOURCE_STRINGS].each do |key, value| I18n.backend.store_translations(language, {key => value}, :escape => false) @resource_data[language][key] = value end end end
make_request(url, service_account, basic_auth = false)
click to toggle source
# File lib/rest_client.rb, line 155 def make_request(url, service_account, basic_auth = false) uri = URI.parse(url.to_s) request = Net::HTTP::Get.new uri.path if service_account.is_iam_enabled request["Authorization"] = "API-KEY #{service_account.get_api_key}" elsif basic_auth request.basic_auth(service_account.get_user_id, service_account.get_password) else hmac = HMAC.new d = hmac.get_rfc1123_date request["Date"] = d request["Authorization"] = hmac.get_auth_credentials(service_account.get_user_id, service_account.get_password, "GET", url,d, "").strip end response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') {|http| http.request(request) } json_response = JSON.parse(response.body) if json_response["status"] != "SUCCESS" raise "Invalid HTTP Request #{json_response["message"]}" end return json_response end