Module: Chatterbot::Client
- Included in:
- Bot
- Defined in:
- lib/chatterbot/client.rb
Overview
routines for connecting to Twitter and validating the bot
Instance Attribute Summary collapse
-
#client ⇒ Object
the main interface to the Twitter API.
-
#screen_name ⇒ Object
Returns the value of attribute screen_name.
-
#search_client ⇒ Object
Returns the value of attribute search_client.
-
#streaming_client ⇒ Object
Returns the value of attribute streaming_client.
Instance Method Summary collapse
-
#base_url ⇒ Object
the URL we should use for api calls.
-
#consumer ⇒ Object
simple OAuth client for setting up with Twitter.
-
#default_opts ⇒ Object
default options when querying twitter – this could be extended with a language, etc.
-
#generate_authorize_url(request_token) ⇒ Object
copied from t, the awesome twitter cli app.
-
#get_screen_name(t = @access_token) ⇒ Object
query twitter for the bots screen name.
-
#init_client ⇒ Object
Initialize the Twitter client, and check to see if it has credentials or not.
-
#login(do_update_config = true) ⇒ Object
handle oauth for this request.
- #request_token ⇒ Object
-
#require_login(do_update_config = true) ⇒ Object
Call this before doing anything that requires an authorized Twitter connection.
- #reset! ⇒ Object
-
#reset_client ⇒ Object
Re-initialize with Twitter, handy during the auth process.
-
#reset_since_id ⇒ Object
reset the since_id for this bot to the highest since_id we can get, by running a really open search and updating config with the max_id.
-
#reset_since_id_reply ⇒ Object
resets the since_id_reply for this bot to the last mention received.
Instance Attribute Details
#client ⇒ Object
the main interface to the Twitter API
14 15 16 |
# File 'lib/chatterbot/client.rb', line 14 def client @client end |
#screen_name ⇒ Object
Returns the value of attribute screen_name.
9 10 11 |
# File 'lib/chatterbot/client.rb', line 9 def screen_name @screen_name end |
#search_client ⇒ Object
Returns the value of attribute search_client.
9 10 11 |
# File 'lib/chatterbot/client.rb', line 9 def search_client @search_client end |
#streaming_client ⇒ Object
Returns the value of attribute streaming_client.
9 10 11 |
# File 'lib/chatterbot/client.rb', line 9 def streaming_client @streaming_client end |
Instance Method Details
#base_url ⇒ Object
the URL we should use for api calls
61 62 63 |
# File 'lib/chatterbot/client.rb', line 61 def base_url "https://api.twitter.com" end |
#consumer ⇒ Object
simple OAuth client for setting up with Twitter
107 108 109 110 111 112 113 |
# File 'lib/chatterbot/client.rb', line 107 def consumer @consumer ||= OAuth::Consumer.new( config[:consumer_key], config[:consumer_secret], :site => base_url ) end |
#default_opts ⇒ Object
default options when querying twitter – this could be extended with a language, etc.
69 70 71 72 73 74 75 76 77 |
# File 'lib/chatterbot/client.rb', line 69 def default_opts opts = { :result_type => "recent" } opts[:since_id] = since_id if since_id > 0 opts[:since_id_reply] = since_id_reply if since_id_reply > 0 opts end |
#generate_authorize_url(request_token) ⇒ Object
copied from t, the awesome twitter cli app
119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/chatterbot/client.rb', line 119 def (request_token) request = consumer.create_signed_request(:get, consumer., request_token, {:oauth_callback => 'oob'}) params = request['Authorization'].sub(/^OAuth\s+/, '').split(/,\s+/).map do |param| key, value = param.split('=') value =~ /"(.*?)"/ "#{key}=#{CGI::escape($1)}" end.join('&') "#{base_url}#{request.path}?#{params}" end |
#get_screen_name(t = @access_token) ⇒ Object
query twitter for the bots screen name. we do this during the bot registration process
140 141 142 143 144 145 |
# File 'lib/chatterbot/client.rb', line 140 def get_screen_name(t = @access_token) return unless @screen_name.nil? oauth_response = t.get('/1.1/account/verify_credentials.json') @screen_name = JSON.parse(oauth_response.body)["screen_name"] end |
#init_client ⇒ Object
Initialize the Twitter client, and check to see if it has credentials or not
83 84 85 |
# File 'lib/chatterbot/client.rb', line 83 def init_client client.credentials? end |
#login(do_update_config = true) ⇒ Object
handle oauth for this request. if the client isn’t authorized, print out the auth URL and get a pin code back from the user If do_update_config
is false, don’t udpate the bots config file after authorization. This defaults to true but chatterbot-register will pass in false because it does some other work before saving.
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
# File 'lib/chatterbot/client.rb', line 154 def login(do_update_config=true) if needs_api_key? get_api_key end if needs_auth_token? pin = get_oauth_verifier #(request_token) return false if pin.nil? begin # this will throw an error that we can try and catch @access_token = request_token.get_access_token(:oauth_verifier => pin.chomp) get_screen_name self.config[:token] = @access_token.token self.config[:secret] = @access_token.secret update_config unless ! do_update_config reset_client rescue OAuth::Unauthorized => e display_oauth_error warn e.inspect return false end end return true end |
#request_token ⇒ Object
133 134 135 |
# File 'lib/chatterbot/client.rb', line 133 def request_token @request_token ||= consumer.get_request_token end |
#require_login(do_update_config = true) ⇒ Object
Call this before doing anything that requires an authorized Twitter connection.
97 98 99 100 |
# File 'lib/chatterbot/client.rb', line 97 def require_login(do_update_config=true) init_client login(do_update_config) end |
#reset! ⇒ Object
32 33 34 35 |
# File 'lib/chatterbot/client.rb', line 32 def reset! config[:since_id] = 0 config[:since_id_reply] = 0 end |
#reset_client ⇒ Object
Re-initialize with Twitter, handy during the auth process
89 90 91 92 |
# File 'lib/chatterbot/client.rb', line 89 def reset_client @client = nil init_client end |
#reset_since_id ⇒ Object
reset the since_id for this bot to the highest since_id we can get, by running a really open search and updating config with the max_id
42 43 44 45 46 |
# File 'lib/chatterbot/client.rb', line 42 def reset_since_id config[:tmp_since_id] = 0 result = client.search("a") update_since_id(result) end |
#reset_since_id_reply ⇒ Object
resets the since_id_reply for this bot to the last mention received
51 52 53 54 55 |
# File 'lib/chatterbot/client.rb', line 51 def reset_since_id_reply config[:tmp_since_id_reply] = 0 result = client.mentions_timeline.max_by(&:id) update_since_id_reply(result) end |