onesky-rails 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2fc313f6b4a8ec077a60721fa8054d69204e7105
4
- data.tar.gz: 02cc4184452f2ba4b3f4e1963b43b4bb382bee62
3
+ metadata.gz: efdecfa76c426d6b3c7ba6f9312f98c914f2d2e5
4
+ data.tar.gz: 16d9375f705ad4266a060273adf35c724cde0ae9
5
5
  SHA512:
6
- metadata.gz: b75a07545691a62209caa27f0d3b0b3735f7b654cdd9e2b23a85a685e8ba32035e13cb9036fa7e6c3078a5d1dcc11fe55aae72ac84aa1456d3a4755836b9705c
7
- data.tar.gz: 236dddc3a116d1bfca1d514130e8ff19dc485a61a2615429782e666690220c7f3e3ff5a13816e4f7a0571f0a92044f8ef6dc630b339ac26a33ff2deee4152316
6
+ metadata.gz: 4cad9660e157d30d332a0a24b9a934696ef771c4e6a7d15698b37986a458876d4f7d2f22c7c5f93dd10736a201ace9097c4cdaa2c686cc8d0d73e450c6f25765
7
+ data.tar.gz: d423d3944b8ddef1b687f9bd7de0ec06e8bdea16ffd445a24c42f7fd237a9e004c474b063a278b9e7a72585aca993e064b00aefd0e17d70b17856cb9b6de27c0
@@ -8,3 +8,9 @@
8
8
 
9
9
  * Add custom header
10
10
  * bump version to 1.0.0 as stable version
11
+
12
+ ### 1.1.0 - 9-JUN-2015
13
+
14
+ * fix download multiple files
15
+ * able to parse ERB template
16
+ * able to customize base_locale
@@ -15,7 +15,7 @@ module Onesky
15
15
  @client = ::Onesky::Client.new(@config['api_key'], @config['api_secret'])
16
16
  @client.plugin_code = 'rails-string'
17
17
  @project = @client.project(@config['project_id'].to_i)
18
- @base_locale = ::I18n.default_locale
18
+ @base_locale = config_hash.fetch('base_locale', ::I18n.default_locale)
19
19
  @onesky_locales = []
20
20
  end
21
21
 
@@ -52,21 +52,16 @@ NOTICE
52
52
  DIR_PREFIX + locale
53
53
  end
54
54
 
55
- def extract_file_name(header_hash)
56
- search_text = 'filename='
57
- if disposition = header_hash[:content_disposition]
58
- if idx = disposition.index(search_text)
59
- disposition[(idx + search_text.length)..-1]
60
- end
61
- end
62
- end
63
-
64
55
  def make_translation_dir(dir_path, locale)
65
56
  target_path = File.join(dir_path, locale_dir(locale))
66
57
  Dir.mkdir(target_path) unless File.directory?(target_path)
67
58
  target_path
68
59
  end
69
60
 
61
+ def locale_file_name(file, to_locale)
62
+ file.sub(@base_locale.to_s, to_locale)
63
+ end
64
+
70
65
  def get_default_locale_files(string_path)
71
66
  Dir.glob("#{string_path}/**/*.yml").map do |path|
72
67
  content_hash = YAML.load_file(path)
@@ -76,7 +71,8 @@ NOTICE
76
71
 
77
72
  def save_translation(response, string_path, locale, file)
78
73
  locale_path = make_translation_dir(string_path, locale)
79
- target_file = extract_file_name(response.headers) || file
74
+ target_file = locale_file_name(file, locale)
75
+
80
76
  File.open(File.join(locale_path, target_file), 'w') do |f|
81
77
  f.write(TRANSLATION_NOTICE + response.body.force_encoding(ENCODING))
82
78
  end
@@ -1,5 +1,5 @@
1
1
  module Onesky
2
2
  module Rails
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
@@ -13,7 +13,9 @@ namespace :onesky do
13
13
  end
14
14
 
15
15
  def file_client
16
- Onesky::Rails::FileClient.new YAML.load_file(Rails.root.join('config', 'onesky.yml'))
16
+ require 'erb'
17
+ data = YAML::load(ERB.new(File.read(Rails.root.join('config', 'onesky.yml'))).result)
18
+ Onesky::Rails::FileClient.new data
17
19
  end
18
20
 
19
21
  def locale_path
@@ -24,5 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "bundler", "~> 1.5"
25
25
  spec.add_development_dependency "rake", "~> 10.3"
26
26
  spec.add_development_dependency "rspec", "~> 3.1.0"
27
+ spec.add_development_dependency "timecop", "~> 0.7.0"
27
28
  spec.add_development_dependency "webmock", "~> 1.19.0"
28
29
  end
@@ -0,0 +1,2 @@
1
+ en:
2
+ some: thing
@@ -1,6 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Onesky::Rails::Client do
4
+ let(:config_hash) { create_config_hash }
4
5
 
5
6
  describe '#new' do
6
7
 
@@ -31,6 +32,17 @@ describe Onesky::Rails::Client do
31
32
  expect{client.verify_languages!}.to_not raise_error
32
33
  expect(client.onesky_locales).to eq(['ja'])
33
34
  end
