@@ -0,0 +1,29 @@ |
||
| 1 |
+module WeiboConcern |
|
| 2 |
+ extend ActiveSupport::Concern |
|
| 3 |
+ |
|
| 4 |
+ included do |
|
| 5 |
+ self.validate :validate_weibo_options |
|
| 6 |
+ end |
|
| 7 |
+ |
|
| 8 |
+ def validate_weibo_options |
|
| 9 |
+ unless options[:app_key].present? && |
|
| 10 |
+ options[:app_secret].present? && |
|
| 11 |
+ options[:access_token].present? |
|
| 12 |
+ errors.add(:base, "app_key, app_secret and access_token are required") |
|
| 13 |
+ end |
|
| 14 |
+ end |
|
| 15 |
+ |
|
| 16 |
+ def weibo_client |
|
| 17 |
+ unless @weibo_client |
|
| 18 |
+ WeiboOAuth2::Config.api_key = options[:app_key] # WEIBO_APP_KEY |
|
| 19 |
+ WeiboOAuth2::Config.api_secret = options[:app_secret] # WEIBO_APP_SECRET |
|
| 20 |
+ @weibo_client = WeiboOAuth2::Client.new |
|
| 21 |
+ @weibo_client.get_token_from_hash :access_token => options[:access_token] |
|
| 22 |
+ end |
|
| 23 |
+ @weibo_client |
|
| 24 |
+ end |
|
| 25 |
+ |
|
| 26 |
+ module ClassMethods |
|
| 27 |
+ |
|
| 28 |
+ end |
|
| 29 |
+end |
@@ -3,6 +3,8 @@ require "weibo_2" |
||
| 3 | 3 |
|
| 4 | 4 |
module Agents |
| 5 | 5 |
class WeiboPublishAgent < Agent |
| 6 |
+ include WeiboConcern |
|
| 7 |
+ |
|
| 6 | 8 |
cannot_be_scheduled! |
| 7 | 9 |
|
| 8 | 10 |
description <<-MD |
@@ -19,11 +21,8 @@ module Agents |
||
| 19 | 21 |
|
| 20 | 22 |
def validate_options |
| 21 | 23 |
unless options[:uid].present? && |
| 22 |
- options[:expected_update_period_in_days].present? && |
|
| 23 |
- options[:app_key].present? && |
|
| 24 |
- options[:app_secret].present? && |
|
| 25 |
- options[:access_token].present? |
|
| 26 |
- errors.add(:base, "expected_update_period_in_days, uid, and access_token are required") |
|
| 24 |
+ options[:expected_update_period_in_days].present? |
|
| 25 |
+ errors.add(:base, "expected_update_period_in_days and uid are required") |
|
| 27 | 26 |
end |
| 28 | 27 |
end |
| 29 | 28 |
|
@@ -73,12 +72,7 @@ module Agents |
||
| 73 | 72 |
end |
| 74 | 73 |
|
| 75 | 74 |
def publish_tweet text |
| 76 |
- WeiboOAuth2::Config.api_key = options[:app_key] # WEIBO_APP_KEY |
|
| 77 |
- WeiboOAuth2::Config.api_secret = options[:app_secret] # WEIBO_APP_SECRET |
|
| 78 |
- client = WeiboOAuth2::Client.new |
|
| 79 |
- client.get_token_from_hash :access_token => options[:access_token] |
|
| 80 |
- |
|
| 81 |
- client.statuses.update text |
|
| 75 |
+ weibo_client.statuses.update text |
|
| 82 | 76 |
end |
| 83 | 77 |
|
| 84 | 78 |
def unwrap_tco_urls text, tweet_json |
@@ -3,6 +3,8 @@ require "weibo_2" |
||
| 3 | 3 |
|
| 4 | 4 |
module Agents |
| 5 | 5 |
class WeiboUserAgent < Agent |
| 6 |
+ include WeiboConcern |
|
| 7 |
+ |
|
| 6 | 8 |
cannot_receive_events! |
| 7 | 9 |
|
| 8 | 10 |
description <<-MD |
@@ -69,11 +71,8 @@ module Agents |
||
| 69 | 71 |
|
| 70 | 72 |
def validate_options |
| 71 | 73 |
unless options[:uid].present? && |
| 72 |
- options[:expected_update_period_in_days].present? && |
|
| 73 |
- options[:app_key].present? && |
|
| 74 |
- options[:app_secret].present? && |
|
| 75 |
- options[:access_token].present? |
|
| 76 |
- errors.add(:base, "expected_update_period_in_days, uid, app_key, app_secret and access_token are required") |
|
| 74 |
+ options[:expected_update_period_in_days].present? |
|
| 75 |
+ errors.add(:base, "expected_update_period_in_days and uid are required") |
|
| 77 | 76 |
end |
| 78 | 77 |
end |
| 79 | 78 |
|
@@ -92,18 +91,12 @@ module Agents |
||
| 92 | 91 |
end |
| 93 | 92 |
|
| 94 | 93 |
def check |
| 95 |
- WeiboOAuth2::Config.api_key = options[:app_key] # WEIBO_APP_KEY |
|
| 96 |
- WeiboOAuth2::Config.api_secret = options[:app_secret] # WEIBO_APP_SECRET |
|
| 97 |
- client = WeiboOAuth2::Client.new |
|
| 98 |
- client.get_token_from_hash :access_token => options[:access_token] |
|
| 99 |
- |
|
| 100 |
- |
|
| 101 | 94 |
since_id = memory[:since_id] || nil |
| 102 | 95 |
opts = {:uid => options[:uid].to_i}
|
| 103 | 96 |
opts.merge! :since_id => since_id unless since_id.nil? |
| 104 | 97 |
|
| 105 | 98 |
# http://open.weibo.com/wiki/2/statuses/user_timeline/en |
| 106 |
- resp = client.statuses.user_timeline opts |
|
| 99 |
+ resp = weibo_client.statuses.user_timeline opts |
|
| 107 | 100 |
if resp[:statuses] |
| 108 | 101 |
|
| 109 | 102 |
|