Class: Facebooker::Session
- Inherits:
-
Object
- Object
- Facebooker::Session
show all
- Defined in:
- lib/facebooker/session.rb
Defined Under Namespace
Classes: AlbumIsFull, BlankFeedTitle, CallOutOfOrder, ConfigurationMissing, Desktop, ExtendedPermissionRequired, FQLFieldDoesNotExist, FQLFunctionDoesNotExist, FQLParseError, FQLStatementNotIndexable, FQLTableDoesNotExist, FQLWrongNumberArgumentsPassedToFunction, FeedBodyDataInvalid, FeedBodyLengthTooLong, FeedBodyTemplateInvalid, FeedMarkupInvalid, FeedPhotosNotRetrieved, FeedTargetIdsInvalid, FeedTitleDataInvalid, FeedTitleTemplateInvalid, HostNotAllowed, IncorrectSignature, InvalidAPIKey, InvalidAlbumId, InvalidFeedPhotoLink, InvalidFeedPhotoSource, InvalidFeedTitleLength, InvalidFeedTitleLink, InvalidFeedTitleName, InvalidFriendList, MaxRequestsDepleted, MissingOrInvalidImageFile, MissingOrInvalidParameter, PermissionError, ServiceUnavailable, SessionExpired, SignatureTooOld, TemplateBundleInvalid, TemplateDataMissingRequiredTokens, TooManyUnapprovedPhotosPending, TooManyUserActionCalls, TooManyUserCalls, UnknownError, UserRegistrationFailed, UserUnRegistrationFailed
Constant Summary
collapse
- API_SERVER_BASE_URL =
ENV["FACEBOOKER_API"] == "new" ? "api.new.facebook.com" : "api.facebook.com"
- API_PATH_REST =
"/restserver.php"
- WWW_SERVER_BASE_URL =
ENV["FACEBOOKER_API"] == "new" ? "www.new.facebook.com" : "www.facebook.com"
- WWW_PATH_LOGIN =
"/login.php"
- WWW_PATH_ADD =
"/add.php"
- WWW_PATH_INSTALL =
"/install.php"
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
-
#add_next_parameters(options) ⇒ Object
-
#add_tags(pid, x, y, tag_uid = nil, tag_text = nil) ⇒ Object
-
#add_to_batch(req, &proc) ⇒ Object
-
#admin ⇒ Object
-
#batch(serial_only = false) ⇒ Object
Submit the enclosed requests for this session inside a batch.
-
#batch_request? ⇒ Boolean
-
#check_friendship(array_of_pairs_of_users) ⇒ Object
Given an array like: [[userid, otheruserid], [yetanotherid, andanotherid]] returns a Hash indicating friendship of those pairs: otheruserid] => true, [yetanotherid, andanotherid] => false if one of the Hash values is nil, it means the facebook platform’s answer is “I don’t know”.
-
#data ⇒ Object
Returns a proxy object for handling calls to the Facebook Data API.
-
#default_login_url_options ⇒ Object
-
#event_members(eid) ⇒ Object
-
#events(options = {}) ⇒ Object
This one has so many parameters, a Hash seemed cleaner than a long param list.
-
#expired? ⇒ Boolean
-
#fields_to_serialize ⇒ Object
-
#fql_build_object(type, hash) ⇒ Object
-
#fql_multiquery(queries, format = 'XML') ⇒ Object
-
#fql_query(query, format = 'XML') ⇒ Object
-
#get_albums(aids) ⇒ Object
-
#get_photos(pids = nil, subj_id = nil, aid = nil) ⇒ Object
-
#get_tags(pids) ⇒ Object
-
#infinite? ⇒ Boolean
-
#initialize(api_key, secret_key) ⇒ Session
constructor
A new instance of Session.
-
#install_url(options = {}) ⇒ Object
-
#install_url_optional_parameters(options) ⇒ Object
-
#instance_variable_set_value(field, value) ⇒ Object
-
#instance_variable_value(field) ⇒ Object
-
#is_fan(page_id, uid) ⇒ Object
Takes page_id and uid, returns true if uid is a fan of the page_id.
-
#login_url(options = {}) ⇒ Object
-
#login_url_optional_parameters(options) ⇒ Object
-
#marshal_dump ⇒ Object
Only serialize the bare minimum to recreate the session.
-
#marshal_load(variables) ⇒ Object
Only serialize the bare minimum to recreate the session.
-
#mobile ⇒ Object
-
#pages(options = {}) ⇒ Object
-
#permission_url(permission, options = {}) ⇒ Object
-
#post(method, params = {}, use_session_key = true, &proc) ⇒ Object
-
#post_file(method, params = {}) ⇒ Object
-
#post_without_logging(method, params = {}, use_session_key = true, &proc) ⇒ Object
-
#publish_user_action(bundle_id, data = {}, target_ids = nil, body_general = nil, story_size = nil) ⇒ Object
-
#register_template_bundle(one_line_story_templates, short_story_templates = nil, full_story_template = nil, action_links = nil) ⇒ Object
Register a template bundle with Facebook.
-
#secret_for_method(method_name) ⇒ Object
-
#secure!(args = {}) ⇒ Object
-
#secure_with!(session_key, uid = nil, expires = nil, secret_from_session = nil) ⇒ Object
-
#secure_with_session_secret! ⇒ Object
-
#secured? ⇒ Boolean
-
#send_email(user_ids, subject, text, fbml = nil) ⇒ Object
Send email to as many as 100 users at a time.
-
#send_notification(user_ids, fbml, email_fbml = nil) ⇒ Object
-
#server_cache ⇒ Object
Returns a proxy object for handling calls to Facebook cached items such as images and FBML ref handles.
-
#to_yaml(opts = {}) ⇒ Object
Only serialize the bare minimum to recreate the session.
-
#user ⇒ Object
-
#users(user_ids, fields = []) ⇒ Object
-
#users_standard(user_ids, fields = []) ⇒ Object
Constructor Details
#initialize(api_key, secret_key) ⇒ Session
Returns a new instance of Session.
155
156
157
158
159
160
161
162
163
164
|
# File 'lib/facebooker/session.rb', line 155
def initialize(api_key, secret_key)
@api_key = api_key
@secret_key = secret_key
@batch_request = nil
@session_key = nil
@uid = nil
@auth_token = nil
@secret_from_session = nil
@expires = nil
end
|
Instance Attribute Details
#auth_token ⇒ Object
170
171
172
|
# File 'lib/facebooker/session.rb', line 170
def auth_token
@auth_token ||= post 'facebook.auth.createToken'
end
|
#secret_from_session ⇒ Object
Returns the value of attribute secret_from_session.
76
77
78
|
# File 'lib/facebooker/session.rb', line 76
def secret_from_session
@secret_from_session
end
|
#session_key ⇒ Object
Returns the value of attribute session_key.
75
76
77
|
# File 'lib/facebooker/session.rb', line 75
def session_key
@session_key
end
|
Class Method Details
.api_key ⇒ Object
85
86
87
|
# File 'lib/facebooker/session.rb', line 85
def self.api_key
(:api) || (:api) rescue report_inability_to_find_key(:api)
end
|
.configuration_file_path ⇒ Object
586
587
588
|
# File 'lib/facebooker/session.rb', line 586
def self.configuration_file_path
@configuration_file_path || File.expand_path("~/.facebookerrc")
end
|
.configuration_file_path=(path) ⇒ Object
590
591
592
|
# File 'lib/facebooker/session.rb', line 590
def self.configuration_file_path=(path)
@configuration_file_path = path
end
|
.create(api_key = nil, secret_key = nil) ⇒ Object
78
79
80
81
82
83
|
# File 'lib/facebooker/session.rb', line 78
def self.create(api_key=nil, secret_key=nil)
api_key ||= self.api_key
secret_key ||= self.secret_key
raise ArgumentError unless !api_key.nil? && !secret_key.nil?
new(api_key, secret_key)
end
|
.current ⇒ Object
93
94
95
|
# File 'lib/facebooker/session.rb', line 93
def self.current
Thread.current['facebook_session']
end
|
.current=(session) ⇒ Object
97
98
99
|
# File 'lib/facebooker/session.rb', line 97
def self.current=(session)
Thread.current['facebook_session'] = session
end
|
.secret_key ⇒ Object
89
90
91
|
# File 'lib/facebooker/session.rb', line 89
def self.secret_key
(:secret) || (:secret) rescue report_inability_to_find_key(:secret)
end
|
Instance Method Details
#add_next_parameters(options) ⇒ Object
134
135
136
137
138
139
|
# File 'lib/facebooker/session.rb', line 134
def add_next_parameters(options)
opts = []
opts << "&next=#{CGI.escape(options[:next])}" if options[:next]
opts << "&next_cancel=#{CGI.escape(options[:next_cancel])}" if options[:next_cancel]
opts
end
|
373
374
375
376
377
378
|
# File 'lib/facebooker/session.rb', line 373
def add_tags(pid, x, y, tag_uid = nil, tag_text = nil )
if [tag_uid, tag_text].all? {|arg| arg.nil?}
raise ArgumentError, "Must enter a name or string for this tag"
end
@tags = post('facebook.photos.addTag', :pid => pid, :tag_uid => tag_uid, :tag_text => tag_text, :x => x, :y => y )
end
|
#add_to_batch(req, &proc) ⇒ Object
497
498
499
500
501
|
# File 'lib/facebooker/session.rb', line 497
def add_to_batch(req,&proc)
batch_request = BatchRequest.new(req,proc)
Thread.current[:facebooker_current_batch_queue]<<batch_request
batch_request
end
|
#admin ⇒ Object
322
323
324
|
# File 'lib/facebooker/session.rb', line 322
def admin
Facebooker::Admin.new(self)
end
|
#batch(serial_only = false) ⇒ Object
Submit the enclosed requests for this session inside a batch
All requests will be sent to Facebook at the end of the block each method inside the block will return a proxy object attempting to access the proxy before the end of the block will yield an exception
For Example:
facebook_session.batch do
@send_result = facebook_session.send_notification([12451752],"Woohoo")
@albums = facebook_session.user.albums
end
puts @albums.first.inspect
is valid, however
facebook_session.batch do
@send_result = facebook_session.send_notification([12451752],"Woohoo")
@albums = facebook_session.user.albums
puts @albums.first.inspect
end
will raise Facebooker::BatchRequest::UnexecutedRequest
If an exception is raised while processing the result, that exception will be re-raised on the next access to that object or when exception_raised? is called
for example, if the send_notification resulted in TooManyUserCalls being raised, calling
@send_result.exception_raised?
would re-raise that exception if there was an error retrieving the albums, it would be re-raised when
@albums.first
is called
538
539
540
541
542
543
544
545
546
547
548
549
|
# File 'lib/facebooker/session.rb', line 538
def batch(serial_only=false)
@batch_request=true
Thread.current[:facebooker_current_batch_queue]=[]
yield
@batch_request=false
BatchRun.current_batch=Thread.current[:facebooker_current_batch_queue]
post("facebook.batch.run",:method_feed=>BatchRun.current_batch.map{|q| q.uri}.to_json,:serial_only=>serial_only.to_s)
ensure
@batch_request=false
BatchRun.current_batch=nil
end
|
#batch_request? ⇒ Boolean
493
494
495
|
# File 'lib/facebooker/session.rb', line 493
def batch_request?
@batch_request
end
|
#check_friendship(array_of_pairs_of_users) ⇒ Object
Given an array like:
- [userid, otheruserid], [yetanotherid, andanotherid]
-
returns a Hash indicating friendship of those pairs: otheruserid] => true, [yetanotherid, andanotherid] => false if one of the Hash values is nil, it means the facebook platform’s answer is “I don’t know”
336
337
338
339
340
341
342
343
344
|
# File 'lib/facebooker/session.rb', line 336
def check_friendship(array_of_pairs_of_users)
uids1 = []
uids2 = []
array_of_pairs_of_users.each do |pair|
uids1 << pair.first
uids2 << pair.last
end
post('facebook.friends.areFriends', :uids1 => uids1.join(','), :uids2 => uids2.join(','))
end
|
#data ⇒ Object
Returns a proxy object for handling calls to the Facebook Data API
318
319
320
|
# File 'lib/facebooker/session.rb', line 318
def data
Facebooker::Data.new(self)
end
|
#default_login_url_options ⇒ Object
151
152
153
|
# File 'lib/facebooker/session.rb', line 151
def default_login_url_options
{}
end
|
#event_members(eid) ⇒ Object
272
273
274
275
276
277
278
|
# File 'lib/facebooker/session.rb', line 272
def event_members(eid)
@members ||= post('facebook.events.getMembers', :eid => eid) do |response|
response.map do |attendee_hash|
Event::Attendance.from_hash(attendee_hash)
end
end
end
|
#events(options = {}) ⇒ Object
This one has so many parameters, a Hash seemed cleaner than a long param list. Options can be: :uid => Filter by events associated with a user with this uid :eids => Filter by this list of event ids. This is a comma-separated list of eids. :start_time => Filter with this UTC as lower bound. A missing or zero parameter indicates no lower bound. (Time or Integer) :end_time => Filter with this UTC as upper bound. A missing or zero parameter indicates no upper bound. (Time or Integer) :rsvp_status => Filter by this RSVP status.
264
265
266
267
268
269
270
|
# File 'lib/facebooker/session.rb', line 264
def events(options = {})
@events ||= post('facebook.events.get', options) do |response|
response.map do |hash|
Event.from_hash(hash)
end
end
end
|
#expired? ⇒ Boolean
178
179
180
|
# File 'lib/facebooker/session.rb', line 178
def expired?
@expires.nil? || (!infinite? && Time.at(@expires) <= Time.now)
end
|
#fields_to_serialize ⇒ Object
467
468
469
|
# File 'lib/facebooker/session.rb', line 467
def fields_to_serialize
%w(session_key uid expires secret_from_session auth_token api_key secret_key)
end
|
#fql_build_object(type, hash) ⇒ Object
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
# File 'lib/facebooker/session.rb', line 202
def fql_build_object(type, hash)
case type
when 'user'
user = User.new
user.session = self
user.populate_from_hash!(hash)
user
when 'photo'
Photo.from_hash(hash)
when 'page'
Page.from_hash(hash)
when 'page_admin'
Page.from_hash(hash)
when 'group'
Group.from_hash(hash)
when 'event_member'
Event::Attendance.from_hash(hash)
else
hash
end
end
|
#fql_multiquery(queries, format = 'XML') ⇒ Object
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
# File 'lib/facebooker/session.rb', line 234
def fql_multiquery(queries, format = 'XML')
results = {}
post('facebook.fql.multiquery', :queries => queries.to_json, :format => format) do |responses|
responses.each do |response|
name = response.shift
response = response.shift
type = response.shift
value = []
unless type.nil?
value = response.shift.map do |hash|
fql_build_object(type, hash)
end
end
results[name] = value
end
end
results
end
|
#fql_query(query, format = 'XML') ⇒ Object
224
225
226
227
228
229
230
231
232
|
# File 'lib/facebooker/session.rb', line 224
def fql_query(query, format = 'XML')
post('facebook.fql.query', :query => query, :format => format) do |response|
type = response.shift
return [] if type.nil?
response.shift.map do |hash|
fql_build_object(type, hash)
end
end
end
|
#get_albums(aids) ⇒ Object
357
358
359
360
361
362
363
|
# File 'lib/facebooker/session.rb', line 357
def get_albums(aids)
@albums = post('facebook.photos.getAlbums', :aids => aids) do |response|
response.map do |hash|
Album.from_hash(hash)
end
end
end
|
#get_photos(pids = nil, subj_id = nil, aid = nil) ⇒ Object
346
347
348
349
350
351
352
353
354
355
|
# File 'lib/facebooker/session.rb', line 346
def get_photos(pids = nil, subj_id = nil, aid = nil)
if [subj_id, pids, aid].all? {|arg| arg.nil?}
raise ArgumentError, "Can't get a photo without a picture, album or subject ID"
end
@photos = post('facebook.photos.get', :subj_id => subj_id, :pids => pids, :aid => aid ) do |response|
response.map do |hash|
Photo.from_hash(hash)
end
end
end
|
365
366
367
368
369
370
371
|
# File 'lib/facebooker/session.rb', line 365
def get_tags(pids)
@tags = post('facebook.photos.getTags', :pids => pids) do |response|
response.map do |hash|
Tag.from_hash(hash)
end
end
end
|
#infinite? ⇒ Boolean
174
175
176
|
# File 'lib/facebooker/session.rb', line 174
def infinite?
@expires == 0
end
|
#install_url(options = {}) ⇒ Object
106
107
108
|
# File 'lib/facebooker/session.rb', line 106
def install_url(options={})
"#{Facebooker.install_url_base(@api_key)}#{install_url_optional_parameters(options)}"
end
|
#install_url_optional_parameters(options) ⇒ Object
128
129
130
131
132
|
# File 'lib/facebooker/session.rb', line 128
def install_url_optional_parameters(options)
optional_parameters = []
optional_parameters += add_next_parameters(options)
optional_parameters.join
end
|
#instance_variable_set_value(field, value) ⇒ Object
459
460
461
|
# File 'lib/facebooker/session.rb', line 459
def instance_variable_set_value(field, value)
self.instance_variable_set("@#{field}", value)
end
|
#instance_variable_value(field) ⇒ Object
463
464
465
|
# File 'lib/facebooker/session.rb', line 463
def instance_variable_value(field)
self.instance_variable_get("@#{field}")
end
|
#is_fan(page_id, uid) ⇒ Object
Takes page_id and uid, returns true if uid is a fan of the page_id
303
304
305
306
|
# File 'lib/facebooker/session.rb', line 303
def is_fan(page_id, uid)
puts "Deprecated. Use Page#user_is_fan? instead"
Page.new(page_id).user_is_fan?(uid)
end
|
#login_url(options = {}) ⇒ Object
101
102
103
104
|
# File 'lib/facebooker/session.rb', line 101
def login_url(options={})
options = default_login_url_options.merge(options)
"#{Facebooker.login_url_base(@api_key)}#{login_url_optional_parameters(options)}"
end
|
#login_url_optional_parameters(options) ⇒ Object
141
142
143
144
145
146
147
148
149
|
# File 'lib/facebooker/session.rb', line 141
def login_url_optional_parameters(options)
optional_parameters = []
optional_parameters += add_next_parameters(options)
optional_parameters << "&skipcookie=true" if options[:skip_cookie]
optional_parameters << "&hide_checkbox=true" if options[:hide_checkbox]
optional_parameters << "&canvas=true" if options[:canvas]
optional_parameters.join
end
|
#marshal_dump ⇒ Object
Only serialize the bare minimum to recreate the session.
444
445
446
|
# File 'lib/facebooker/session.rb', line 444
def marshal_dump fields_to_serialize.map{|field| instance_variable_value(field)}
end
|
#marshal_load(variables) ⇒ Object
Only serialize the bare minimum to recreate the session.
439
440
441
|
# File 'lib/facebooker/session.rb', line 439
def marshal_load(variables) fields_to_serialize.each_with_index{|field, index| instance_variable_set_value(field, variables[index])}
end
|
#mobile ⇒ Object
326
327
328
|
# File 'lib/facebooker/session.rb', line 326
def mobile
Facebooker::Mobile.new(self)
end
|
#pages(options = {}) ⇒ Object
292
293
294
295
296
297
298
299
300
|
# File 'lib/facebooker/session.rb', line 292
def pages(options = {})
raise ArgumentError, 'fields option is mandatory' unless options.has_key?(:fields)
@pages ||= {}
@pages[options] ||= post('facebook.pages.getInfo', options) do |response|
response.map do |hash|
Page.from_hash(hash)
end
end
end
|
#permission_url(permission, options = {}) ⇒ Object
123
124
125
126
|
# File 'lib/facebooker/session.rb', line 123
def permission_url(permission,options={})
options = default_login_url_options.merge(options)
"http://#{Facebooker.www_server_base_url}/authorize.php?api_key=#{@api_key}&v=1.0&ext_perm=#{permission}#{install_url_optional_parameters(options)}"
end
|
#post(method, params = {}, use_session_key = true, &proc) ⇒ Object
564
565
566
567
568
569
570
571
572
|
# File 'lib/facebooker/session.rb', line 564
def post(method, params = {}, use_session_key = true, &proc)
if batch_request? or Facebooker::Logging.skip_api_logging
post_without_logging(method, params, use_session_key, &proc)
else
Logging.log_fb_api(method, params) do
post_without_logging(method, params, use_session_key, &proc)
end
end
end
|
#post_file(method, params = {}) ⇒ Object
574
575
576
577
578
579
580
581
|
# File 'lib/facebooker/session.rb', line 574
def post_file(method, params = {})
base = params.delete(:base)
Logging.log_fb_api(method, params) do
add_facebook_params(params, method)
@session_key && params[:session_key] ||= @session_key unless params[:uid]
service.post_file(params.merge(:base => base, :sig => signature_for(params.reject{|key, value| key.nil?})))
end
end
|
#post_without_logging(method, params = {}, use_session_key = true, &proc) ⇒ Object
551
552
553
554
555
556
557
558
559
560
561
562
|
# File 'lib/facebooker/session.rb', line 551
def post_without_logging(method, params = {}, use_session_key = true, &proc)
add_facebook_params(params, method)
use_session_key && @session_key && params[:session_key] ||= @session_key
final_params=params.merge(:sig => signature_for(params))
if batch_request?
add_to_batch(final_params,&proc)
else
result = service.post(final_params)
result = yield result if block_given?
result
end
end
|
#publish_user_action(bundle_id, data = {}, target_ids = nil, body_general = nil, story_size = nil) ⇒ Object
421
422
423
424
425
426
427
|
# File 'lib/facebooker/session.rb', line 421
def publish_user_action(bundle_id,data={},target_ids=nil,body_general=nil,story_size=nil)
parameters={:template_bundle_id=>bundle_id,:template_data=>data.to_json}
parameters[:target_ids] = target_ids unless target_ids.blank?
parameters[:body_general] = body_general unless body_general.blank?
parameters[:story_size] = story_size unless story_size.nil?
post("facebook.feed.publishUserAction", parameters)
end
|
#register_template_bundle(one_line_story_templates, short_story_templates = nil, full_story_template = nil, action_links = nil) ⇒ Object
Register a template bundle with Facebook. returns the template id to use to send using this template
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
|
# File 'lib/facebooker/session.rb', line 397
def register_template_bundle(one_line_story_templates,short_story_templates=nil,full_story_template=nil, action_links=nil)
templates = ensure_array(one_line_story_templates)
parameters = {:one_line_story_templates => templates.to_json}
unless action_links.blank?
parameters[:action_links] = action_links.to_json
end
unless short_story_templates.blank?
templates = ensure_array(short_story_templates)
parameters[:short_story_templates] = templates.to_json
end
unless full_story_template.blank?
parameters[:full_story_template] = full_story_template.to_json
end
post("facebook.feed.registerTemplateBundle", parameters, false)
end
|
#secret_for_method(method_name) ⇒ Object
166
167
168
|
# File 'lib/facebooker/session.rb', line 166
def secret_for_method(method_name)
@secret_key
end
|
#secure!(args = {}) ⇒ Object
186
187
188
189
|
# File 'lib/facebooker/session.rb', line 186
def secure!(args = {})
response = post 'facebook.auth.getSession', :auth_token => auth_token, :generate_session_secret => args[:generate_session_secret] ? "1" : "0"
secure_with!(response['session_key'], response['uid'], response['expires'], response['secret'])
end
|
#secure_with!(session_key, uid = nil, expires = nil, secret_from_session = nil) ⇒ Object
195
196
197
198
199
200
|
# File 'lib/facebooker/session.rb', line 195
def secure_with!(session_key, uid = nil, expires = nil, secret_from_session = nil)
@session_key = session_key
@uid = uid ? Integer(uid) : post('facebook.users.getLoggedInUser', :session_key => session_key)
@expires = Integer(expires)
@secret_from_session = secret_from_session
end
|
#secure_with_session_secret! ⇒ Object
191
192
193
|
# File 'lib/facebooker/session.rb', line 191
def secure_with_session_secret!
self.secure!(:generate_session_secret => true)
end
|
#secured? ⇒ Boolean
182
183
184
|
# File 'lib/facebooker/session.rb', line 182
def secured?
!@session_key.nil? && !expired?
end
|
#send_email(user_ids, subject, text, fbml = nil) ⇒ Object
Send email to as many as 100 users at a time
432
433
434
435
436
|
# File 'lib/facebooker/session.rb', line 432
def send_email(user_ids, subject, text, fbml = nil)
user_ids = Array(user_ids)
params = {:fbml => fbml, :recipients => user_ids.map{ |id| User.cast_to_facebook_id(id)}.join(','), :text => text, :subject => subject}
post 'facebook.notifications.sendEmail', params, false
end
|
#send_notification(user_ids, fbml, email_fbml = nil) ⇒ Object
380
381
382
383
384
385
386
387
388
389
390
391
392
|
# File 'lib/facebooker/session.rb', line 380
def send_notification(user_ids, fbml, email_fbml = nil)
params = {:notification => fbml, :to_ids => user_ids.map{ |id| User.cast_to_facebook_id(id)}.join(',')}
if email_fbml
params[:email] = email_fbml
end
params[:type]="user_to_user"
unless uid?
params[:type]="app_to_user"
end
post 'facebook.notifications.send', params,uid?
end
|
#server_cache ⇒ Object
Returns a proxy object for handling calls to Facebook cached items such as images and FBML ref handles
#to_yaml(opts = {}) ⇒ Object
Only serialize the bare minimum to recreate the session.
449
450
451
452
453
454
455
456
457
|
# File 'lib/facebooker/session.rb', line 449
def to_yaml( opts = {} )
YAML::quick_emit(self.object_id, opts) do |out|
out.map(taguri) do |map|
fields_to_serialize.each do |field|
map.add(field, instance_variable_value(field))
end
end
end
end
|
#user ⇒ Object
253
254
255
|
# File 'lib/facebooker/session.rb', line 253
def user
@user ||= User.new(uid, self)
end
|
#users(user_ids, fields = []) ⇒ Object
286
287
288
289
290
|
# File 'lib/facebooker/session.rb', line 286
def users(user_ids, fields=[])
post("facebook.users.getInfo",:uids=>user_ids.join(","),:fields=>User.user_fields(fields)) do |users|
users.map { |u| User.new(u)}
end
end
|
#users_standard(user_ids, fields = []) ⇒ Object
280
281
282
283
284
|
# File 'lib/facebooker/session.rb', line 280
def users_standard(user_ids, fields=[])
post("facebook.users.getStandardInfo",:uids=>user_ids.join(","),:fields=>User.standard_fields(fields)) do |users|
users.map { |u| User.new(u)}
end
end
|