require 'twitter/arguments' require 'twitter/direct_message' require 'twitter/rest/api/utils' require 'twitter/user' require 'twitter/utils' module Twitter module REST module API module DirectMessages include Twitter::REST::API::Utils # Returns the 20 most recent direct messages sent to the authenticating user # # @see https://dev.twitter.com/docs/api/1.1/get/direct_messages # @note This method requires an access token with RWD (read, write & direct message) permissions. Consult The Application Permission Model for more information. # @rate_limited Yes # @authentication Requires user context # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid. # @return [Array] Direct messages sent to the authenticating user. # @param options [Hash] A customizable set of options. # @option options [Integer] :since_id Returns results with an ID greater than (that is, more recent than) the specified ID. # @option options [Integer] :max_id Returns results with an ID less than (that is, older than) or equal to the specified ID. # @option options [Integer] :count Specifies the number of records to retrieve. Must be less than or equal to 200. # @option options [Integer] :page Specifies the page of results to retrieve. def direct_messages_received(options = {}) objects_from_response(Twitter::DirectMessage, :get, '/1.1/direct_messages.json', options) end # Returns the 20 most recent direct messages sent by the authenticating user # # @see https://dev.twitter.com/docs/api/1.1/get/direct_messages/sent # @note This method requires an access token with RWD (read, write & direct message) permissions. Consult The Application Permission Model for more information. # @rate_limited Yes # @authentication Requires user context # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid. # @return [Array] Direct messages sent by the authenticating user. # @param options [Hash] A customizable set of options. # @option options [Integer] :since_id Returns results with an ID greater than (that is, more recent than) the specified ID. # @option options [Integer] :max_id Returns results with an ID less than (that is, older than) or equal to the specified ID. # @option options [Integer] :count Specifies the number of records to retrieve. Must be less than or equal to 200. # @option options [Integer] :page Specifies the page of results to retrieve. def direct_messages_sent(options = {}) objects_from_response(Twitter::DirectMessage, :get, '/1.1/direct_messages/sent.json', options) end # Returns a direct message # # @see https://dev.twitter.com/docs/api/1.1/get/direct_messages/show # @note This method requires an access token with RWD (read, write & direct message) permissions. Consult The Application Permission Model for more information. # @rate_limited Yes # @authentication Requires user context # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid. # @return [Twitter::DirectMessage] The requested messages. # @param id [Integer] A direct message ID. # @param options [Hash] A customizable set of options. def direct_message(id, options = {}) options[:id] = id object_from_response(Twitter::DirectMessage, :get, '/1.1/direct_messages/show.json', options) end # @note This method requires an access token with RWD (read, write & direct message) permissions. Consult The Application Permission Model for more information. # @rate_limited Yes # @authentication Requires user context # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid. # @return [Array] The requested messages. # @overload direct_messages(options = {}) # Returns the 20 most recent direct messages sent to the authenticating user # # @see https://dev.twitter.com/docs/api/1.1/get/direct_messages # @param options [Hash] A customizable set of options. # @option options [Integer] :since_id Returns results with an ID greater than (that is, more recent than) the specified ID. # @option options [Integer] :max_id Returns results with an ID less than (that is, older than) or equal to the specified ID. # @option options [Integer] :count Specifies the number of records to retrieve. Must be less than or equal to 200. # @option options [Integer] :page Specifies the page of results to retrieve. # @overload direct_messages(*ids) # Returns direct messages # # @see https://dev.twitter.com/docs/api/1.1/get/direct_messages/show # @param ids [Enumerable] A collection of direct message IDs. # @overload direct_messages(*ids, options) # Returns direct messages # # @see https://dev.twitter.com/docs/api/1.1/get/direct_messages/show # @param ids [Enumerable] A collection of direct message IDs. # @param options [Hash] A customizable set of options. def direct_messages(*args) arguments = Twitter::Arguments.new(args) if arguments.empty? direct_messages_received(arguments.options) else Twitter::Utils.parallel_map(arguments) do |id| direct_message(id, arguments.options) end end end # Destroys direct messages # # @see https://dev.twitter.com/docs/api/1.1/post/direct_messages/destroy # @note This method requires an access token with RWD (read, write & direct message) permissions. Consult The Application Permission Model for more information. # @rate_limited No # @authentication Requires user context # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid. # @return [Array] Deleted direct message. # @overload destroy_direct_message(*ids) # @param ids [Enumerable] A collection of direct message IDs. # @overload destroy_direct_message(*ids, options) # @param ids [Enumerable] A collection of direct message IDs. # @param options [Hash] A customizable set of options. def destroy_direct_message(*args) threaded_objects_from_response(Twitter::DirectMessage, :post, '/1.1/direct_messages/destroy.json', args) end deprecate_alias :direct_message_destroy, :destroy_direct_message # Sends a new direct message to the specified user from the authenticating user # # @see https://dev.twitter.com/docs/api/1.1/post/direct_messages/new # @rate_limited No # @authentication Requires user context # @raise [Twitter::Error::Unauthorized] Error raised when supplied user credentials are not valid. # @return [Twitter::DirectMessage] The sent message. # @param user [Integer, String, Twitter::User] A Twitter user ID, screen name, URI, or object. # @param text [String] The text of your direct message, up to 140 characters. # @param options [Hash] A customizable set of options. def create_direct_message(user, text, options = {}) merge_user!(options, user) options[:text] = text object_from_response(Twitter::DirectMessage, :post, '/1.1/direct_messages/new.json', options) end alias_method :d, :create_direct_message alias_method :m, :create_direct_message alias_method :dm, :create_direct_message deprecate_alias :direct_message_create, :create_direct_message end end end end