Sha256: 0a98071abec13a756ce3a3e300f43cbe6cca5ff93e6abc78ce42b71858ff4a46

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

require "json"
require "faraday"

module Slack
  class Client
    include Slack::Connection

    def initialize(team, token, options = {})
      @team       = team
      @token      = token
      @username   = options[:username]
      @channel    = options[:channel]

      validate_arguments
    end

    def post_message(text, channel, options = {})
      payload = Slack::Payload.new(
        text:       text,
        channel:    channel,
        username:   @username,
        token:      @token
      )

      post('chat.postMessage', payload)
    end

    def channels
      @channels ||= _channels
    end

    private

    def validate_arguments
      raise ArgumentError, "Team name required" if @team.nil?
      raise ArgumentError, "Token required"     if @token.nil?
      raise ArgumentError, "Invalid team name"  unless valid_team_name?
    end

    def valid_team_name?
      @team =~ /^[a-z\d\-]+$/ ? true : false
    end

    def _channels
      response = get('channels.list')
      response['channels']
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
slack.rb-0.0.4 lib/slack/client.rb
slack.rb-0.0.3 lib/slack/client.rb