lib/ayadn/action.rb in ayadn-1.6.0 vs lib/ayadn/action.rb in ayadn-1.7.0

- old
+ new

@@ -17,58 +17,23 @@ Logs.create_logger Databases.open_databases at_exit { Databases.close_all } end - def unified(options) - begin - @stream.unified(options) - rescue => e - Errors.global_error({error: e, caller: caller, data: [options]}) + def method_missing(meth, options) + case meth.to_s + when 'unified', 'checkins', 'global', 'trending', 'photos', 'conversations', 'interactions' + begin + @stream.send(meth.to_sym, options) + rescue => e + Errors.global_error({error: e, caller: caller, data: [meth, options]}) + end + else + super end end - def checkins(options) - begin - @stream.checkins(options) - rescue => e - Errors.global_error({error: e, caller: caller, data: [options]}) - end - end - - def global(settings) - begin - @stream.global(settings) - rescue => e - Errors.global_error({error: e, caller: caller, data: [settings]}) - end - end - - def trending(options) - begin - @stream.trending(options) - rescue => e - Errors.global_error({error: e, caller: caller, data: [options]}) - end - end - - def photos(options) - begin - @stream.photos(options) - rescue => e - Errors.global_error({error: e, caller: caller, data: [options]}) - end - end - - def conversations(options) - begin - @stream.conversations(options) - rescue => e - Errors.global_error({error: e, caller: caller, data: [options]}) - end - end - def mentions(username, options) begin @stream.mentions(username, options) rescue => e Errors.global_error({error: e, caller: caller, data: [username, options]}) @@ -81,18 +46,10 @@ rescue => e Errors.global_error({error: e, caller: caller, data: [username, options]}) end end - def interactions(options) - begin - @stream.interactions(options) - rescue => e - Errors.global_error({error: e, caller: caller, data: [options]}) - end - end - def whatstarred(username, options) begin @stream.whatstarred(username, options) rescue => e Errors.global_error({error: e, caller: caller, data: [username, options]}) @@ -379,10 +336,11 @@ end end def postinfo(post_id, options) begin + Settings.options[:force] = true if options[:force] Check.bad_post_id(post_id) @view.downloading(options) if options[:raw] details = @api.get_details(post_id, options) @view.show_raw(details, options) @@ -499,106 +457,71 @@ def post(args, options) begin writer = Post.new @view.clear_screen - if options['embed'] - embed = options['embed'] - text = args.join(" ") - puts Status.uploading(embed) - resp = writer.send_embedded(text, FileOps.make_paths(embed)) - else - puts Status.posting - resp = writer.post(args) + puts Status.posting + if options[:poster] # Returns the same options hash + poster embed + settings = options.dup + options = NowWatching.new.get_poster(settings[:poster], settings) end - FileOps.save_post(resp) if Settings.options[:backup][:auto_save_sent_posts] - @view.clear_screen - puts Status.yourpost - @view.show_posted(resp) + resp = writer.post({options: options, text: args.join(" ")}) + save_and_view(resp) rescue => e Errors.global_error({error: e, caller: caller, data: [args, options]}) end end def write(options) begin - files = FileOps.make_paths(options['embed']) if options['embed'] writer = Post.new puts Status.writing puts Status.post lines_array = writer.compose writer.check_post_length(lines_array) text = lines_array.join("\n") - if options['embed'] - @view.clear_screen - puts Status.uploading(options['embed']) - resp = writer.send_embedded(text, files) - else - resp = writer.send_post(text) - end @view.clear_screen puts Status.posting - FileOps.save_post(resp) if Settings.options[:backup][:auto_save_sent_posts] - @view.clear_screen - puts Status.yourpost - @view.show_posted(resp) + if options[:poster] + settings = options.dup + options = NowWatching.new.get_poster(settings[:poster], settings) + end + resp = writer.post({options: options, text: text}) + save_and_view(resp) rescue => e Errors.global_error({error: e, caller: caller, data: [text, options]}) end end def pmess(username, options = {}) begin - files = FileOps.make_paths(options['embed']) if options['embed'] Check.no_username(username) username = [@workers.add_arobase(username)] - messenger = Post.new + writer = Post.new puts Status.message_from(username) puts Status.message - lines_array = messenger.compose - messenger.check_message_length(lines_array) + lines_array = writer.compose + writer.check_message_length(lines_array) text = lines_array.join("\n") @view.clear_screen - if options['embed'] - puts Status.uploading(options['embed']) - resp = messenger.send_pm_embedded(username, text, files) - else - puts Status.posting - resp = messenger.send_pm(username, text) + puts Status.posting + if options[:poster] + settings = options.dup + options = NowWatching.new.get_poster(settings[:poster], settings) end + resp = writer.pm({options: options, text: text, username: username}) FileOps.save_message(resp) if Settings.options[:backup][:auto_save_sent_messages] @view.clear_screen puts Status.yourmessage(username[0]) @view.show_posted(resp) rescue => e Errors.global_error({error: e, caller: caller, data: [username, options]}) end end - def send_to_channel(channel_id) - begin - channel_id = @workers.get_channel_id_from_alias(channel_id) - messenger = Post.new - puts Status.writing - puts Status.post - lines_array = messenger.compose - messenger.check_message_length(lines_array) - @view.clear_screen - puts Status.posting - resp = messenger.send_message(channel_id, lines_array.join("\n")) - FileOps.save_message(resp) if Settings.options[:backup][:auto_save_sent_messages] - @view.clear_screen - puts Status.yourpost - @view.show_posted(resp) - rescue => e - Errors.global_error({error: e, caller: caller, data: [channel_id]}) - end - end - def reply(post_id, options = {}) begin - files = FileOps.make_paths(options['embed']) if options['embed'] post_id = @workers.get_real_post_id(post_id) puts Status.replying_to(post_id) replied_to = @api.get_details(post_id) Check.no_post(replied_to, post_id) post_id = @workers.get_original_id(post_id, replied_to) @@ -606,40 +529,53 @@ if post_id == replied_to['data']['repost_of']['id'] replied_to = @api.get_details(post_id) Check.no_post(replied_to, post_id) end end - poster = Post.new + # ---- + writer = Post.new puts Status.writing puts Status.reply - lines_array = poster.compose - poster.check_post_length(lines_array) + lines_array = writer.compose + writer.check_post_length(lines_array) @view.clear_screen - reply = poster.reply(lines_array.join("\n"), @workers.build_posts([replied_to['data']])) - if options['embed'] - puts Status.uploading(options['embed']) - resp = poster.send_reply_embedded(reply, post_id, files) - else - puts Status.posting - resp = poster.send_reply(reply, post_id) + text = lines_array.join("\n") + replied_to = @workers.build_posts([replied_to['data']]) + if options[:poster] + settings = options.dup + options = NowWatching.new.get_poster(settings[:poster], settings) end - FileOps.save_post(resp) if Settings.options[:backup][:auto_save_sent_posts] - @view.clear_screen - puts Status.done - + resp = writer.reply({options: options, text: text, id: post_id, reply_to: replied_to}) + # ---- options = options.dup unless resp['data']['reply_to'].nil? options[:reply_to] = resp['data']['reply_to'].to_i end options[:post_id] = resp['data']['id'].to_i - @view.render(@api.get_convo(post_id), options) rescue => e Errors.global_error({error: e, caller: caller, data: [post_id, options]}) end end + def send_to_channel(channel_id) + begin + channel_id = @workers.get_channel_id_from_alias(channel_id) + writer = Post.new + puts Status.writing + puts Status.post + lines_array = writer.compose + writer.check_message_length(lines_array) + @view.clear_screen + puts Status.posting + resp = writer.message({id: channel_id, text: lines_array.join("\n")}) + save_and_view(resp) + rescue => e + Errors.global_error({error: e, caller: caller, data: [channel_id]}) + end + end + def nowplaying(options = {}) np = NowPlaying.new(@api, @view, @workers) options['lastfm'] ? np.lastfm(options) : np.itunes(options) end @@ -689,9 +625,18 @@ puts "Docs:\t\t".color(:cyan) + "https://github.com/ericdke/na/tree/master/doc".color(Settings.options[:colors][:link]) puts "\n" rescue => e Errors.global_error({error: e, caller: caller, data: []}) end + end + + private + + def save_and_view(resp) + FileOps.save_post(resp) if Settings.options[:backup][:auto_save_sent_posts] + @view.clear_screen + puts Status.yourpost + @view.show_posted(resp) end end end