governor_livejournal 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -8,7 +8,7 @@ source "http://rubygems.org"
8
8
 
9
9
  gem 'livejournal'
10
10
  gem 'governor'
11
- gem 'governor_background'
11
+ gem 'governor_background', '>= 0.3.0'
12
12
 
13
13
  group :development, :test do
14
14
  gem 'jeweler', '~> 1.5.2'
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: ./
3
3
  specs:
4
- governor_livejournal (0.2.0)
4
+ governor_livejournal (0.2.1)
5
5
  governor
6
- governor_background
6
+ governor_background (>= 0.3.0)
7
7
  livejournal
8
8
 
9
9
  GEM
@@ -60,7 +60,7 @@ GEM
60
60
  git (1.2.5)
61
61
  governor (0.3.1)
62
62
  rails (~> 3.0.5)
63
- governor_background (0.1.0)
63
+ governor_background (0.3.0)
64
64
  governor
65
65
  i18n (0.5.0)
66
66
  jeweler (1.5.2)
@@ -100,7 +100,7 @@ GEM
100
100
  rspec-core (~> 2.5.0)
101
101
  rspec-expectations (~> 2.5.0)
102
102
  rspec-mocks (~> 2.5.0)
103
- rspec-core (2.5.1)
103
+ rspec-core (2.5.2)
104
104
  rspec-expectations (2.5.0)
105
105
  diff-lcs (~> 1.1.2)
106
106
  rspec-mocks (2.5.0)
@@ -129,7 +129,7 @@ DEPENDENCIES
129
129
  factory_girl (~> 2.0.0.beta)
130
130
  factory_girl_rails (~> 1.1.beta)
131
131
  governor
132
- governor_background
132
+ governor_background (>= 0.3.0)
133
133
  governor_livejournal!
134
134
  jeweler (~> 1.5.2)
135
135
  livejournal
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -1,5 +1,5 @@
1
1
  en:
2
2
  governor_background:
3
- post_to_livejournal_completed: '"%{resource}" was completed successfully.'
4
- post_to_livejournal_failed: '"%{resource}" could not be created: %{message}.'
5
- post_to_livejournal_killed: '"%{resource}" was interrupted: %{message}.'
3
+ livejournal_post_completed: 'Your article was successfully posted to LiveJournal.'
4
+ livejournal_post_failed: 'Unable to post to LiveJournal: %{message}.'
5
+ livejournal_post_killed: 'Your post to LiveJournal was interrupted: %{message}.'
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{governor_livejournal}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Liam Morley"]
12
- s.date = %q{2011-04-25}
12
+ s.date = %q{2011-05-15}
13
13
  s.description = %q{A plugin for the Rails 3-based Governor blogging system that posts and updates articles to LiveJournal.com.}
14
14
  s.email = %q{liam@carpeliam.com}
