exvo_helpers 0.0.8 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  *.gem
2
2
  .bundle
3
3
  Gemfile.lock
4
+ coverage/*
4
5
  pkg/*
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright © 2011-2012 Exvo.com Development BV
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -7,6 +7,7 @@ Ruby gem providing helper methods for various Exvo apps/services. It takes into
7
7
  Results are from the 'development' Rails environment:
8
8
 
9
9
  ```ruby
10
+ Exvo::Helpers.auth_host => 'auth.exvo.local'
10
11
  Exvo::Helpers.cdn_host => 'www.exvo.local'
11
12
  Exvo::Helpers.cfs_host => 'cfs.exvo.local'
12
13
  Exvo::Helpers.desktop_host => 'www.exvo.local'
@@ -18,6 +19,7 @@ Exvo::Helpers.music_host => 'music.exvo.local'
18
19
  Exvo::Helpers.pics_host => 'pics.exvo.local'
19
20
  Exvo::Helpers.preview_host => 'preview.exvo.local'
20
21
 
22
+ Exvo::Helpers.auth_uri => 'http://auth.exvo.local'
21
23
  Exvo::Helpers.cdn_uri => 'http://www.exvo.local'
22
24
  Exvo::Helpers.cfs_uri => 'http://cfs.exvo.local'
23
25
  Exvo::Helpers.desktop_uri => 'http://www.exvo.local'
@@ -30,44 +32,47 @@ Exvo::Helpers.pics_uri => 'http://pics.exvo.local'
30
32
  Exvo::Helpers.preview_uri => 'http://preview.exvo.local'
31
33
  ```
32
34
 
33
- For consistency, there are also read-only `auth_host/auth_uri` methods, that just pass execution to the [exvo-auth](https://github.com/Exvo/Auth) gem (so it's required that exvo-auth gem is available when using them):
35
+ There is also an `auth_require_ssl` method, which takes true/false values and is used to construct `auth_uri`. It returns `true` in production and `false` in all other environments.
34
36
 
35
37
  ```ruby
36
- Exvo::Helpers.auth_host => 'exvo.auth.local'
37
- Exvo::Helpers.auth_uri => 'http://exvo.auth.local'
38
+ Exvo::Helpers.auth_require_ssl => false
38
39
  ```
39
40
 
40
41
 
41
- ### Overwriting
42
+ ### Overwriting the defaults
42
43
 
43
- There are two ways to do it. One is by the means of ENV variables (preferred one):
44
+ There are two ways to do it. One is by the means of ENV variables (the preferred method):
44
45
 
45
46
  ```ruby
46
- ENV['CDN_HOST'] = 'test.cdn.exvo.com'
47
- ENV['CFS_HOST'] = 'test.cfs.exvo.com'
48
- ENV['DESKTOP_HOST'] = 'test.exvo.com'
49
- ENV['THEMES_HOST'] = 'test.themes.exvo.com'
50
- ENV['BLOG_HOST'] = 'test.blog.exvo.local'
51
- ENV['CONTACTS_HOST'] = 'test.contacts.exvo.local'
52
- ENV['INBOX_HOST'] = 'test.inbox.exvo.local'
53
- ENV['MUSIC_HOST'] = 'test.music.exvo.local'
54
- ENV['PICS_HOST'] = 'test.pics.exvo.local'
55
- ENV['PREVIEW_HOST'] = 'test.preview.exvo.local'
47
+ ENV['AUTH_REQUIRE_SSL'] = 'true'
48
+ ENV['AUTH_HOST'] = 'test.auth.exvo.com'
49
+ ENV['CDN_HOST'] = 'test.cdn.exvo.com'
50
+ ENV['CFS_HOST'] = 'test.cfs.exvo.com'
51
+ ENV['DESKTOP_HOST'] = 'test.exvo.com'
52
+ ENV['THEMES_HOST'] = 'test.themes.exvo.com'
53
+ ENV['BLOG_HOST'] = 'test.blog.exvo.local'
54
+ ENV['CONTACTS_HOST'] = 'test.contacts.exvo.local'
55
+ ENV['INBOX_HOST'] = 'test.inbox.exvo.local'
56
+ ENV['MUSIC_HOST'] = 'test.music.exvo.local'
57
+ ENV['PICS_HOST'] = 'test.pics.exvo.local'
58
+ ENV['PREVIEW_HOST'] = 'test.preview.exvo.local'
56
59
  ```
57
60
 
58
61
  The other one is to set it in the application's config file:
59
62
 
60
63
  ```ruby
61
- Exvo::Helpers.cdn_host = 'test.cdn.exvo.com'
62
- Exvo::Helpers.cfs_host = 'test.cfs.exvo.com'
63
- Exvo::Helpers.desktop_host = 'test.exvo.com'
64
- Exvo::Helpers.themes_host = 'test.themes.exvo.com'
65
- Exvo::Helpers.blog_host = 'test.blog.exvo.local'
66
- Exvo::Helpers.contacts_host = 'test.contacts.exvo.local'
67
- Exvo::Helpers.inbox_host = 'test.inbox.exvo.local'
68
- Exvo::Helpers.music_host = 'test.music.exvo.local'
69
- Exvo::Helpers.pics_host = 'test.pics.exvo.local'
70
- Exvo::Helpers.preview_host = 'test.preview.exvo.local'
64
+ Exvo::Helpers.auth_require_ssl = true
65
+ Exvo::Helpers.auth_host = 'test.auth.exvo.com'
66
+ Exvo::Helpers.cdn_host = 'test.cdn.exvo.com'
67
+ Exvo::Helpers.cfs_host = 'test.cfs.exvo.com'
68
+ Exvo::Helpers.desktop_host = 'test.exvo.com'
69
+ Exvo::Helpers.themes_host = 'test.themes.exvo.com'
70
+ Exvo::Helpers.blog_host = 'test.blog.exvo.local'
71
+ Exvo::Helpers.contacts_host = 'test.contacts.exvo.local'
72
+ Exvo::Helpers.inbox_host = 'test.inbox.exvo.local'
73
+ Exvo::Helpers.music_host = 'test.music.exvo.local'
74
+ Exvo::Helpers.pics_host = 'test.pics.exvo.local'
75
+ Exvo::Helpers.preview_host = 'test.preview.exvo.local'
71
76
  ```
72
77
 
73
78
 
@@ -127,4 +132,4 @@ Note, that this helper does not support full API of Rails' `stylesheet_link_tag`
127
132
  ```
128
133
 
129
134
 
130
- Copyright © 2011 Exvo.com Development BV
135
+ Copyright © 2011-2012 Exvo.com Development BV, released under the MIT license
data/exvo_helpers.gemspec CHANGED
@@ -16,9 +16,11 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ["lib"]
18
18
 
19
- s.add_development_dependency 'rspec', ['>= 2.7']
20
- s.add_development_dependency 'guard', ['>= 0.8.0']
21
- s.add_development_dependency 'guard-rspec', ['>= 0.4.0']
19
+ s.add_development_dependency 'rspec', ['>= 2.8']
20
+ s.add_development_dependency 'guard', ['>= 0.10.0']
21
+ s.add_development_dependency 'guard-rspec', ['>= 0.6.0']
22
22
  s.add_development_dependency "rb-fsevent"
23
23
  s.add_development_dependency "rb-inotify"
24
+ s.add_development_dependency "simplecov"
25
+ s.add_development_dependency "simplecov-rcov"
24
26
  end
@@ -5,16 +5,24 @@ module Exvo
5
5
  # Dynamically define class methods
6
6
  class << self
7
7
 
8
- %w(cdn cfs desktop themes blog contacts inbox music pics preview).each do |service|
8
+ %w(auth cdn cfs desktop themes blog contacts inbox music pics preview).each do |service|
9
9
 
10
10
  # def self.cdn_uri
11
- # protocol = ["cdn", "cfs", "themes"].include?(service) && env.to_sym == :production ? "//" : "http://"
11
+ # protocol = 'http://'
12
+ # protocol = 'https://' if service == "auth" && auth_require_ssl
13
+ # protocol = '//' if ["cdn", "cfs", "themes"].include?(service) && env.to_sym == :production
12
14
  # protocol + cdn_host
13
15
  # end
14
16
  define_method "#{service}_uri" do
17
+ protocol = 'http://'
18
+
19
+ # explicit https for auth
20
+ protocol = 'https://' if service == "auth" && send(:auth_require_ssl)
21
+
15
22
  # special link starting with '//' in production so that the webserver can choose between HTTP and HTTPS
16
23
  # but only for those apps/services that have proper SSL support (i.e. valid certificates)
17
- protocol = ["cdn", "cfs", "themes"].include?(service) && env.to_sym == :production ? "//" : "http://"
24
+ protocol = '//' if ["cdn", "cfs", "themes"].include?(service) && env.to_sym == :production
25
+
18
26
  protocol + send("#{service}_host")
19
27
  end
20
28
 
@@ -45,21 +53,13 @@ module Exvo
45
53
 
46
54
  # AUTH
47
55
 
48
- # pass-in to the ExvoAuth gem
49
- def self.auth_uri
50
- if defined?(ExvoAuth::Config) and ExvoAuth::Config.respond_to?('uri')
51
- ExvoAuth::Config.uri
52
- else
53
- raise "Exvo.auth_uri method is available only when exvo-auth gem is available"
54
- end
56
+ def self.auth_require_ssl
57
+ return @@auth_require_ssl if defined?(@@auth_require_ssl) && !@@auth_require_ssl.nil?
58
+ @@auth_require_ssl = (ENV['AUTH_REQUIRE_SSL'] == 'true') || default_opts[env.to_sym][:auth_require_ssl]
55
59
  end
56
60
 
57
- def self.auth_host
58
- if defined?(ExvoAuth::Config) and ExvoAuth::Config.respond_to?('host')
59
- ExvoAuth::Config.host
60
- else
61
- raise "Exvo.auth_host method is available only when exvo-auth gem is available"
62
- end
61
+ def self.auth_require_ssl=(require_ssl)
62
+ @@auth_require_ssl = require_ssl
63
63
  end
64
64
 
65
65
 
@@ -81,6 +81,8 @@ module Exvo
81
81
  def self.default_opts
82
82
  {
83
83
  :production => {
84
+ :auth_host => 'auth.exvo.com',
85
+ :auth_require_ssl => true,
84
86
  :cdn_host => 'd33gjlr95u9pgf.cloudfront.net', # cloudfront.net so we can use https (cdn.exvo.com via https does not work properly)
85
87
  :cfs_host => 'cfs.exvo.com',
86
88
  :desktop_host => 'www.exvo.com',
@@ -93,6 +95,8 @@ module Exvo
93
95
  :preview_host => 'preview.exvo.com'
94
96
  },
95
97
  :staging => {
98
+ :auth_host => 'staging.auth.exvo.com',
99
+ :auth_require_ssl => false,
96
100
  :cdn_host => 'd1by559a994699.cloudfront.net',
97
101
  :cfs_host => 'staging.cfs.exvo.com',
98
102
  :desktop_host => 'www.exvo.co',
@@ -105,6 +109,8 @@ module Exvo
105
109
  :preview_host => 'staging.preview.exvo.com'
106
110
  },
107
111
  :development => {
112
+ :auth_host => 'auth.exvo.local',
113
+ :auth_require_ssl => false,
108
114
  :cdn_host => 'www.exvo.local',
109
115
  :cfs_host => 'cfs.exvo.local',
110
116
  :desktop_host => 'www.exvo.local',
@@ -117,6 +123,8 @@ module Exvo
117
123
  :preview_host => 'preview.exvo.local'
118
124
  },
119
125
  :test => {
126
+ :auth_host => 'auth.exvo.local',
127
+ :auth_require_ssl => false,
120
128
  :cdn_host => 'www.exvo.local',
121
129
  :cfs_host => 'cfs.exvo.local',
122
130
  :desktop_host => 'www.exvo.local',
@@ -1,3 +1,3 @@
1
1
  module ExvoHelpers
2
- VERSION = "0.0.8"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -21,6 +21,7 @@ describe Exvo::Helpers do
21
21
  Exvo::Helpers.stub(:env).and_return('production')
22
22
  end
23
23
 
24
+ specify { Exvo::Helpers.auth_uri.should match('auth.exvo.com') }
24
25
  specify { Exvo::Helpers.cdn_uri.should match('d33gjlr95u9pgf.cloudfront.net') }
25
26
  specify { Exvo::Helpers.cfs_uri.should match('cfs.exvo.com') }
26
27
  specify { Exvo::Helpers.desktop_uri.should match('www.exvo.com') }
@@ -38,6 +39,7 @@ describe Exvo::Helpers do
38
39
  Exvo::Helpers.stub(:env).and_return('production')
39
40
  end
40
41
 
42
+ specify { Exvo::Helpers.auth_host.should match('auth.exvo.com') }
41
43
  specify { Exvo::Helpers.cdn_host.should eql('d33gjlr95u9pgf.cloudfront.net') }
42
44
  specify { Exvo::Helpers.cfs_host.should eql('cfs.exvo.com') }
43
45
  specify { Exvo::Helpers.desktop_host.should eql('www.exvo.com') }
@@ -63,6 +65,10 @@ describe Exvo::Helpers do
63
65
  end
64
66
 
65
67
  specify { Exvo::Helpers.cdn_host.should eql(cdn_host) }
68
+
69
+ after do
70
+ ENV["CDN_HOST"] = nil
71
+ end
66
72
  end
67
73
 
68
74
  describe "setting host directly overrides the defaults" do
@@ -74,26 +80,22 @@ describe Exvo::Helpers do
74
80
  end
75
81
 
76
82
  specify { Exvo::Helpers.cdn_host.should eql(cdn_host) }
77
- end
78
83
 
79
- describe "auth_host/auth_uri methods which pass to the ExvoAuth gem" do
80
- let(:host) { 'new.auth.exvo.com' }
81
- let(:uri) { "http://#{host}"}
82
-
83
- it "raises an error when ExvoAuth is not available" do
84
- expect { Exvo::Helpers.auth_uri }.to raise_error
85
- expect { Exvo::Helpers.auth_host }.to raise_error
84
+ after do
85
+ Exvo::Helpers.cdn_host = nil
86
86
  end
87
+ end
87
88
 
88
- it "passes to the ExvoAuth when it is available" do
89
- Kernel.const_set(:ExvoAuth, Module)
90
- ExvoAuth.const_set(:Config, Module)
89
+ describe "setting the auth_require_ssl directly overrides the default" do
90
+ before do
91
+ Exvo::Helpers.stub(:env).and_return('production')
92
+ Exvo::Helpers.auth_require_ssl = false
93
+ end
91
94
 
92
- ExvoAuth::Config.should_receive(:host).and_return(host)
93
- Exvo::Helpers.auth_host.should eql(host)
95
+ specify { Exvo::Helpers.auth_uri.should match(/http:\/\//) }
94
96
 
95
- ExvoAuth::Config.should_receive(:uri).and_return(uri)
96
- Exvo::Helpers.auth_uri.should eql(uri)
97
+ after do
98
+ Exvo::Helpers.auth_require_ssl = nil
97
99
  end
98
100
  end
99
101
 
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,8 @@
1
+ require 'simplecov'
2
+ require 'simplecov-rcov'
3
+ SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
4
+ SimpleCov.start
5
+
1
6
  $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
7
  $:.unshift(File.dirname(__FILE__))
3
8
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exvo_helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,44 +9,44 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-13 00:00:00.000000000Z
12
+ date: 2012-01-13 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &76965090 !ruby/object:Gem::Requirement
16
+ requirement: &78011280 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: '2.7'
21
+ version: '2.8'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *76965090
24
+ version_requirements: *78011280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: guard
27
- requirement: &76962330 !ruby/object:Gem::Requirement
27
+ requirement: &78011020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
- version: 0.8.0
32
+ version: 0.10.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *76962330
35
+ version_requirements: *78011020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: guard-rspec
38
- requirement: &76961760 !ruby/object:Gem::Requirement
38
+ requirement: &78010780 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
42
42
  - !ruby/object:Gem::Version
43
- version: 0.4.0
43
+ version: 0.6.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *76961760
46
+ version_requirements: *78010780
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rb-fsevent
49
- requirement: &76961230 !ruby/object:Gem::Requirement
49
+ requirement: &78010590 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *76961230
57
+ version_requirements: *78010590
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rb-inotify
60
- requirement: &76954540 !ruby/object:Gem::Requirement
60
+ requirement: &78010350 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,29 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *76954540
68
+ version_requirements: *78010350
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: &78010110 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *78010110
80
+ - !ruby/object:Gem::Dependency
81
+ name: simplecov-rcov
82
+ requirement: &78009840 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *78009840
69
91
  description: Ruby gem providing helper *_uri/*_host methods for Exvo services/apps
70
92
  like DESKTOP/CFS/AUTH/THEMES.
71
93
  email:
@@ -76,6 +98,7 @@ extra_rdoc_files: []
76
98
  files:
77
99
  - .gitignore
78
100
  - Gemfile
101
+ - MIT-LICENSE
79
102
  - README.md
80
103
  - Rakefile
81
104
  - exvo_helpers.gemspec
@@ -112,3 +135,4 @@ signing_key:
112
135
  specification_version: 3
113
136
  summary: host/uri helper methods for various Exvo services
114
137
  test_files: []
138
+ has_rdoc: