class Users

Public Class Methods

exit_on_failure?() click to toggle source
# File lib/sacrifice/users.rb, line 9
def self.exit_on_failure?()
  true
end

Public Instance Methods

change() click to toggle source
# File lib/sacrifice/users.rb, line 80
def change
  user = App.find!(options[:app]).find_user(options[:user])

  puts user

  if user
    success = user.change(options)
    if success
      puts 'Successfully changed user'
    else
      puts 'Failed to change user'
    end
  else
    raise Thor::Error, "Unknown user '#{options[:user]}'"
  end
end
create() click to toggle source
# File lib/sacrifice/users.rb, line 40
def create
  app = App.find!(options[:app])
  attrs = options.select { |k, v| %w(name installed locale).include? k.to_s }
  user = app.create_user(attrs)
  if user
    puts "User ID:      #{user.id}"
    puts "Access Token: #{user.access_token}"
    puts "Login URL:    #{user.login_url}"
    puts "Email:        #{user.email}"
    puts "Password:     #{user.password}"
  end
end
destroy() click to toggle source
# File lib/sacrifice/users.rb, line 135
def destroy
  app = App.find!(options[:app])
  while (users = app.users).size > 0
    users.each { |user|
      user.destroy
      puts "remove user ##{user.id}"
    }
  end
end
erase() click to toggle source
# File lib/sacrifice/users.rb, line 158
def erase
  Csv.erase options[:app], options[:file]
end
friend() click to toggle source
# File lib/sacrifice/users.rb, line 58
def friend
  users = App.find!(options[:app]).users

  friends = []
  [options[:user1], options[:user2]].each { |user|
    friends.push (users.find { |u| u.id.to_s == user } or raise Thor::Error, "No user found w/id #{user.inspect}")
  }

  # The first request is just a request, the second request accepts the first request.
  friends.each_index { |idx| friends[idx].send_friend_request_to(friends[(idx + 1) % 2]) }
end
friends() click to toggle source
# File lib/sacrifice/users.rb, line 168
def friends
  app = App.find!(options[:app])
  user = app.find_user(options[:user])
  Csv.friends user, Csv.ids(app, options[:friends])
end
generate() click to toggle source
# File lib/sacrifice/users.rb, line 150
def generate
  Csv.generate options[:app], options[:file], options[:friends]
end
list() click to toggle source
# File lib/sacrifice/users.rb, line 16
def list
  app = App.find!(options[:app])
  if app.users.any?
    shell.print_table([
                          ['User ID', 'Access Token', 'Login URL'],
                          *(app.users.map do |user|
                            [user.id, user.access_token, user.login_url]
                          end)
                      ])
  else
    puts "App #{app.name} has no users."
  end
end
rm() click to toggle source
# File lib/sacrifice/users.rb, line 101
  def rm
    user = App.find!(options[:app]).find_user(options[:user])

    if user
      result = user.destroy
      if result
        puts "User ID #{user.id} removed"
      else
        if @message.match /(\(#2903\) Cannot delete this test account because it is associated with other applications.)/
          error = <<-EOMSG.unindent.gsub(/^\|/, '')
#$1
              Run:
              |
                sacrifice users list-apps --app #{options[:app]} --user #{user.id}
              |
              then for each of the other apps, run:
              |
                sacrifice apps rm-user --app APP-NAME --user #{user.id}
              |
              Then re-run this command.
          EOMSG
        else
          error = @message
        end
        raise Thor::Error, error
      end
    else
      raise Thor::Error, "Unknown user '#{options[:user]}'"
    end
  end