class GitContacts::Request

Public Class Methods

create(hash) click to toggle source
# File lib/gitcontacts/Request.rb, line 10
def create hash
  # all keys are required
  obj = RequestObject.new
  obj.uid = hash[:uid]
  obj.gid = hash[:gid]
  obj.time = Time.now.to_i
  obj.card_id = hash[:card_id] if hash.member? :card_id
  obj.action = hash[:action]
  obj.content = hash[:content] if hash.member? :content
  obj.request_id
end
delete(request_id) click to toggle source
# File lib/gitcontacts/Request.rb, line 22
def delete request_id
  return true if RequestObject::delete(request_id) > 0
end
exist?(request_id) click to toggle source
# File lib/gitcontacts/Request.rb, line 6
def exist? request_id
  return true if RequestObject::exist?(request_id)
end
new(request_id) click to toggle source
# File lib/gitcontacts/Request.rb, line 28
def initialize request_id
  @obj =  RequestObject::access request_id
end

Public Instance Methods

allow(operator) click to toggle source
# File lib/gitcontacts/Request.rb, line 70
def allow operator
  author = User.new getuid
  operator = User.new operator
  contacts = Gitdb::Contacts.new(getuid).access getgid
  card = Gitdb::Card.new contacts.repo
  
  case getaction
  when 'create'
    card.create getuid 
  when 'setmeta'
    card.access(getcard_id).setmeta JSON.parse(getcontent, { symbolize_names: true })
  when 'setdata'
    card.access(getcard_id).setdata JSON.parse(getcontent, { symbolize_names: true })
  when 'delete'
    card.access(getcard_id).delete
  end
  
  commit_obj = {
    :author => { :name => author.getuid, :email => author.getemail, :time => Time.at(get_req_time.to_i) },
    :committer => { :name => operator.getuid, :email => operator.getemail, :time => Time.now }
  }

  contacts.make_a_commit commit_obj
  card.getmeta[:id]
end
auto_merge?(uid) click to toggle source

code review: @AustinChou

# File lib/gitcontacts/Request.rb, line 57
def auto_merge? uid
  if contacts = Contacts.new(getgid)
    if contacts.getadmins.include? uid
      return true
    else
      case getaction
      when "setdata" ,"delete"
        return true if Gitdb::Card.new(getgid).access(getcard_id).getmeta[:owner] == getuid # to-do
      end
    end
  end
end
deny() click to toggle source
# File lib/gitcontacts/Request.rb, line 96
def deny
  # deny merge here
  author = User.new getuid
  author.remove_request @obj.request_id
  Request::delete @obj.request_id
end
get_req_time() click to toggle source
# File lib/gitcontacts/Request.rb, line 48
def get_req_time
  @obj.time.value if @obj
end
getaction() click to toggle source
# File lib/gitcontacts/Request.rb, line 40
def getaction
  @obj.action.value if @obj
end
getcard_id() click to toggle source
# File lib/gitcontacts/Request.rb, line 44
def getcard_id
  @obj.card_id.value if @obj
end
getcontent() click to toggle source
# File lib/gitcontacts/Request.rb, line 52
def getcontent
  @obj.content.value if @obj
end
getgid() click to toggle source
# File lib/gitcontacts/Request.rb, line 36
def getgid
  @obj.gid.value if @obj
end
getuid() click to toggle source
# File lib/gitcontacts/Request.rb, line 32
def getuid
  @obj.uid.value if @obj
end