class Slackup
Constants
- Error
- RUN_ROOT
- SEMAPHORE
- VERSION
Attributes
client[R]
config[R]
dirname[R]
name[R]
Public Class Methods
backup(team_config = team_config())
click to toggle source
# File lib/slackup.rb, line 46 def self.backup(team_config = team_config()) team_config.each do |config| fork do new(config).execute end end p Process.waitall end
configure_client(token)
click to toggle source
# File lib/slackup.rb, line 35 def self.configure_client(token) client = nil SEMAPHORE.synchronize do Slack.configure do |config| config.token = token end client = Slack.client end client end
new(config, client=nil)
click to toggle source
# File lib/slackup.rb, line 57 def initialize(config, client=nil) @config = config @name = config.fetch("nickname") { config.fetch("name") } @client = client || configure_client FileUtils.mkdir_p(name) end
run_root()
click to toggle source
# File lib/slackup.rb, line 17 def self.run_root RUN_ROOT end
team_config()
click to toggle source
# File lib/slackup.rb, line 27 def self.team_config if team_config_file.readable? YAML.load(team_config_file.read) else fail Error, "No team config file found. See README for instructions." end end
team_config_file()
click to toggle source
# File lib/slackup.rb, line 23 def self.team_config_file Pathname.glob(run_root.join("slack_teams.{json,yml,yaml}")).first end
Public Instance Methods
configure_client()
click to toggle source
# File lib/slackup.rb, line 78 def configure_client token = config.fetch("token") self.class.configure_client(token) end
execute()
click to toggle source
# File lib/slackup.rb, line 64 def execute authorize! && write! end
write!()
click to toggle source
# File lib/slackup.rb, line 68 def write! Dir.chdir(dirname) do Channels.new(config, client).write! Groups.new(config, client).write! Stars.new(config, client).write! user_client.write! Ims.new(config, client).write! end end
Private Instance Methods
backup_filename(name)
click to toggle source
# File lib/slackup.rb, line 147 def backup_filename(name) "#{name}.yml" end
format_messages(messages)
click to toggle source
# File lib/slackup.rb, line 112 def format_messages(messages) if messages.nil? $stderr.puts "Messages nil #{caller[0..1]}" return [] end messages.reverse.map { |msg| if msg.has_key?("text") && msg.has_key?("user") msg["user"] = user_name(msg["user"]) msg["text"].gsub!(/<@(?<userid>U[A-Z0-9]+)>/) { userid = $~[:userid] # MatchData "<@#{user_name(userid)}>" } msg else nil end }.compact end
serialize(obj)
click to toggle source
# File lib/slackup.rb, line 143 def serialize(obj) obj.to_yaml end
user_client()
click to toggle source
# File lib/slackup.rb, line 131 def user_client @user_client ||= Users.new(config, client) end
user_name(user_id)
click to toggle source
# File lib/slackup.rb, line 139 def user_name(user_id) user_client.user_name(user_id) end
users()
click to toggle source
# File lib/slackup.rb, line 135 def users user_client.users end
with_messages(name, query_result) { |query_result| ... }
click to toggle source
{“ok”=>false, “error”=>“ratelimited”} {“ok”=>false, “error”=>“token_revoked”
# File lib/slackup.rb, line 102 def with_messages(name, query_result) if query_result["ok"] yield query_result["messages"] else error = query_result["error"] $stderr.puts "#{name}, error: #{error}" exit 1 if error =~ /ratelimited/ end end