35
+
36
+ context 'with explicit base locale and different default locale' do
37
+ let(:config_hash) { create_config_hash.merge({'base_locale' => 'en'}) }
38
+
39
+ it 'to retrieve languages activated at OneSky' do
40
+ I18n.default_locale = :ja
41
+
42
+ expect{client.verify_languages!}.to_not raise_error
43
+ expect(client.onesky_locales).to eq(['ja'])
44
+ end
45
+ end
34
46
  end
35
47
 
36
48
  context 'fail' do
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Onesky::Rails::FileClient do
4
4
 
5
+ let(:config_hash) { create_config_hash }
5
6
  let(:client) {Onesky::Rails::FileClient.new(config_hash)}
6
7
  let(:file_path) { File.expand_path("../../../fixtures/locales", __FILE__) }
7
8
 
@@ -10,24 +11,21 @@ describe Onesky::Rails::FileClient do
10
11
  end
11
12
 
12
13
  context '#upload' do
13
- it 'strings to onesky' do
14
+ it 'all translation files to onesky' do
14
15
  stub_request(:post, full_path_with_auth_hash("/projects/#{config_hash['project_id']}/files", config_hash['api_key'], config_hash['api_secret']))
15
16
  .to_return(status: 201)
16
17
 
17
- expect(client.upload(file_path)).to eq(["#{file_path}/en.yml"])
18
+ expect(client.upload(file_path)).to match_array(["#{file_path}/en.yml","#{file_path}/special_en.yml"])
18
19
  end
19
20
  end
20
21
 
21
22
  context 'download' do
22
23
 
23
- let(:file_name) {'ja.yml'}
24
- let(:response_headers) do
25
- {
26
- 'Content-Type' => 'text/plain',
27
- 'Content-Disposition' => "attachment; filename=#{file_name}",
28
- }
24
+ let(:expected_locale_files) do
25
+ ["#{locale_dir}/ja.yml", "#{locale_dir}/special_ja.yml"]
29
26
  end
30
- let(:query_string) {'&source_file_name=en.yml&locale=ja'}
27
+
28
+ let(:file_names) {['en.yml', 'special_en.yml']}
31
29
 
32
30
  def locale_dir
33
31
  File.join(file_path, 'onesky_ja')
@@ -53,16 +51,29 @@ describe Onesky::Rails::FileClient do
53
51
  end
54
52
 
55
53
  it 'download translations from OneSky and save as YAML files' do
56
- stub_request(:get, full_path_with_auth_hash("/projects/#{config_hash['project_id']}/translations", config_hash['api_key'], config_hash['api_secret']) + query_string)
57
- .to_return(
58
- status: 200,
59
- body: File.read(File.join(file_path, file_name)),
60
- headers: response_headers)
54
+ prepare_download_requests!
61
55
 
62
56
  expect(locale_files).to be_empty
63
57
  client.download(file_path)
64
- expect(locale_files).to eq(["#{locale_dir}/#{file_name}"])
58
+ expect(locale_files).to match_array(expected_locale_files)
65
59
  end
60
+
61
+ def prepare_download_requests!
62
+ Timecop.freeze
63
+ file_names.each do |file_name|
64
+ response_headers = {
65
+ 'Content-Type' => 'text/plain',
66
+ 'Content-Disposition' => "attachment; filename=#{file_name}",
67
+ }
68
+ query_string = "&source_file_name=#{file_name}&locale=ja"
69
+ stub_request(:get, full_path_with_auth_hash("/projects/#{config_hash['project_id']}/translations", config_hash['api_key'], config_hash['api_secret']) + query_string)
70
+ .to_return(
71
+ status: 200,
72
+ body: File.read(File.join(file_path, file_name)),
73
+ headers: response_headers)
74
+ end
75
+ end
76
+
66
77
  end
67
78
 
68
79
  end
@@ -3,6 +3,7 @@ require 'webmock/rspec'
3
3
  require 'i18n'
4
4
  require 'onesky/rails'
5
5
  require 'onesky'
6
+ require 'timecop'
6
7
 
7
8
  WebMock.disable_net_connect!(allow_localhost: true)
8
9
 
@@ -46,7 +47,7 @@ def languages_response
46
47
  }
47
48
  end
48
49
 
49
- def config_hash
50
+ def create_config_hash
50
51
  {
51
52
  "api_key" => 'fakeapi',
52
53
  "api_secret" => 'fakesecret',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onesky-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Lam
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-31 00:00:00.000000000 Z
11
+ date: 2015-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: timecop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.7.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.7.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: webmock
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,7 @@ files:
122
136
  - spec/fixtures/locales/en.json
123
137
  - spec/fixtures/locales/en.yml
124
138
  - spec/fixtures/locales/ja.yml
139
+ - spec/fixtures/locales/special_en.yml
125
140
  - spec/onesky/rails/client_spec.rb
126
141
  - spec/onesky/rails/file_client_spec.rb
127
142
  - spec/spec_helper.rb
@@ -153,7 +168,7 @@ test_files:
153
168
  - spec/fixtures/locales/en.json
154
169
  - spec/fixtures/locales/en.yml
155
170
  - spec/fixtures/locales/ja.yml
171
+ - spec/fixtures/locales/special_en.yml
156
172
  - spec/onesky/rails/client_spec.rb
157
173
  - spec/onesky/rails/file_client_spec.rb
158
174
  - spec/spec_helper.rb
159
- has_rdoc: