logical_model 0.3.7 → 0.4.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.
data/Gemfile CHANGED
@@ -3,14 +3,14 @@ source "http://rubygems.org"
3
3
 
4
4
  gem "activemodel"
5
5
  gem "activesupport"
6
- gem "typhoeus", '0.5.0.alpha'
7
- gem "ethon", "0.4.2"
6
+ gem "typhoeus", '0.5.3'
7
+ gem "ethon", "0.5.3"
8
8
  gem "kaminari", '~> 0.13.0'
9
9
 
10
10
  group :development, :test do
11
11
  gem 'activerecord'
12
12
  gem "shoulda"
13
- gem "bundler", "~> 1.1.3"
13
+ gem "bundler", "~> 1.2.2"
14
14
  gem "jeweler", "~> 1.6.4"
15
15
  gem "rcov"
16
16
  gem "sqlite3-ruby"
@@ -27,7 +27,7 @@ GEM
27
27
  builder (3.0.0)
28
28
  diff-lcs (1.1.3)
29
29
  erubis (2.7.0)
30
- ethon (0.4.2)
30
+ ethon (0.5.3)
31
31
  ffi (~> 1.0.11)
32
32
  mime-types (~> 1.18)
33
33
  ffi (1.0.11)
@@ -100,8 +100,8 @@ GEM
100
100
  sqlite3 (>= 1.3.3)
101
101
  thor (0.14.6)
102
102
  tilt (1.3.3)
103
- typhoeus (0.5.0.alpha)
104
- ethon (~> 0.4.2)
103
+ typhoeus (0.5.3)
104
+ ethon (~> 0.5.3)
105
105
  tzinfo (0.3.31)
106
106
 
107
107
  PLATFORMS
@@ -111,8 +111,8 @@ DEPENDENCIES
111
111
  activemodel
112
112
  activerecord
113
113
  activesupport
114
- bundler (~> 1.1.3)
115
- ethon (= 0.4.2)
114
+ bundler (~> 1.2.2)
115
+ ethon (= 0.5.3)
116
116
  gemcutter
117
117
  guard-rspec
118
118
  jeweler (~> 1.6.4)
@@ -125,4 +125,4 @@ DEPENDENCIES
125
125
  shoulda
126
126
  sinatra (~> 1.2.6)
127
127
  sqlite3-ruby
128
- typhoeus (= 0.5.0.alpha)
128
+ typhoeus (= 0.5.3)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.7
1
+ 0.4.0
@@ -4,6 +4,7 @@ require 'typhoeus'
4
4
  require 'active_support/all' # todo migrate to yajl
5
5
  require 'logger'
6
6
  require 'kaminari'
7
+ require 'ssl_support'
7
8
  require 'safe_log'
8
9
 
9
10
  # Logical Model, not persistant on DB, works through API. (replaces ActiveResource)
@@ -42,6 +43,7 @@ require 'safe_log'
42
43
  # RemoteResource#destroy
43
44
  class LogicalModel
44
45
 
46
+ include SslSupport
45
47
  extend SafeLog
46
48
 
47
49
  # include ActiveModel Modules that are usefull
@@ -75,12 +77,11 @@ class LogicalModel
75
77
  class << self
76
78
  attr_accessor :host, :hydra, :resource_path, :api_key, :api_key_name,
77
79
  :timeout, :retries,
78
- :use_ssl, :use_api_key, :enable_delete_multiple,
80
+ :use_api_key, :enable_delete_multiple,
79
81
  :json_root, :log_path
80
82
 
81
83
  def timeout; @timeout ||= DEFAULT_TIMEOUT; end
82
84
  def retries; @retries ||= DEFAULT_RETRIES; end
83
- def use_ssl; @use_ssl ||= false; end
84
85
  def log_path; @log_path ||= "log/logical_model.log"; end
85
86
  def use_api_key; @use_api_key ||= false; end
86
87
  def delete_multiple_enabled?; @enable_delete_multiple ||= false; end
@@ -106,9 +107,8 @@ class LogicalModel
106
107
  end
107
108
 
108
109
  def self.resource_uri(id=nil)
109
- prefix = (use_ssl)? "https://" : "http://"
110
110
  sufix = (id.nil?)? "" : "/#{id}"
111
- "#{prefix}#{host}#{resource_path}#{sufix}"
111
+ "#{url_protocol_prefix}#{host}#{resource_path}#{sufix}"
112
112
  end
113
113
 
114
114
  def initialize(attributes={})
@@ -0,0 +1,39 @@
1
+ module SslSupport
2
+
3
+ def self.included(base)
4
+ base.class.send(:attr_accessor, :use_ssl)
5
+ base.send(:include, InstanceMethods)
6
+ base.send(:extend, ClassMethods)
7
+ end
8
+
9
+ module InstanceMethods
10
+
11
+ end
12
+
13
+ module ClassMethods
14
+ ##
15
+ # Default use_ssl to ssl_recommend?
16
+ # @return [Boolean]
17
+ def use_ssl?
18
+ @use_ssl ||= ssl_recommended?
19
+ end
20
+
21
+ # @return [String]
22
+ def url_protocol_prefix
23
+ (use_ssl?)? "https://" : "http://"
24
+ end
25
+
26
+ # Returns true if ssl is recommended according to environment.
27
+ #
28
+ # - production, staging -> true
29
+ # - other -> false
30
+ #
31
+ # @return [Boolean]
32
+ def ssl_recommended?
33
+ ssl_recommended_environments = %W(production staging)
34
+ ssl_recommended_environments.include?(defined?(Rails)? Rails.env : ENV['RACK_ENV'] )
35
+ end
36
+ end
37
+
38
+
39
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "logical_model"
8
- s.version = "0.3.7"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dwayne Macgowan"]
12
- s.date = "2012-10-05"
12
+ s.date = "2012-11-30"
13
13
  s.description = "LogicalModel allows to use a resource as a model. It is based on web presentation http://www.slideshare.net/ihower/serviceoriented-design-and-implement-with-rails3"
14
14
  s.email = "dwaynemac@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  "db/migrate/001_create_users.rb",
34
34
  "lib/logical_model.rb",
35
35
  "lib/safe_log.rb",
36
+ "lib/ssl_support.rb",
36
37
  "lib/typhoeus_fix/array_decoder.rb",
37
38
  "logical_model.gemspec",
38
39
  "models/user.rb",
@@ -53,12 +54,12 @@ Gem::Specification.new do |s|
53
54
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
54
55
  s.add_runtime_dependency(%q<activemodel>, [">= 0"])
55
56
  s.add_runtime_dependency(%q<activesupport>, [">= 0"])
56
- s.add_runtime_dependency(%q<typhoeus>, ["= 0.5.0.alpha"])
57
- s.add_runtime_dependency(%q<ethon>, ["= 0.4.2"])
57
+ s.add_runtime_dependency(%q<typhoeus>, ["= 0.5.3"])
58
+ s.add_runtime_dependency(%q<ethon>, ["= 0.5.3"])
58
59
  s.add_runtime_dependency(%q<kaminari>, ["~> 0.13.0"])
59
60
  s.add_development_dependency(%q<activerecord>, [">= 0"])
60
61
  s.add_development_dependency(%q<shoulda>, [">= 0"])
61
- s.add_development_dependency(%q<bundler>, ["~> 1.1.3"])
62
+ s.add_development_dependency(%q<bundler>, ["~> 1.2.2"])
62
63
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
63
64
  s.add_development_dependency(%q<rcov>, [">= 0"])
64
65
  s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
@@ -72,12 +73,12 @@ Gem::Specification.new do |s|
72
73
  else
73
74
  s.add_dependency(%q<activemodel>, [">= 0"])
74
75
  s.add_dependency(%q<activesupport>, [">= 0"])
75
- s.add_dependency(%q<typhoeus>, ["= 0.5.0.alpha"])
76
- s.add_dependency(%q<ethon>, ["= 0.4.2"])
76
+ s.add_dependency(%q<typhoeus>, ["= 0.5.3"])
77
+ s.add_dependency(%q<ethon>, ["= 0.5.3"])
77
78
  s.add_dependency(%q<kaminari>, ["~> 0.13.0"])
78
79
  s.add_dependency(%q<activerecord>, [">= 0"])
79
80
  s.add_dependency(%q<shoulda>, [">= 0"])
80
- s.add_dependency(%q<bundler>, ["~> 1.1.3"])
81
+ s.add_dependency(%q<bundler>, ["~> 1.2.2"])
81
82
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
82
83
  s.add_dependency(%q<rcov>, [">= 0"])
83
84
  s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
@@ -92,12 +93,12 @@ Gem::Specification.new do |s|
92
93
  else
93
94
  s.add_dependency(%q<activemodel>, [">= 0"])
94
95
  s.add_dependency(%q<activesupport>, [">= 0"])
95
- s.add_dependency(%q<typhoeus>, ["= 0.5.0.alpha"])
96
- s.add_dependency(%q<ethon>, ["= 0.4.2"])
96
+ s.add_dependency(%q<typhoeus>, ["= 0.5.3"])
97
+ s.add_dependency(%q<ethon>, ["= 0.5.3"])
97
98
  s.add_dependency(%q<kaminari>, ["~> 0.13.0"])
98
99
  s.add_dependency(%q<activerecord>, [">= 0"])
99
100
  s.add_dependency(%q<shoulda>, [">= 0"])
100
- s.add_dependency(%q<bundler>, ["~> 1.1.3"])
101
+ s.add_dependency(%q<bundler>, ["~> 1.2.2"])
101
102
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
102
103
  s.add_dependency(%q<rcov>, [">= 0"])
103
104
  s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
@@ -147,7 +147,7 @@ describe "LogicalModel User client" do
147
147
  response = mock(
148
148
  code: 200,
149
149
  body: {}.to_json,
150
- request: mock(url: "server?keyname=secret_api_key"),
150
+ effective_url: "server?keyname=secret_api_key",
151
151
  time: 1234
152
152
  )
153
153
  Logger.any_instance.should_receive(:info).with(/\[SECRET\]/)
@@ -192,7 +192,7 @@ describe "LogicalModel User client" do
192
192
 
193
193
  describe "delete_multiple" do
194
194
  before do
195
- Typhoeus::Request.stub!(:delete).and_return(mock_response(body: 'ok'))
195
+ Typhoeus::Request.stub!(:delete).and_return(mock_response(body: 'ok', effective_url: 'mocked-url'))
196
196
  end
197
197
  context "when disabled" do
198
198
  it "should raise exception" do
@@ -15,7 +15,7 @@ module TyphoeusMocks
15
15
  collection: options[:collection] || [],
16
16
  total: options[:total] || 0
17
17
  }.to_json,
18
- request: mock(url: options[:url] || "mockedurl"),
18
+ effective_url: options[:url] || 'mockedurl',
19
19
  time: 1234
20
20
  )
21
21
  req.stub(:on_complete).and_yield(response)
@@ -32,6 +32,7 @@ module TyphoeusMocks
32
32
  response = mock(
33
33
  code: options[:status] || 200,
34
34
  body: options[:attributes].to_json,
35
+ effective_url: options[:url] || 'mockedurl',
35
36
  request: mock(url: options[:url] || "mockedurl"),
36
37
  time: 1234
37
38
  )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logical_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.4.0
5
5
  prerelease:
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: 2012-10-05 00:00:00.000000000 Z
12
+ date: 2012-11-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - '='
52
52
  - !ruby/object:Gem::Version
53
- version: 0.5.0.alpha
53
+ version: 0.5.3
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 0.5.0.alpha
61
+ version: 0.5.3
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: ethon
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: 0.4.2
69
+ version: 0.5.3
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 0.4.2
77
+ version: 0.5.3
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: kaminari
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -130,7 +130,7 @@ dependencies:
130
130
  requirements:
131
131
  - - ~>
132
132
  - !ruby/object:Gem::Version
133
- version: 1.1.3
133
+ version: 1.2.2
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
@@ -138,7 +138,7 @@ dependencies:
138
138
  requirements:
139
139
  - - ~>
140
140
  - !ruby/object:Gem::Version
141
- version: 1.1.3
141
+ version: 1.2.2
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: jeweler
144
144
  requirement: !ruby/object:Gem::Requirement
@@ -324,6 +324,7 @@ files:
324
324
  - db/migrate/001_create_users.rb
325
325
  - lib/logical_model.rb
326
326
  - lib/safe_log.rb
327
+ - lib/ssl_support.rb
327
328
  - lib/typhoeus_fix/array_decoder.rb
328
329
  - logical_model.gemspec
329
330
  - models/user.rb
@@ -346,7 +347,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
346
347
  version: '0'
347
348
  segments:
348
349
  - 0
349
- hash: 421922081
350
+ hash: 474549263
350
351
  required_rubygems_version: !ruby/object:Gem::Requirement
351
352
  none: false
352
353
  requirements: