lib/slack/web/api/endpoints/channels.rb



# frozen_string_literal: true
# This file was auto-generated by lib/tasks/web.rake

module Slack
  module Web
    module Api
      module Endpoints
        module Channels
          #
          # Archives a channel.
          #
          # @option options [channel] :channel
          #   Channel to archive.
          # @see https://api.slack.com/methods/channels.archive
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.archive.json
          def channels_archive(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.archive', options)
          end

          #
          # Creates a channel.
          #
          # @option options [Object] :name
          #   Name of channel to create.
          # @option options [Object] :validate
          #   Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
          # @see https://api.slack.com/methods/channels.create
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.create.json
          def channels_create(options = {})
            throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
            post('channels.create', options)
          end

          #
          # Delete a channel (undocumented)
          #
          # @option options [channel] :channel
          #   Channel to delete.
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/channels/channels.delete.json
          def channels_delete(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            logger.warn('The channels.delete method is undocumented.')
            post('channels.delete', options)
          end

          #
          # Fetches history of messages and events from a channel.
          #
          # @option options [channel] :channel
          #   Channel to fetch history for.
          # @option options [Object] :inclusive
          #   Include messages with latest or oldest timestamp in results.
          # @option options [timestamp] :latest
          #   End of time range of messages to include in results.
          # @option options [timestamp] :oldest
          #   Start of time range of messages to include in results.
          # @option options [Object] :unreads
          #   Include unread_count_display in the output?.
          # @see https://api.slack.com/methods/channels.history
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.history.json
          def channels_history(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.history', options)
          end

          #
          # Gets information about a channel.
          #
          # @option options [channel] :channel
          #   Channel to get info on.
          # @option options [Object] :include_locale
          #   Set this to true to receive the locale for this channel. Defaults to false.
          # @see https://api.slack.com/methods/channels.info
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.info.json
          def channels_info(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.info', options)
          end

          #
          # Invites a user to a channel.
          #
          # @option options [channel] :channel
          #   Channel to invite user to.
          # @option options [user] :user
          #   User to invite to channel.
          # @see https://api.slack.com/methods/channels.invite
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.invite.json
          def channels_invite(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            options = options.merge(user: users_id(options)['user']['id']) if options[:user]
            post('channels.invite', options)
          end

          #
          # Joins a channel, creating it if needed.
          #
          # @option options [Object] :name
          #   Name of channel to join.
          # @option options [Object] :validate
          #   Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
          # @see https://api.slack.com/methods/channels.join
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.join.json
          def channels_join(options = {})
            throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
            post('channels.join', options)
          end

          #
          # Removes a user from a channel.
          #
          # @option options [channel] :channel
          #   Channel to remove user from.
          # @option options [user] :user
          #   User to remove from channel.
          # @see https://api.slack.com/methods/channels.kick
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.kick.json
          def channels_kick(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            options = options.merge(user: users_id(options)['user']['id']) if options[:user]
            post('channels.kick', options)
          end

          #
          # Leaves a channel.
          #
          # @option options [channel] :channel
          #   Channel to leave.
          # @see https://api.slack.com/methods/channels.leave
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.leave.json
          def channels_leave(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.leave', options)
          end

          #
          # Lists all channels in a Slack team.
          #
          # @option options [Object] :cursor
          #   Paginate through collections of data by setting the cursor parameter to a next_cursor attribute returned by a previous request's response_metadata. Default value fetches the first "page" of the collection. See pagination for more detail.
          # @option options [Object] :exclude_archived
          #   Exclude archived channels from the list.
          # @option options [Object] :exclude_members
          #   Exclude the members collection from each channel.
          # @option options [Object] :limit
          #   The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.
          # @see https://api.slack.com/methods/channels.list
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.list.json
          def channels_list(options = {})
            if block_given?
              Pagination::Cursor.new(self, :channels_list, options).each do |page|
                yield page
              end
            else
              post('channels.list', options)
            end
          end

          #
          # Sets the read cursor in a channel.
          #
          # @option options [channel] :channel
          #   Channel to set reading cursor in.
          # @option options [timestamp] :ts
          #   Timestamp of the most recently seen message.
          # @see https://api.slack.com/methods/channels.mark
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.mark.json
          def channels_mark(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.mark', options)
          end

          #
          # Renames a channel.
          #
          # @option options [channel] :channel
          #   Channel to rename.
          # @option options [Object] :name
          #   New name for channel.
          # @option options [Object] :validate
          #   Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
          # @see https://api.slack.com/methods/channels.rename
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.rename.json
          def channels_rename(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.rename', options)
          end

          #
          # Retrieve a thread of messages posted to a channel
          #
          # @option options [channel] :channel
          #   Channel to fetch thread from.
          # @option options [Object] :thread_ts
          #   Unique identifier of a thread's parent message.
          # @see https://api.slack.com/methods/channels.replies
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.replies.json
          def channels_replies(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            throw ArgumentError.new('Required arguments :thread_ts missing') if options[:thread_ts].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.replies', options)
          end

          #
          # Sets the purpose for a channel.
          #
          # @option options [channel] :channel
          #   Channel to set the purpose of.
          # @option options [Object] :purpose
          #   The new purpose.
          # @option options [Object] :name_tagging
          #   if it is true, treat this like a message and not an unescaped thing.
          # @see https://api.slack.com/methods/channels.setPurpose
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.setPurpose.json
          def channels_setPurpose(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            throw ArgumentError.new('Required arguments :purpose missing') if options[:purpose].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.setPurpose', options)
          end

          #
          # Sets the topic for a channel.
          #
          # @option options [channel] :channel
          #   Channel to set the topic of.
          # @option options [Object] :topic
          #   The new topic.
          # @see https://api.slack.com/methods/channels.setTopic
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.setTopic.json
          def channels_setTopic(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            throw ArgumentError.new('Required arguments :topic missing') if options[:topic].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.setTopic', options)
          end

          #
          # Unarchives a channel.
          #
          # @option options [channel] :channel
          #   Channel to unarchive.
          # @see https://api.slack.com/methods/channels.unarchive
          # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.unarchive.json
          def channels_unarchive(options = {})
            throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
            options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
            post('channels.unarchive', options)
          end
        end
      end
    end
  end
end