module GHTorrent::EventProcessing

Public Instance Methods

CommitCommentEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 72
def CommitCommentEvent(data)
  user = data['repo']['name'].split(/\//)[0]
  repo = data['repo']['name'].split(/\//)[1]
  id = data['payload']['comment']['id']
  sha = data['payload']['comment']['commit_id']

  ghtorrent.ensure_commit_comment(user, repo, sha, id)
end
CreateEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 131
def CreateEvent(data)
  owner = data['repo']['name'].split(/\//)[0]
  repo = data['repo']['name'].split(/\//)[1]
  return unless data['payload']['ref_type'] == 'repository'

  ghtorrent.ensure_repo(owner, repo)
  ghtorrent.ensure_repo_recursive(owner, repo, false)
end
FollowEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 26
def FollowEvent(data)
  follower = data['actor']['login']
  followed = data['payload']['target']['login']
  created_at = data['created_at']

  ghtorrent.ensure_user_follower(followed, follower, created_at)
end
ForkEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 93
def ForkEvent(data)
  owner = data['repo']['name'].split(/\//)[0]
  repo = data['repo']['name'].split(/\//)[1]
  fork_id = data['payload']['forkee']['id']

  forkee_owner = data['payload']['forkee']['owner']['login']
  forkee_repo = data['payload']['forkee']['name']

  ghtorrent.ensure_fork(owner, repo, fork_id)
  ghtorrent.ensure_repo_recursive(forkee_owner, forkee_repo, true)
end
IssueCommentEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 122
def IssueCommentEvent(data)
  owner = data['repo']['name'].split(/\//)[0]
  repo = data['repo']['name'].split(/\//)[1]
  issue_id = data['payload']['issue']['number']
  comment_id = data['payload']['comment']['id']

  ghtorrent.ensure_issue_comment(owner, repo, issue_id, comment_id)
end
IssuesEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 114
def IssuesEvent(data)
  owner = data['repo']['name'].split(/\//)[0]
  repo = data['repo']['name'].split(/\//)[1]
  issue_id = data['payload']['issue']['number']

  ghtorrent.ensure_issue(owner, repo, issue_id)
end
MemberEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 34
def MemberEvent(data)
  owner = data['actor']['login']
  repo = data['repo']['name'].split(/\//)[1]
  new_member = data['payload']['member']['login']
  date_added = data['created_at']

  ghtorrent.transaction do
    pr_members = ghtorrent.get_db[:project_members]
    project = ghtorrent.ensure_repo(owner, repo)
    new_user = ghtorrent.ensure_user(new_member, false, false)

    if project.nil? or new_user.nil?
      return
    end

    memb_exist = pr_members.first(:user_id => new_user[:id],
                                  :repo_id => project[:id])

    if memb_exist.nil?
      added = if date_added.nil?
                max(project[:created_at], new_user[:created_at])
              else
                date_added
              end

      pr_members.insert(
          :user_id => new_user[:id],
          :repo_id => project[:id],
          :created_at => ghtorrent.date(added)
      )
      info "Added project member #{repo} -> #{new_member}"
    else
      debug "Project member #{repo} -> #{new_member} exists"
    end
  end

end
PullRequestEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 81
def PullRequestEvent(data)
  owner = data['payload']['pull_request']['base']['repo']['owner']['login']
  repo = data['payload']['pull_request']['base']['repo']['name']
  pullreq_id = data['payload']['number']
  action = data['payload']['action']
  actor = data['actor']['login']
  created_at = data['created_at']

  ghtorrent.ensure_pull_request(owner, repo, pullreq_id, true, true, true,
                                action, actor, created_at)
end
PullRequestReviewCommentEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 105
def PullRequestReviewCommentEvent(data)
  owner = data['repo']['name'].split(/\//)[0]
  repo = data['repo']['name'].split(/\//)[1]
  comment_id = data['payload']['comment']['id']
  pullreq_id = data['payload']['comment']['_links']['pull_request']['href'].split(/\//)[-1]

  ghtorrent.ensure_pullreq_comment(owner, repo, pullreq_id, comment_id)
end
PushEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 4
def PushEvent(data)
  data['payload']['commits'].each do |c|
    url = c['url'].split(/\//)

    unless url[7].match(/[a-f0-9]{40}$/)
      error "Ignoring commit #{sha}"
      return
    end

    ghtorrent.ensure_commit(url[5], url[7], url[4])
  end
end
WatchEvent(data) click to toggle source
# File lib/ghtorrent/event_processing.rb, line 17
def WatchEvent(data)
  owner = data['repo']['name'].split(/\//)[0]
  repo = data['repo']['name'].split(/\//)[1]
  watcher = data['actor']['login']
  created_at = data['created_at']

  ghtorrent.ensure_watcher(owner, repo, watcher, created_at)
end