wovnrb 0.2.01 → 0.2.02

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -6
  3. data/README.md +116 -12
  4. data/lib/wovnrb/api_data.rb +59 -0
  5. data/lib/wovnrb/headers.rb +30 -5
  6. data/lib/wovnrb/html_replacers/image_replacer.rb +44 -0
  7. data/lib/wovnrb/html_replacers/link_replacer.rb +18 -0
  8. data/lib/wovnrb/html_replacers/meta_replacer.rb +20 -0
  9. data/lib/wovnrb/html_replacers/replacer_base.rb +17 -0
  10. data/lib/wovnrb/html_replacers/script_replacer.rb +39 -0
  11. data/lib/wovnrb/html_replacers/text_replacer.rb +19 -0
  12. data/lib/wovnrb/lang.rb +133 -23
  13. data/lib/wovnrb/services/url.rb +2 -68
  14. data/lib/wovnrb/services/wovn_logger.rb +45 -0
  15. data/lib/wovnrb/store.rb +19 -38
  16. data/lib/wovnrb/text_caches/cache_base.rb +52 -0
  17. data/lib/wovnrb/text_caches/memory_cache.rb +52 -0
  18. data/lib/wovnrb/version.rb +1 -1
  19. data/lib/wovnrb.rb +19 -224
  20. data/test/lib/api_data_test.rb +62 -0
  21. data/test/lib/headers_test.rb +1221 -1212
  22. data/test/lib/html_replacers/image_replacer_test.rb +86 -0
  23. data/test/lib/html_replacers/link_replacer_test.rb +43 -0
  24. data/test/lib/html_replacers/meta_replacer_test.rb +105 -0
  25. data/test/lib/html_replacers/replacer_base_test.rb +31 -0
  26. data/test/lib/html_replacers/script_replacer_test.rb +90 -0
  27. data/test/lib/html_replacers/text_replacer_test.rb +57 -0
  28. data/test/lib/lang_test.rb +446 -33
  29. data/test/lib/services/wovn_logger_test.rb +40 -0
  30. data/test/lib/store_test.rb +39 -29
  31. data/test/lib/text_caches/cache_base_test.rb +31 -0
  32. data/test/lib/text_caches/memory_cache_test.rb +91 -0
  33. data/test/lib/wovnrb_test.rb +39 -886
  34. data/test/test_helper.rb +96 -1
  35. data/wovnrb.gemspec +4 -0
  36. metadata +89 -2
