Sha256: 85c997d3d4f6c9b50be502ed579b233b9f305fbf8f217952baf2c1c28212c383

Contents?: true

Size: 1.78 KB

Versions: 3

Compression:

Stored size: 1.78 KB

Contents

require 'faraday'
require 'active_support/core_ext/object'

module I18n
  module Migrations
    module Backends
      class CrowdTranslateClient
        def initialize
          token = ENV['CROWD_TRANSLATE_API_TOKEN']
          raise("You must define CROWD_TRANSLATE_API_TOKEN in order to talk to Crowd Translate") unless token.present?

          server = ENV['CROWD_TRANSLATE_SERVER'] || 'https://crowd-translate.herokuapp.com'
          @faraday = Faraday.new(
            url: "#{server}/api/v1",
            headers: { 'X-CrowdTranslateApiToken' => token },
          )
        end

        def get_locale_file(locale_code)
          get("locales/#{locale_code}.yml")
        end

        def get_migration_versions
          JSON.parse(get('migrations.json'))
        end

        def put_migration(version:, ruby_file:)
          put("migrations/#{version}.json", migration: { ruby_file: ruby_file })
        end

        def put_locale(locale_code, name:, yaml_file:, yaml_metadata_file:)
          put("locales/#{locale_code}",
              locale: { name: name, yaml_file: yaml_file, yaml_metadata_file: yaml_metadata_file })
        end

        private

        def get(path)
          puts "GET #{path}".bold
          parse_response @faraday.get path
        end

        def put(path, params = {})
          puts "PUT #{path} #{params.to_s[0..50]}#{'...' if params.to_s.length > 50}".bold
          parse_response @faraday.put path, params
        end

        def parse_response(response)
          if response.success?
            response.body
          else
            error = begin
                      JSON.parse(response.body)['error']
                    rescue
                      response.body
                    end
            raise error
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
i18n-migrations-2.0.2 lib/i18n/migrations/backends/crowd_translate_client.rb
i18n-migrations-2.0.1 lib/i18n/migrations/backends/crowd_translate_client.rb
i18n-migrations-2.0.0 lib/i18n/migrations/backends/crowd_translate_client.rb