vidibus-resource 0.0.6 → 0.0.7
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/README.rdoc
CHANGED
@@ -1,7 +1,16 @@
|
|
1
|
-
=
|
1
|
+
= Vidibus::Resource
|
2
2
|
|
3
3
|
Description goes here.
|
4
4
|
|
5
|
+
|
6
|
+
== TODO
|
7
|
+
|
8
|
+
* Write specs
|
9
|
+
* Allow an individual provider for each resource. Store resource provider and realm on consumer instance.
|
10
|
+
* Don't allow resource consumers without a realm. Ensure realm matches request.
|
11
|
+
* Allow multiple providers for one resource?
|
12
|
+
|
13
|
+
|
5
14
|
== Copyright
|
6
15
|
|
7
16
|
Copyright (c) 2011 Andre Pankratz. See LICENSE for details.
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# TODO: Split this file: one part for providers, one for consumers?
|
1
2
|
class Api::ResourcesController < ApiController
|
2
3
|
before_filter :ensure_klass
|
3
4
|
before_filter :find_instance
|
@@ -5,7 +6,7 @@ class Api::ResourcesController < ApiController
|
|
5
6
|
# Creates resource consumer on provider.
|
6
7
|
def create
|
7
8
|
@instance.add_resource_consumer(params["service"])
|
8
|
-
render
|
9
|
+
render(:json => {:resource => @instance.fixed_resourceable_hash})
|
9
10
|
end
|
10
11
|
|
11
12
|
# Updates resource on consumer.
|
@@ -15,27 +16,28 @@ class Api::ResourcesController < ApiController
|
|
15
16
|
render :nothing => true
|
16
17
|
rescue => e
|
17
18
|
Rails.logger.error 'Error while updating resource consumer: '+e.inspect
|
18
|
-
render
|
19
|
+
render(:json => {:error => e}, :status => :bad_request)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
22
23
|
# Removes a resource consumer from provider
|
24
|
+
# or remove a resource from a consumer.
|
23
25
|
def destroy
|
24
|
-
if @instance.
|
26
|
+
if @instance.respond_to?(:resource_consumers)
|
25
27
|
@instance.remove_resource_consumer(params["service"])
|
26
28
|
else
|
27
|
-
|
29
|
+
@instance.destroy_without_callback
|
28
30
|
end
|
29
31
|
render :nothing => true
|
30
32
|
end
|
31
33
|
|
32
|
-
|
34
|
+
private
|
33
35
|
|
34
36
|
def ensure_klass
|
35
37
|
begin
|
36
38
|
@klass = params[:klass].classify.constantize
|
37
39
|
rescue => e
|
38
|
-
render :json => {
|
40
|
+
render :json => {:error => e}, :status => :bad_request
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
@@ -44,6 +46,6 @@ class Api::ResourcesController < ApiController
|
|
44
46
|
if @klass.new.respond_to?(:realm_uuid)
|
45
47
|
result.and(:realm_uuid => params[:realm])
|
46
48
|
end
|
47
|
-
@instance = result.first or render(:
|
49
|
+
@instance = result.first or render(:json => {:error => "#{@klass} #{params[:uuid]} not found"}, :status => :not_found)
|
48
50
|
end
|
49
51
|
end
|
@@ -14,9 +14,11 @@ module Vidibus::Resource
|
|
14
14
|
index :uuid
|
15
15
|
validates :uuid, :uuid => true
|
16
16
|
|
17
|
+
attr_accessor :extinct
|
18
|
+
|
17
19
|
before_create :add_resource_consumer
|
18
20
|
before_save :set_resource_attributes
|
19
|
-
before_destroy :remove_resource_consumer
|
21
|
+
before_destroy :remove_resource_consumer, :unless => :extinct
|
20
22
|
end
|
21
23
|
|
22
24
|
# Registers this consumer with provider.
|
@@ -90,7 +92,12 @@ module Vidibus::Resource
|
|
90
92
|
true # ensure true!
|
91
93
|
end
|
92
94
|
|
93
|
-
|
95
|
+
def destroy_without_callback
|
96
|
+
self.extinct = true
|
97
|
+
destroy
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
94
101
|
|
95
102
|
# Fix empty arrays
|
96
103
|
def fix_resource_attributes(data)
|
@@ -10,7 +10,7 @@ module Vidibus::Resource
|
|
10
10
|
field :resourceable_hash_checksum, :type => Hash
|
11
11
|
|
12
12
|
before_update :update_resource_consumers
|
13
|
-
|
13
|
+
before_destroy :destroy_resource_consumers
|
14
14
|
end
|
15
15
|
|
16
16
|
# Adds given resource consumer.
|
@@ -49,7 +49,7 @@ module Vidibus::Resource
|
|
49
49
|
resourceable_hash
|
50
50
|
end
|
51
51
|
|
52
|
-
|
52
|
+
private
|
53
53
|
|
54
54
|
# Update resource consumers if significant changes were made.
|
55
55
|
# TODO: Send changes only (the resourceable ones)!
|
@@ -72,6 +72,20 @@ module Vidibus::Resource
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
75
|
+
|
76
|
+
# Removes this resource from consumers.
|
77
|
+
def destroy_resource_consumers
|
78
|
+
for service in resource_consumers
|
79
|
+
begin
|
80
|
+
::Service.discover(service, realm_uuid).delete("/api/resources/#{self.class.to_s.tableize}/#{uuid}")
|
81
|
+
rescue => e
|
82
|
+
Rails.logger.error "An error occurred while destroying resource consumer #{service}:"
|
83
|
+
Rails.logger.error e.inspect
|
84
|
+
errors = true
|
85
|
+
end
|
86
|
+
end
|
87
|
+
true unless errors # ensure true!
|
88
|
+
end
|
75
89
|
end
|
76
90
|
end
|
77
91
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vidibus-resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 7
|
10
|
+
version: 0.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Andr\xC3\xA9 Pankratz"
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-05-
|
18
|
+
date: 2011-05-06 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -176,7 +176,6 @@ extra_rdoc_files: []
|
|
176
176
|
files:
|
177
177
|
- .gitignore
|
178
178
|
- Gemfile
|
179
|
-
- Gemfile.lock
|
180
179
|
- LICENSE
|
181
180
|
- README.rdoc
|
182
181
|
- Rakefile
|
data/Gemfile.lock
DELETED
@@ -1,138 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
vidibus-resource (0.0.1)
|
5
|
-
rails (~> 3.0.0)
|
6
|
-
vidibus-api
|
7
|
-
vidibus-service
|
8
|
-
vidibus-uuid
|
9
|
-
|
10
|
-
GEM
|
11
|
-
remote: http://rubygems.org/
|
12
|
-
specs:
|
13
|
-
abstract (1.0.0)
|
14
|
-
actionmailer (3.0.3)
|
15
|
-
actionpack (= 3.0.3)
|
16
|
-
mail (~> 2.2.9)
|
17
|
-
actionpack (3.0.3)
|
18
|
-
activemodel (= 3.0.3)
|
19
|
-
activesupport (= 3.0.3)
|
20
|
-
builder (~> 2.1.2)
|
21
|
-
erubis (~> 2.6.6)
|
22
|
-
i18n (~> 0.4)
|
23
|
-
rack (~> 1.2.1)
|
24
|
-
rack-mount (~> 0.6.13)
|
25
|
-
rack-test (~> 0.5.6)
|
26
|
-
tzinfo (~> 0.3.23)
|
27
|
-
activemodel (3.0.3)
|
28
|
-
activesupport (= 3.0.3)
|
29
|
-
builder (~> 2.1.2)
|
30
|
-
i18n (~> 0.4)
|
31
|
-
activerecord (3.0.3)
|
32
|
-
activemodel (= 3.0.3)
|
33
|
-
activesupport (= 3.0.3)
|
34
|
-
arel (~> 2.0.2)
|
35
|
-
tzinfo (~> 0.3.23)
|
36
|
-
activeresource (3.0.3)
|
37
|
-
activemodel (= 3.0.3)
|
38
|
-
activesupport (= 3.0.3)
|
39
|
-
activesupport (3.0.3)
|
40
|
-
arel (2.0.7)
|
41
|
-
bson (1.1.5)
|
42
|
-
builder (2.1.2)
|
43
|
-
crack (0.1.8)
|
44
|
-
diff-lcs (1.1.2)
|
45
|
-
erubis (2.6.6)
|
46
|
-
abstract (>= 1.0.0)
|
47
|
-
httparty (0.6.1)
|
48
|
-
crack (= 0.1.8)
|
49
|
-
i18n (0.5.0)
|
50
|
-
json (1.4.6)
|
51
|
-
macaddr (1.0.0)
|
52
|
-
mail (2.2.14)
|
53
|
-
activesupport (>= 2.3.6)
|
54
|
-
i18n (>= 0.4.0)
|
55
|
-
mime-types (~> 1.16)
|
56
|
-
treetop (~> 1.4.8)
|
57
|
-
mime-types (1.16)
|
58
|
-
mongo (1.1.5)
|
59
|
-
bson (>= 1.1.5)
|
60
|
-
mongoid (2.0.0.rc.4)
|
61
|
-
activemodel (~> 3.0)
|
62
|
-
mongo (~> 1.1.5)
|
63
|
-
tzinfo (~> 0.3.22)
|
64
|
-
will_paginate (~> 3.0.pre)
|
65
|
-
polyglot (0.3.1)
|
66
|
-
rack (1.2.1)
|
67
|
-
rack-mount (0.6.13)
|
68
|
-
rack (>= 1.0.0)
|
69
|
-
rack-test (0.5.7)
|
70
|
-
rack (>= 1.0)
|
71
|
-
rails (3.0.3)
|
72
|
-
actionmailer (= 3.0.3)
|
73
|
-
actionpack (= 3.0.3)
|
74
|
-
activerecord (= 3.0.3)
|
75
|
-
activeresource (= 3.0.3)
|
76
|
-
activesupport (= 3.0.3)
|
77
|
-
bundler (~> 1.0)
|
78
|
-
railties (= 3.0.3)
|
79
|
-
railties (3.0.3)
|
80
|
-
actionpack (= 3.0.3)
|
81
|
-
activesupport (= 3.0.3)
|
82
|
-
rake (>= 0.8.7)
|
83
|
-
thor (~> 0.14.4)
|
84
|
-
rake (0.8.7)
|
85
|
-
rr (1.0.2)
|
86
|
-
rspec (2.0.1)
|
87
|
-
rspec-core (~> 2.0.1)
|
88
|
-
rspec-expectations (~> 2.0.1)
|
89
|
-
rspec-mocks (~> 2.0.1)
|
90
|
-
rspec-core (2.0.1)
|
91
|
-
rspec-expectations (2.0.1)
|
92
|
-
diff-lcs (>= 1.1.2)
|
93
|
-
rspec-mocks (2.0.1)
|
94
|
-
rspec-core (~> 2.0.1)
|
95
|
-
rspec-expectations (~> 2.0.1)
|
96
|
-
thor (0.14.6)
|
97
|
-
treetop (1.4.9)
|
98
|
-
polyglot (>= 0.3.1)
|
99
|
-
tzinfo (0.3.24)
|
100
|
-
uuid (2.3.1)
|
101
|
-
macaddr (~> 1.0)
|
102
|
-
vidibus-api (0.0.1)
|
103
|
-
vidibus-service
|
104
|
-
vidibus-core_extensions (0.3.15)
|
105
|
-
vidibus-secure (0.0.3)
|
106
|
-
activesupport (~> 3.0.0)
|
107
|
-
mongoid (~> 2.0.0.beta.20)
|
108
|
-
rack
|
109
|
-
vidibus-core_extensions
|
110
|
-
vidibus-service (0.0.4)
|
111
|
-
httparty
|
112
|
-
json
|
113
|
-
mongoid (~> 2.0.0.beta.20)
|
114
|
-
vidibus-core_extensions
|
115
|
-
vidibus-secure
|
116
|
-
vidibus-uuid
|
117
|
-
vidibus-validate_uri
|
118
|
-
vidibus-uuid (0.3.8)
|
119
|
-
mongoid (~> 2.0.0.beta.20)
|
120
|
-
uuid (~> 2.3.1)
|
121
|
-
vidibus-validate_uri (0.1.4)
|
122
|
-
rails (~> 3.0.0)
|
123
|
-
will_paginate (3.0.pre2)
|
124
|
-
|
125
|
-
PLATFORMS
|
126
|
-
ruby
|
127
|
-
|
128
|
-
DEPENDENCIES
|
129
|
-
bundler (>= 1.0.0)
|
130
|
-
rack-test
|
131
|
-
rails (~> 3.0.0)
|
132
|
-
rake
|
133
|
-
rr
|
134
|
-
rspec
|
135
|
-
vidibus-api
|
136
|
-
vidibus-resource!
|
137
|
-
vidibus-service
|
138
|
-
vidibus-uuid
|