data/test/test_helper.rb CHANGED
@@ -1 +1,96 @@
1
- puts "HEYO"
1
+ require 'nokogumbo'
2
+ require 'wovnrb/headers'
3
+ require 'wovnrb/lang'
4
+ require 'wovnrb/store'
5
+ require 'wovnrb/html_replacers/replacer_base'
6
+ require 'wovnrb/html_replacers/link_replacer'
7
+ require 'wovnrb/html_replacers/text_replacer'
8
+ require 'wovnrb/html_replacers/meta_replacer'
9
+ require 'wovnrb/html_replacers/image_replacer'
10
+ require 'wovnrb/html_replacers/script_replacer'
11
+ require 'minitest/autorun'
12
+
13
+
14
+ module Wovnrb
15
+ class WovnMiniTest < Minitest::Test
16
+ def before_setup
17
+ super
18
+ Wovnrb::Store.instance.reset
19
+ end
20
+ end
21
+
22
+ class LogMock
23
+ attr_accessor :errors
24
+
25
+ def self.mock_log
26
+ Store.instance.settings['log_path'] = nil
27
+ mock = self.new
28
+ WovnLogger.instance.set_logger(mock)
29
+ mock
30
+ end
31
+
32
+ def initialize
33
+ @errors= []
34
+ end
35
+
36
+ def error(message)
37
+ @errors << message
38
+ end
39
+ end
40
+
41
+ def get_settings(options={})
42
+ settings = {}
43
+ settings['user_token'] = 'OHYx9'
44
+ settings['url_pattern'] = 'path'
45
+ settings['url_pattern_reg'] = "/(?<lang>[^/.?]+)"
46
+ settings['query'] = []
47
+ settings['api_url'] = 'http://localhost/v0/values'
48
+ settings['default_lang'] = 'en'
49
+ settings['supported_langs'] = ['en', 'ja']
50
+ settings['secret_key'] = 'secret_key'
51
+ return settings.merge(options)
52
+ end
53
+
54
+ def get_env(options={})
55
+ env = {}
56
+ env['rack.url_scheme'] = 'http'
57
+ env['HTTP_HOST'] = 'wovn.io'
58
+ env['REQUEST_URI'] = '/dashboard?param=val&hey=you'
59
+ env['SERVER_NAME'] = 'wovn.io'
60
+ env['HTTP_COOKIE'] = "olfsk=olfsk021093478426337242; hblid=KB8AAMzxzu2DSxnB4X7BJ26rBGVeF0yJ; optimizelyEndUserId=oeu1426233718869r0.5398541854228824; __zlcmid=UFeZqrVo6Mv3Yl; wovn_selected_lang=en; optimizelySegments=%7B%7D; optimizelyBuckets=%7B%7D; _equalizer_session=eDFwM3M2QUZJZFhoby9JZlArckcvSUJwNFRINXhUeUxtNnltQXZhV0tqdGhZQjJMZ01URnZTK05ydFVWYmM3U0dtMVN0M0Z0UnNDVG8vdUNDTUtPc21jY0FHREgrZ05CUnBTb0hyUlkvYlBWQVhQR3RZdnhjMWsrRW5rOVp1Z3V3bkgyd3NpSlRZQWU1dlZvNmM1THp6aUZVeE83Y1pWWENRNTBUVFIrV05WeTdDMlFlem1tUzdxaEtndFZBd2dtUjU2ak5EUmJPa3RWWmMyT1pSVWdMTm8zOVZhUWhHdGQ3L1c5bm91RmNSdFRrcC90Tml4N2t3ZWlBaDRya2lLT1I0S0J2TURhUWl6Uk5rOTQ4Y1MwM3VKYnlLMUYraEt5clhRdFd1eGdEWXdZd3pFbWQvdE9vQndhdDVQbXNLcHBURm9CbnZKenU2YnNXRFdqRVl0MVV3bmRyYjhvMDExcGtUVU9tK1lqUGswM3p6M05tbVRnTjE3TUl5cEdpTTZ4a2gray8xK0FvTC9wUDVka1JSeE5GM1prZmRjWDdyVzRhWW5uS2Mxc1BxOEVVTTZFS3N5bTlVN2p5eE5YSjNZWGI2UHd3Vzc0bDM5QjIwL0l5Mm85NmQyWFAwdVQ3ZzJYYk1QOHY2NVJpY2c9LS1KNU96eHVycVJxSDJMbEc4Rm9KVXpBPT0%3D--17e47555d692fb9cde20ef78a09a5eabbf805bb3; mp_a0452663eb7abb7dfa9c94007ebb0090_mixpanel=%7B%22distinct_id%22%3A%20%2253ed9ffa4a65662e37000000%22%2C%22%24initial_referrer%22%3A%20%22http%3A%2F%2Fp.dev-wovn.io%3A8080%2Fhttp%3A%2F%2Fdev-wovn.io%3A3000%22%2C%22%24initial_referring_domain%22%3A%20%22p.dev-wovn.io%3A8080%22%2C%22__mps%22%3A%20%7B%7D%2C%22__mpso%22%3A%20%7B%7D%2C%22__mpa%22%3A%20%7B%7D%2C%22__mpu%22%3A%20%7B%7D%2C%22__mpap%22%3A%20%5B%5D%7D"
61
+ env['HTTP_ACCEPT_LANGUAGE'] = 'ja,en-US;q=0.8,en;q=0.6'
62
+ env['QUERY_STRING'] = 'param=val&hey=you'
63
+ env['ORIGINAL_FULLPATH'] = '/dashboard?param=val&hey=you'
64
+ #env['HTTP_REFERER'] =
65
+ env['REQUEST_PATH'] = '/dashboard'
66
+ env['PATH_INFO'] = '/dashboard'
67
+
68
+ if options['url']
69
+ url = URI.parse(options['url'])
70
+ env['rack.url_scheme'] = url.scheme
71
+ env['HTTP_HOST'] = url.host
72
+ if (url.scheme == 'http' && url.port != 80) || (url.scheme == 'https' && url.port != 443)
73
+ env['HTTP_HOST'] += ":#{url.port}"
74
+ end
75
+ env['SERVER_NAME'] = url.host
76
+ env['REQUEST_URI'] = url.request_uri
77
+ env['ORIGINAL_FULLPATH'] = url.request_uri
78
+ env['QUERY_STRING'] = url.query
79
+ env['REQUEST_PATH'] = url.path
80
+ env['PATH_INFO'] = url.path
81
+ end
82
+ return env.merge(options)
83
+ end
84
+
85
+ def to_dom(html)
86
+ dom = Nokogiri::HTML5(html)
87
+ dom.encoding = "UTF-8"
88
+ dom
89
+ end
90
+
91
+ def get_dom(innerHTML)
92
+ to_dom("<html><body>#{innerHTML}</body></html>")
93
+ end
94
+
95
+ module_function :get_env, :get_settings, :to_dom, :get_dom
96
+ end
data/wovnrb.gemspec CHANGED
@@ -26,6 +26,8 @@ Gem::Specification.new do |spec|
26
26
  #spec.extensions = spec.files.grep(%r{/extconf\.rb$})
27
27
 
28
28
  spec.add_dependency "nokogumbo", "1.3.0"
29
+ spec.add_dependency "activesupport"
30
+ spec.add_dependency "lz4-ruby"
29
31
 
30
32
  spec.add_development_dependency "bundler", "~> 1.7"
31
33
  spec.add_development_dependency "rake", "~> 10.0"
@@ -44,6 +46,8 @@ Gem::Specification.new do |spec|
44
46
  #spec.add_development_dependency "rice"
45
47
  spec.add_development_dependency "rake-compiler"
46
48
  spec.add_development_dependency "geminabox"
49
+ spec.add_development_dependency "timecop"
50
+ spec.add_development_dependency "webmock"
47
51
 
48
52
  end
49
53
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wovnrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.01
4
+ version: 0.2.02
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Sandford
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-03-29 00:00:00.000000000 Z
12
+ date: 2016-04-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogumbo
@@ -25,6 +25,34 @@ dependencies:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
27
  version: 1.3.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: activesupport
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: lz4-ruby
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
28
56
  - !ruby/object:Gem::Dependency
29
57
  name: bundler
30
58
  requirement: !ruby/object:Gem::Requirement
@@ -207,6 +235,34 @@ dependencies:
207
235
  - - ">="
208
236
  - !ruby/object:Gem::Version
209
237
  version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: timecop
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: '0'
252
+ - !ruby/object:Gem::Dependency
253
+ name: webmock
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: '0'
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: '0'
210
266
  description: ALPHA VERSION, not in a useable form.
211
267
  email:
212
268
  - jeff@wovn.io
@@ -223,18 +279,38 @@ files:
223
279
  - circle.yml
224
280
  - ext/dom/Makefile
225
281
  - lib/wovnrb.rb
282
+ - lib/wovnrb/api_data.rb
226
283
  - lib/wovnrb/headers.rb
284
+ - lib/wovnrb/html_replacers/image_replacer.rb
285
+ - lib/wovnrb/html_replacers/link_replacer.rb
286
+ - lib/wovnrb/html_replacers/meta_replacer.rb
287
+ - lib/wovnrb/html_replacers/replacer_base.rb
288
+ - lib/wovnrb/html_replacers/script_replacer.rb
289
+ - lib/wovnrb/html_replacers/text_replacer.rb
227
290
  - lib/wovnrb/lang.rb
228
291
  - lib/wovnrb/railtie.rb
229
292
  - lib/wovnrb/services/url.rb
293
+ - lib/wovnrb/services/wovn_logger.rb
230
294
  - lib/wovnrb/store.rb
295
+ - lib/wovnrb/text_caches/cache_base.rb
296
+ - lib/wovnrb/text_caches/memory_cache.rb
231
297
  - lib/wovnrb/version.rb
232
298
  - spec/spec_helper.rb
233
299
  - spec/wovnrb_spec.rb
300
+ - test/lib/api_data_test.rb
234
301
  - test/lib/headers_test.rb
302
+ - test/lib/html_replacers/image_replacer_test.rb
303
+ - test/lib/html_replacers/link_replacer_test.rb
304
+ - test/lib/html_replacers/meta_replacer_test.rb
305
+ - test/lib/html_replacers/replacer_base_test.rb
306
+ - test/lib/html_replacers/script_replacer_test.rb
307
+ - test/lib/html_replacers/text_replacer_test.rb
235
308
  - test/lib/lang_test.rb
236
309
  - test/lib/services/url_test.rb
310
+ - test/lib/services/wovn_logger_test.rb
237
311
  - test/lib/store_test.rb
312
+ - test/lib/text_caches/cache_base_test.rb
313
+ - test/lib/text_caches/memory_cache_test.rb
238
314
  - test/lib/wovnrb_test.rb
239
315
  - test/services/url_test.rb
240
316
  - test/test_helper.rb
@@ -267,10 +343,21 @@ summary: Gem for WOVN.io
267
343
  test_files:
268
344
  - spec/spec_helper.rb
269
345
  - spec/wovnrb_spec.rb
346
+ - test/lib/api_data_test.rb
270
347
  - test/lib/headers_test.rb
348
+ - test/lib/html_replacers/image_replacer_test.rb
349
+ - test/lib/html_replacers/link_replacer_test.rb
350
+ - test/lib/html_replacers/meta_replacer_test.rb
351
+ - test/lib/html_replacers/replacer_base_test.rb
352
+ - test/lib/html_replacers/script_replacer_test.rb
353
+ - test/lib/html_replacers/text_replacer_test.rb
271
354
  - test/lib/lang_test.rb
272
355
  - test/lib/services/url_test.rb
356
+ - test/lib/services/wovn_logger_test.rb
273
357
  - test/lib/store_test.rb
358
+ - test/lib/text_caches/cache_base_test.rb
359
+ - test/lib/text_caches/memory_cache_test.rb
274
360
  - test/lib/wovnrb_test.rb
275
361
  - test/services/url_test.rb
276
362
  - test/test_helper.rb
363
+ has_rdoc: