Class: Issuesrc::Issuers::GithubIssuer

Inherits:
Object
  • Object
show all
Defined in:
lib/issuers/github_issuer.rb

Instance Method Summary collapse

Constructor Details

#initialize(args, config, event_loop) ⇒ GithubIssuer



12
13
14
15
16
17
18
# File 'lib/issuers/github_issuer.rb', line 12

def initialize(args, config, event_loop)
  @user, @repo = find_repo(args, config)
  @token = try_find_token(args, config)
  @event_loop = event_loop

  @issuesrc_label = try_find_issuesrc_label(args, config)
end

Instance Method Details

#async_close_issue(issue_id) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/issuers/github_issuer.rb', line 35

def async_close_issue(issue_id)
  ghreq(:patch, "/repos/#{@user}/#{@repo}/issues/#{issue_id}", {
    'state' => 'closed'
  }) do |req|
    yield if block_given?
  end
end

#async_create_issue(tag, &block) ⇒ Object



26
27
28
# File 'lib/issuers/github_issuer.rb', line 26

def async_create_issue(tag, &block)
  save_tag(tag, :post, "/repos/#{@user}/#{@repo}/issues", &block)
end

#async_load_issuesObject



20
21
22
23
24
# File 'lib/issuers/github_issuer.rb', line 20

def async_load_issues()
  queue = EM::Queue.new
  async_load_issues_pages(queue, 1)
  Issues.new(queue)
end

#async_update_issue(issue_id, tag, &block) ⇒ Object



30
31
32
33
# File 'lib/issuers/github_issuer.rb', line 30

def async_update_issue(issue_id, tag, &block)
  save_tag(tag, :patch, "/repos/#{@user}/#{@repo}/issues/#{issue_id}",
           &block)
end

#async_update_or_close_issues(prev_issues, tags_by_issue_id, &block) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/issuers/github_issuer.rb', line 43

def async_update_or_close_issues(prev_issues, tags_by_issue_id, &block)
  updated = Set.new

  prev_issues.each do |issue|
    issue_id = issue['number'].to_s

    if tags_by_issue_id.include? issue_id
      updated.add issue_id
      tag = tags_by_issue_id[issue_id]
      make_sure_issue_exists_and_then do |exists|
        if exists
          async_update_issue(issue_id, tag) do |tag|
            if !block.nil?
              yield issue_id, tag, :updated
            end
          end
        end
      end
    else
      async_close_issue(issue_id) do
        yield issue_id, nil, :closed
      end
    end
  end

  tags_by_issue_id.each do |issue_id, tag|
    if updated.include? issue_id
      next
    end
    make_sure_issue_exists_and_then do |exists|
      if exists
        async_update_issue(issue_id, tag) do |tag|
          if !block.nil?
            yield issue_id, tag, :updated
          end
        end
      end
    end
  end
end