15
15
  s.extra_rdoc_files = [
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  "lib/generators/governor/templates/migrations/add_livejournal.rb",
34
34
  "lib/governor_livejournal.rb",
35
35
  "lib/governor_livejournal/instance_methods.rb",
36
+ "lib/governor_livejournal/livejournal.rb",
36
37
  "lib/governor_livejournal/rails.rb",
37
38
  "spec/governor_livejournal_spec.rb",
38
39
  "spec/rails_app/.gitignore",
@@ -141,7 +142,7 @@ Gem::Specification.new do |s|
141
142
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
142
143
  s.add_runtime_dependency(%q<livejournal>, [">= 0"])
143
144
  s.add_runtime_dependency(%q<governor>, [">= 0"])
144
- s.add_runtime_dependency(%q<governor_background>, [">= 0"])
145
+ s.add_runtime_dependency(%q<governor_background>, [">= 0.3.0"])
145
146
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
146
147
  s.add_development_dependency(%q<sqlite3>, [">= 0"])
147
148
  s.add_development_dependency(%q<rspec-rails>, [">= 0"])
@@ -157,7 +158,7 @@ Gem::Specification.new do |s|
157
158
  else
158
159
  s.add_dependency(%q<livejournal>, [">= 0"])
159
160
  s.add_dependency(%q<governor>, [">= 0"])
160
- s.add_dependency(%q<governor_background>, [">= 0"])
161
+ s.add_dependency(%q<governor_background>, [">= 0.3.0"])
161
162
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
162
163
  s.add_dependency(%q<sqlite3>, [">= 0"])
163
164
  s.add_dependency(%q<rspec-rails>, [">= 0"])
@@ -174,7 +175,7 @@ Gem::Specification.new do |s|
174
175
  else
175
176
  s.add_dependency(%q<livejournal>, [">= 0"])
176
177
  s.add_dependency(%q<governor>, [">= 0"])
177
- s.add_dependency(%q<governor_background>, [">= 0"])
178
+ s.add_dependency(%q<governor_background>, [">= 0.3.0"])
178
179
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
179
180
  s.add_dependency(%q<sqlite3>, [">= 0"])
180
181
  s.add_dependency(%q<rspec-rails>, [">= 0"])
@@ -1,4 +1,5 @@
1
1
  require 'governor_livejournal/rails'
2
+ require 'governor_livejournal/livejournal'
2
3
  require 'governor_livejournal/instance_methods'
3
4
 
4
5
  livejournal = Governor::Plugin.new('livejournal')
@@ -17,6 +18,21 @@ livejournal.register_partial :bottom_of_form, 'articles/livejournal_form'
17
18
 
18
19
  Governor::PluginManager.register livejournal
19
20
 
21
+ GovernorBackground.register('livejournal_post') do |article|
22
+ lj = GovernorLivejournal::Livejournal.new(article)
23
+ id = if article.livejournal_id.blank?
24
+ lj.post
25
+ else
26
+ lj.put
27
+ end
28
+ article.reload.update_attribute :livejournal_id, id
29
+ end
30
+
31
+ GovernorBackground.register('livejournal_delete') do |livejournal_id|
32
+ lj = GovernorLivejournal::Livejournal.new(livejournal_id)
33
+ lj.delete
34
+ end
35
+
20
36
  module GovernorLivejournal
21
37
  class Configuration
22
38
  cattr_accessor :username, :password
@@ -1,53 +1,11 @@
1
- require 'livejournal'
2
1
  module GovernorLivejournal
3
2
  module InstanceMethods
4
- def post_to_livejournal
5
- user = ljlogin
6
- if livejournal_id.blank?
7
- entry = populate_entry(LiveJournal::Entry.new)
8
- post_event = LiveJournal::Request::PostEvent.new(user, entry)
9
- post_event.run
10
-
11
- self.update_attribute :livejournal_id, entry.itemid
12
- else
13
- get_events = LiveJournal::Request::GetEvents.new(user, :itemid => livejournal_id)
14
- entry = populate_entry(get_events.run)
15
- edit_event = LiveJournal::Request::EditEvent.new(user, entry)
16
- edit_event.run
17
- end
18
- end
19
-
20
- def remove_from_livejournal
21
- user = ljlogin
22
- get_events = LiveJournal::Request::GetEvents.new(user, :itemid => livejournal_id)
23
- entry = get_events.run
24
- delete_event = LiveJournal::Request::EditEvent.new(user, entry, :delete => true)
25
- delete_event.run
26
- end
27
-
28
3
  def post_to_livejournal_in_background
29
- run_in_background :post_to_livejournal
4
+ GovernorBackground.run('livejournal_post', self)
30
5
  end
31
6
 
32
7
  def remove_from_livejournal_in_background
33
- run_in_background :remove_from_livejournal
34
- end
35
-
36
- private
37
- def ljlogin
38
- user = LiveJournal::User.new(GovernorLivejournal.config.username, GovernorLivejournal.config.password)
39
- login = LiveJournal::Request::Login.new(user)
40
- login.run
41
- user
42
- end
43
-
44
- def populate_entry(entry)
45
- entry.subject = self.title
46
- entry.event = Governor::Formatters.format_article self
47
- entry.time = LiveJournal::coerce_gmt(self.created_at.present? ? self.created_at : Time.now)
48
- entry.preformatted = false
49
- entry.security = livejournal_security.to_sym
50
- entry
8
+ GovernorBackground.run('livejournal_delete', livejournal_id)
51
9
  end
52
10
  end
53
11
  end
@@ -0,0 +1,50 @@
1
+ require 'livejournal'
2
+ module GovernorLivejournal
3
+ class Livejournal
4
+ include ::LiveJournal
5
+ def initialize(article_or_entry_id)
6
+ @article = article_or_entry_id
7
+ @user = User.new(GovernorLivejournal.config.username, GovernorLivejournal.config.password)
8
+ login = Request::Login.new(@user)
9
+ login.run
10
+ end
11
+
12
+ def post
13
+ entry = populate_entry(Entry.new)
14
+ post_event = Request::PostEvent.new(@user, entry)
15
+ post_event.run
16
+ entry.itemid
17
+ end
18
+
19
+ def get
20
+ get_events = Request::GetEvents.new(@user, :itemid => livejournal_id)
21
+ get_events.run
22
+ end
23
+
24
+ def put
25
+ entry = populate_entry(get)
26
+ edit_event = Request::EditEvent.new(@user, entry)
27
+ edit_event.run
28
+ entry.itemid
29
+ end
30
+
31
+ def delete
32
+ delete_event = Request::EditEvent.new(@user, get, :delete => true)
33
+ delete_event.run
34
+ end
35
+
36
+ private
37
+ def livejournal_id
38
+ @article.respond_to?(:livejournal_id) ? @article.livejournal_id : @article
39
+ end
40
+
41
+ def populate_entry(entry)
42
+ entry.subject = @article.title
43
+ entry.event = Governor::Formatters.format_article @article
44
+ entry.time = LiveJournal::coerce_gmt(@article.created_at.present? ? @article.created_at : Time.now)
45
+ entry.preformatted = false
46
+ entry.security = @article.livejournal_security.to_sym
47
+ entry
48
+ end
49
+ end
50
+ end
@@ -4,4 +4,38 @@ describe GovernorLivejournal do
4
4
  it "registers the plugin" do
5
5
  Governor::PluginManager.plugins.size == 1
6
6
  end
7
+
8
+ it "registers a job with GovernorBackground" do
9
+ GovernorBackground.retrieve('livejournal_post').should_not be_blank
10
+ end
11
+
12
+ it "can post to livejournal" do
13
+ article = get_article
14
+ article.livejournal_id.should == 12345
15
+ end
16
+
17
+ it "can update livejournal" do
18
+ article = get_article
19
+ lj = mock()
20
+ GovernorLivejournal::Livejournal.expects(:new).with(article).returns lj
21
+ lj.expects(:put).returns 12345
22
+ article.update_attribute :title, "Some new title"
23
+ end
24
+
25
+ it "can delete from livejournal" do
26
+ article = get_article
27
+ lj = mock()
28
+ GovernorLivejournal::Livejournal.expects(:new).with(12345).returns lj
29
+ lj.expects(:delete)
30
+ article.destroy
31
+ end
32
+
33
+ def get_article
34
+ article = Factory.build(:article, :is_livejournal => true, :author => Factory(:user))
35
+ lj = mock()
36
+ GovernorLivejournal::Livejournal.expects(:new).with(article).returns lj
37
+ lj.expects(:post).returns 12345
38
+ article.save
39
+ article
40
+ end
7
41
  end
@@ -10,7 +10,7 @@ gem 'sqlite3'
10
10
  gem 'devise'
11
11
  gem 'delayed_job'
12
12
  gem 'governor'
13
- gem 'governor_background'
13
+ gem 'governor_background', '0.3.0'
14
14
  gem 'governor_livejournal', :path => '../..'
15
15
 
16
16
  gem 'dynamic_form'
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- governor_livejournal (0.2.0)
4
+ governor_livejournal (0.2.1)
5
5
  governor
6
- governor_background
6
+ governor_background (>= 0.3.0)
7
7
  livejournal
8
8
 
9
9
  GEM
@@ -52,7 +52,7 @@ GEM
52
52
  abstract (>= 1.0.0)
53
53
  governor (0.3.1)
54
54
  rails (~> 3.0.5)
55
- governor_background (0.1.0)
55
+ governor_background (0.3.0)
56
56
  governor
57
57
  i18n (0.5.0)
58
58
  livejournal (0.3.4)
@@ -100,7 +100,7 @@ DEPENDENCIES
100
100
  devise
101
101
  dynamic_form
102
102
  governor
103
- governor_background
103
+ governor_background (= 0.3.0)
104
104
  governor_livejournal!
105
105
  rails (= 3.0.5)
106
106
  sqlite3
@@ -1,2 +1,2 @@
1
- GovernorLivejournal.config.username = ''
2
- GovernorLivejournal.config.password = ''
1
+ GovernorLivejournal.config.username = 'user'
2
+ GovernorLivejournal.config.password = 'password'
@@ -1,9 +1,17 @@
1
1
  class GovernorAddLivejournal < ActiveRecord::Migration
2
2
  def self.up
3
- add_column :articles, :livejournal_id, :integer
3
+ change_table :articles do |t|
4
+ t.boolean :is_livejournal
5
+ t.string :livejournal_security, :default => 'public'
6
+ t.references :livejournal
7
+ end
4
8
  end
5
9
 
6
10
  def self.down
7
- remove_column :articles, :livejournal_id
11
+ change_table :articles do |t|
12
+ t.remove :is_livejournal
13
+ t.remove :livejournal_security
14
+ t.remove :livejournal_id
15
+ end
8
16
  end
9
17
  end
@@ -15,12 +15,14 @@ ActiveRecord::Schema.define(:version => 20110425023749) do
15
15
  create_table "articles", :force => true do |t|
16
16
  t.string "title"
17
17
  t.string "description"
18
- t.string "format", :default => "default"
18
+ t.string "format", :default => "default"
19
19
  t.text "post"
20
20
  t.integer "author_id"
21
21
  t.string "author_type"
22
22
  t.datetime "created_at"
23
23
  t.datetime "updated_at"
24
+ t.boolean "is_livejournal"
25
+ t.string "livejournal_security", :default => "public"
24
26
  t.integer "livejournal_id"
25
27
  end
26
28
 
data/spec/spec_helper.rb CHANGED
@@ -33,4 +33,11 @@ module Governor
33
33
  end
34
34
  end
35
35
  end
36
+ end
37
+
38
+ # get GovernorBackground to run jobs directly
39
+ module GovernorBackground
40
+ def self.run(job_name, *arguments)
41
+ retrieve(job_name).call(*arguments)
42
+ end
36
43
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: governor_livejournal
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Liam Morley
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-25 00:00:00 -04:00
18
+ date: 2011-05-15 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -55,10 +55,12 @@ dependencies:
55
55
  requirements:
56
56
  - - ">="
57
57
  - !ruby/object:Gem::Version
58
- hash: 3
58
+ hash: 19
59
59
  segments:
60
60
  - 0
61
- version: "0"
61
+ - 3
62
+ - 0
63
+ version: 0.3.0
62
64
  requirement: *id003
63
65
  - !ruby/object:Gem::Dependency
64
66
  type: :development
@@ -263,6 +265,7 @@ files:
263
265
  - lib/generators/governor/templates/migrations/add_livejournal.rb
264
266
  - lib/governor_livejournal.rb
265
267
  - lib/governor_livejournal/instance_methods.rb
268
+ - lib/governor_livejournal/livejournal.rb
266
269
  - lib/governor_livejournal/rails.rb
267
270
  - spec/governor_livejournal_spec.rb
268
271
  - spec/rails_app/.gitignore