require 'yaml' require 'fileutils' require_relative 'socialcast_api' def load_config(file) config = YAML::load_file(File.join(__dir__, file)) @domain = config['domain'] @username = config['username'] @password = config['password'] end def export @api = SocialcastApi.new @domain, @username, @password create_dir("output/users") create_dir("output/messages") export_users export_messages end def export_users(page = 1) users = @api.list_users(page: page) return if users.empty? users.each do |user| File.open("output/users/#{user['id']}.json", 'w') do |f| puts user['contact_info']['email'] f.write user.to_json f.close end end export_users page + 1 end def export_messages(page = 1) messages = @api.list_messages(page: page) return if messages.empty? messages.each do |message| File.open("output/messages/#{message['id']}.json", 'w') do |f| title = message['title'] title = message['body'] if title.empty? title = title.split('\n')[0][0..50] unless title.empty? puts "#{message['id']}: #{title}" f.write message.to_json f.close end end export_messages page + 1 end def create_dir(path) path = File.join(__dir__, path) unless File.directory?(path) FileUtils.mkdir_p(path) end end load_config ARGV.shift export