courier 0.2.1 → 0.2.3
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/VERSION +1 -1
- data/courier.gemspec +3 -3
- data/lib/courier/config.rb +2 -2
- data/lib/courier/owner.rb +3 -7
- data/lib/courier/service/facebook.rb +20 -10
- data/spec/courier/message_spec.rb +0 -6
- data/spec/courier/service/facebook_spec.rb +15 -4
- data/spec/support/gems_simulation.rb +2 -1
- metadata +31 -31
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
data/courier.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{courier}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Danil Pismenny"]
|
12
|
-
s.date = %q{2011-04-
|
12
|
+
s.date = %q{2011-04-19}
|
13
13
|
s.description = %q{Система управления пользовательскими оповещениями и подписками}
|
14
14
|
s.email = %q{danil@orionet.ru}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -67,7 +67,7 @@ Gem::Specification.new do |s|
|
|
67
67
|
s.homepage = %q{http://github.com/dapi/courier}
|
68
68
|
s.licenses = ["MIT"]
|
69
69
|
s.require_paths = ["lib"]
|
70
|
-
s.rubygems_version = %q{1.6.
|
70
|
+
s.rubygems_version = %q{1.6.2}
|
71
71
|
s.summary = %q{Система управления пользовательскими оповещениями и подписками}
|
72
72
|
s.test_files = [
|
73
73
|
"spec/controllers/courier_settings_controller_spec.rb",
|
data/lib/courier/config.rb
CHANGED
@@ -26,7 +26,7 @@ class Courier::Config
|
|
26
26
|
|
27
27
|
def get_service name
|
28
28
|
name=name.to_sym
|
29
|
-
services_hash[name] or raise "No such service '#{name}'"
|
29
|
+
services_hash[name] or raise "No such service '#{name}'. Specify it by Courier.init in ./config/initializers/courier.rb"
|
30
30
|
end
|
31
31
|
|
32
32
|
def template name, *sets
|
@@ -42,7 +42,7 @@ class Courier::Config
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def get_template key
|
45
|
-
templates_hash[key.to_sym] or raise "No such template '#{key}'"
|
45
|
+
templates_hash[key.to_sym] or raise "No such template '#{key}'. Specify it by Courier.init in ./config/initializers/courier.rb"
|
46
46
|
end
|
47
47
|
|
48
48
|
def class_of_service(name)
|
data/lib/courier/owner.rb
CHANGED
@@ -1,13 +1,9 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
|
4
|
-
#
|
5
|
-
|
6
|
-
# Подключается через `acts_as_sender` дает модели метод `message(key, options)`. Пример вызова:
|
7
|
-
|
3
|
+
# Подключается через `has_courier` дает модели метод `message(key, options)`. Пример вызова:
|
4
|
+
#
|
8
5
|
# @@@
|
9
|
-
# user.
|
10
|
-
# user.notify_failure :cant_import_plans, :provider=>:facebook
|
6
|
+
# user.message :comments_in_my_plan, :comments=>@comments, :level=>:success
|
11
7
|
# @@@
|
12
8
|
|
13
9
|
|
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
class Courier::Service::Facebook < Courier::Service::Base
|
4
4
|
|
5
|
+
FACEBOOK_PROPERTY_ATTRS = [:from, :to, :picture, :link, :name, :caption, :description, :message,
|
6
|
+
:source, :icon, :attribution, :actions, :privacy, :targeting]
|
7
|
+
|
5
8
|
def initialize
|
6
9
|
raise "No Koala defined. Add gem 'koala' to your Gemfile. " unless defined? Koala
|
7
10
|
attr_accessor={}
|
@@ -13,15 +16,22 @@ class Courier::Service::Facebook < Courier::Service::Base
|
|
13
16
|
# http://developers.facebook.com/docs/reference/api/post/
|
14
17
|
#
|
15
18
|
def deliver_message(message)
|
16
|
-
message.owner.
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
19
|
+
return true unless message.owner.facebook_id
|
20
|
+
|
21
|
+
args = message.options[:facebook_properties] || message.options.slice(FACEBOOK_PROPERTY_ATTRS)
|
22
|
+
|
23
|
+
args[:message] ||= message.options[:text] || Courier.template(message.template).
|
24
|
+
get_text(message.service, message.options)
|
25
|
+
|
26
|
+
token = args[:token]
|
27
|
+
token ||= message.owner.facebook_token if message.owner.respond_to?(:facebook_token)
|
28
|
+
|
29
|
+
return nil unless token
|
30
|
+
|
31
|
+
to = args[:to] || (message.owner.respond_to?(:facebook_id) ? message.owner.facebook_id : nil) || 'me'
|
32
|
+
|
33
|
+
# Settings.omniauth.facebook.app_id, Settings.omniauth.facebook.secret
|
34
|
+
# Это post_on_wall
|
35
|
+
Koala::Facebook::GraphAPI.new(token).put_object(to, "feed", args)
|
26
36
|
end
|
27
37
|
end
|
@@ -3,19 +3,30 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe Courier::Service::Facebook do
|
5
5
|
describe '#deliver!' do
|
6
|
+
before do
|
7
|
+
@owner = mock_owner :facebook_id=>123
|
8
|
+
end
|
9
|
+
let(:owner) { @owner }
|
10
|
+
let(:message) { mock_message :owner=>owner, :options=>{:text=>'text'} }
|
11
|
+
|
6
12
|
it 'posts messages with Koala' do
|
7
|
-
owner
|
13
|
+
owner.stub(:facebook_token) { 'fbtoken' }
|
8
14
|
|
9
|
-
message = mock_message :owner=>owner, :options=>{:text=>'text'}
|
10
15
|
message.should_receive(:mark_as_delivered!)
|
11
16
|
|
12
17
|
graph = double
|
13
|
-
graph.should_receive(:put_object).
|
14
|
-
with('me','feed',{:message=>'text'}) { true }
|
18
|
+
graph.should_receive(:put_object).with(123,'feed',{:message=>'text'}) { true }
|
15
19
|
Koala::Facebook::GraphAPI.should_receive(:new).with('fbtoken') { graph }
|
16
20
|
|
17
21
|
subject.stub_chain('messages.fresh') { [message] }
|
18
22
|
subject.deliver_all!
|
19
23
|
end
|
24
|
+
|
25
|
+
it 'do nothing if there is no token' do
|
26
|
+
Koala::Facebook::GraphAPI.should_not_receive(:new)
|
27
|
+
|
28
|
+
subject.stub_chain('messages.fresh') { [message] }
|
29
|
+
subject.deliver_all!
|
30
|
+
end
|
20
31
|
end
|
21
32
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: courier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 3
|
10
|
+
version: 0.2.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Danil Pismenny
|
@@ -15,10 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-19 00:00:00 +04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
+
type: :runtime
|
22
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
24
|
none: false
|
24
25
|
requirements:
|
@@ -29,11 +30,11 @@ dependencies:
|
|
29
30
|
- 3
|
30
31
|
- 0
|
31
32
|
version: "3.0"
|
32
|
-
version_requirements: *id001
|
33
33
|
name: rails
|
34
|
+
version_requirements: *id001
|
34
35
|
prerelease: false
|
35
|
-
type: :runtime
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
+
type: :runtime
|
37
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
39
|
none: false
|
39
40
|
requirements:
|
@@ -45,11 +46,11 @@ dependencies:
|
|
45
46
|
- 10
|
46
47
|
- 2
|
47
48
|
version: 0.10.2
|
48
|
-
version_requirements: *id002
|
49
49
|
name: state_machine
|
50
|
+
version_requirements: *id002
|
50
51
|
prerelease: false
|
51
|
-
type: :runtime
|
52
52
|
- !ruby/object:Gem::Dependency
|
53
|
+
type: :development
|
53
54
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
55
|
none: false
|
55
56
|
requirements:
|
@@ -59,11 +60,11 @@ dependencies:
|
|
59
60
|
segments:
|
60
61
|
- 0
|
61
62
|
version: "0"
|
62
|
-
version_requirements: *id003
|
63
63
|
name: pg
|
64
|
+
version_requirements: *id003
|
64
65
|
prerelease: false
|
65
|
-
type: :development
|
66
66
|
- !ruby/object:Gem::Dependency
|
67
|
+
type: :development
|
67
68
|
requirement: &id004 !ruby/object:Gem::Requirement
|
68
69
|
none: false
|
69
70
|
requirements:
|
@@ -73,11 +74,11 @@ dependencies:
|
|
73
74
|
segments:
|
74
75
|
- 0
|
75
76
|
version: "0"
|
76
|
-
version_requirements: *id004
|
77
77
|
name: ruby-debug
|
78
|
+
version_requirements: *id004
|
78
79
|
prerelease: false
|
79
|
-
type: :development
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
|
+
type: :development
|
81
82
|
requirement: &id005 !ruby/object:Gem::Requirement
|
82
83
|
none: false
|
83
84
|
requirements:
|
@@ -87,11 +88,11 @@ dependencies:
|
|
87
88
|
segments:
|
88
89
|
- 0
|
89
90
|
version: "0"
|
90
|
-
version_requirements: *id005
|
91
91
|
name: watchr
|
92
|
+
version_requirements: *id005
|
92
93
|
prerelease: false
|
93
|
-
type: :development
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
|
+
type: :development
|
95
96
|
requirement: &id006 !ruby/object:Gem::Requirement
|
96
97
|
none: false
|
97
98
|
requirements:
|
@@ -101,11 +102,11 @@ dependencies:
|
|
101
102
|
segments:
|
102
103
|
- 0
|
103
104
|
version: "0"
|
104
|
-
version_requirements: *id006
|
105
105
|
name: sqlite3
|
106
|
+
version_requirements: *id006
|
106
107
|
prerelease: false
|
107
|
-
type: :development
|
108
108
|
- !ruby/object:Gem::Dependency
|
109
|
+
type: :development
|
109
110
|
requirement: &id007 !ruby/object:Gem::Requirement
|
110
111
|
none: false
|
111
112
|
requirements:
|
@@ -115,11 +116,11 @@ dependencies:
|
|
115
116
|
segments:
|
116
117
|
- 0
|
117
118
|
version: "0"
|
118
|
-
version_requirements: *id007
|
119
119
|
name: factory_girl
|
120
|
+
version_requirements: *id007
|
120
121
|
prerelease: false
|
121
|
-
type: :development
|
122
122
|
- !ruby/object:Gem::Dependency
|
123
|
+
type: :development
|
123
124
|
requirement: &id008 !ruby/object:Gem::Requirement
|
124
125
|
none: false
|
125
126
|
requirements:
|
@@ -129,11 +130,11 @@ dependencies:
|
|
129
130
|
segments:
|
130
131
|
- 0
|
131
132
|
version: "0"
|
132
|
-
version_requirements: *id008
|
133
133
|
name: shoulda
|
134
|
+
version_requirements: *id008
|
134
135
|
prerelease: false
|
135
|
-
type: :development
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
|
+
type: :development
|
137
138
|
requirement: &id009 !ruby/object:Gem::Requirement
|
138
139
|
none: false
|
139
140
|
requirements:
|
@@ -144,11 +145,11 @@ dependencies:
|
|
144
145
|
- 2
|
145
146
|
- 5
|
146
147
|
version: "2.5"
|
147
|
-
version_requirements: *id009
|
148
148
|
name: rspec
|
149
|
+
version_requirements: *id009
|
149
150
|
prerelease: false
|
150
|
-
type: :development
|
151
151
|
- !ruby/object:Gem::Dependency
|
152
|
+
type: :development
|
152
153
|
requirement: &id010 !ruby/object:Gem::Requirement
|
153
154
|
none: false
|
154
155
|
requirements:
|
@@ -158,11 +159,11 @@ dependencies:
|
|
158
159
|
segments:
|
159
160
|
- 0
|
160
161
|
version: "0"
|
161
|
-
version_requirements: *id010
|
162
162
|
name: rspec-rails
|
163
|
+
version_requirements: *id010
|
163
164
|
prerelease: false
|
164
|
-
type: :development
|
165
165
|
- !ruby/object:Gem::Dependency
|
166
|
+
type: :development
|
166
167
|
requirement: &id011 !ruby/object:Gem::Requirement
|
167
168
|
none: false
|
168
169
|
requirements:
|
@@ -174,11 +175,11 @@ dependencies:
|
|
174
175
|
- 0
|
175
176
|
- 0
|
176
177
|
version: 1.0.0
|
177
|
-
version_requirements: *id011
|
178
178
|
name: bundler
|
179
|
+
version_requirements: *id011
|
179
180
|
prerelease: false
|
180
|
-
type: :development
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
+
type: :development
|
182
183
|
requirement: &id012 !ruby/object:Gem::Requirement
|
183
184
|
none: false
|
184
185
|
requirements:
|
@@ -190,11 +191,11 @@ dependencies:
|
|
190
191
|
- 5
|
191
192
|
- 2
|
192
193
|
version: 1.5.2
|
193
|
-
version_requirements: *id012
|
194
194
|
name: jeweler
|
195
|
+
version_requirements: *id012
|
195
196
|
prerelease: false
|
196
|
-
type: :development
|
197
197
|
- !ruby/object:Gem::Dependency
|
198
|
+
type: :development
|
198
199
|
requirement: &id013 !ruby/object:Gem::Requirement
|
199
200
|
none: false
|
200
201
|
requirements:
|
@@ -204,10 +205,9 @@ dependencies:
|
|
204
205
|
segments:
|
205
206
|
- 0
|
206
207
|
version: "0"
|
207
|
-
version_requirements: *id013
|
208
208
|
name: rcov
|
209
|
+
version_requirements: *id013
|
209
210
|
prerelease: false
|
210
|
-
type: :development
|
211
211
|
description: !binary |
|
212
212
|
0KHQuNGB0YLQtdC80LAg0YPQv9GA0LDQstC70LXQvdC40Y8g0L/QvtC70YzQ
|
213
213
|
t9C+0LLQsNGC0LXQu9GM0YHQutC40LzQuCDQvtC/0L7QstC10YnQtdC90LjR
|
@@ -298,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
298
298
|
requirements: []
|
299
299
|
|
300
300
|
rubyforge_project:
|
301
|
-
rubygems_version: 1.6.
|
301
|
+
rubygems_version: 1.6.2
|
302
302
|
signing_key:
|
303
303
|
specification_version: 3
|
304
304
|
summary: !binary |
|