copy_tuner_client 0.1.1.beta16 → 0.1.1.beta17

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- copy_tuner_client (0.1.1.beta16)
4
+ copy_tuner_client (0.1.1.beta17)
5
5
  i18n (>= 0.5.0)
6
6
  json
7
7
 
@@ -70,7 +70,7 @@ GEM
70
70
  multi_json (~> 1.3)
71
71
  hike (1.2.1)
72
72
  i18n (0.6.0)
73
- json (1.8.1)
73
+ json (1.8.2)
74
74
  mail (2.3.0)
75
75
  i18n (>= 0.4.0)
76
76
  mime-types (~> 1.16)
@@ -8,12 +8,21 @@ module CopyTunerClient
8
8
 
9
9
  def call(env)
10
10
  status, headers, response = @app.call(env)
11
- if should_inject_xray?(status, headers, response)
12
- body = append_css!(response)
11
+ if html_headers?(status, headers) && body = response_body(response)
12
+ body = append_css!(body)
13
13
  body = append_js!(body)
14
- headers['Content-Length'] = body.bytesize.to_s
14
+ content_length = body.bytesize.to_s
15
+ if ActionDispatch::Response === response
16
+ response.body = [body]
17
+ response.headers['Content-Length'] = content_length
18
+ response.to_a
19
+ else
20
+ headers['Content-Length'] = content_length
21
+ [status, headers, [body]]
22
+ end
23
+ else
24
+ [status, headers, response]
15
25
  end
16
- [status, headers, (body ? [body] : response)]
17
26
  end
18
27
 
19
28
  private
@@ -22,8 +31,8 @@ module CopyTunerClient
22
31
  ActionController::Base.helpers
23
32
  end
24
33
 
25
- def append_css!(response)
26
- response.body.sub(/<body[^>]*>/) { "#{$~}\n#{css_tag}" }
34
+ def append_css!(html)
35
+ html.sub(/<body[^>]*>/) { "#{$~}\n#{css_tag}" }
27
36
  end
28
37
 
29
38
  def append_js!(html)
@@ -47,37 +56,20 @@ module CopyTunerClient
47
56
  helpers.stylesheet_link_tag :copyray
48
57
  end
49
58
 
50
- def should_inject_xray?(status, headers, response)
51
- status == 200 &&
52
- html_request?(headers, response) &&
53
- !empty?(response) &&
54
- !file?(headers) &&
55
- !response.body.frozen?
56
- end
57
-
58
- def empty?(response)
59
- # response may be ["Not Found"], ["Move Permanently"], etc.
60
- (response.is_a?(Array) && response.size <= 1) ||
61
- !response.respond_to?(:body) || response.body.empty?
62
- end
63
-
64
59
  def file?(headers)
65
60
  headers["Content-Transfer-Encoding"] == "binary"
66
61
  end
67
62
 
68
- def html_request?(headers, response)
63
+ def html_headers?(status, headers)
64
+ status == 200 &&
69
65
  headers['Content-Type'] &&
70
66
  headers['Content-Type'].include?('text/html') &&
71
- response_body(response).include?("<html")
67
+ !file?(headers)
72
68
  end
73
69
 
74
70
  def response_body(response)
75
71
  body = ''
76
- if response.is_a?(Array)
77
- response.each { |s| body << s }
78
- else
79
- body = response
80
- end
72
+ response.each { |s| body << s.to_s }
81
73
  body
82
74
  end
83
75
  end
@@ -1,6 +1,6 @@
1
1
  module CopyTunerClient
2
2
  # Client version
3
- VERSION = '0.1.1.beta16'
3
+ VERSION = '0.1.1.beta17'
4
4
 
5
5
  # API version being used to communicate with the server
6
6
  API_VERSION = '2.0'.freeze
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: copy_tuner_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.beta16
4
+ version: 0.1.1.beta17
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-09 00:00:00.000000000 Z
12
+ date: 2015-02-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: i18n
@@ -349,7 +349,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
349
349
  version: '0'
350
350
  segments:
351
351
  - 0
352
- hash: -1380294734623962063
352
+ hash: -4147796897350930747
353
353
  required_rubygems_version: !ruby/object:Gem::Requirement
354
354
  none: false
355
355
  requirements: