octospy 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8e08f9448c067f8b3f4574259fef52f9f8aaeeda
4
- data.tar.gz: 2756eab8a7094619951b83abc0ea326a9db3586b
3
+ metadata.gz: 66a3c3615824ecfbdef2e8a16a9f3e635176583b
4
+ data.tar.gz: 98a7bc1a73bcc382107a29d8832bf71228ec3fca
5
5
  SHA512:
6
- metadata.gz: 8f359f1433beeba18c9d37fca46afe892042897e6309581e43c7964b5f4009e16838ce39127c5aad2091b42284cd1a2b703f8459725dc21aeab06957ff4e96a9
7
- data.tar.gz: 8b0ff9a217cdff09975808e77185931538b8344ad1cd139df0c330dc7dd04808731e6a7077bd77312c76732b9671d4ec17f245949666ba14f41842bebf9346de
6
+ metadata.gz: e08504e4ee353010971d1ecae483b1cccf477ce6dea702d32442d9393eafef8cbbd5b5fe240f57e0b8e85bf227b2aeda1c69a9e82fa79c1807e12c44907fca19
7
+ data.tar.gz: 3c964b19e168d43521c57778aa86708ba6a4f88f0324d8bd1bde0285ac3a9a388259a21d1ed3a834e47b28c03649ae51da9a7d132905c4b859996c44acb5971e
data/.env.example CHANGED
@@ -1,14 +1,17 @@
1
- # Required
1
+ ## Required
2
2
  SERVER=irc.yourserver.net
3
3
  CHANNELS=yourchannel
4
- GITHUB_LOGIN=yourusername
4
+ # OAuth access token
5
5
  GITHUB_TOKEN=e17e1c6caa3e452433ab55****************
6
+ # Basic Authentication
7
+ # GITHUB_LOGIN=yourusername
8
+ # GITHUB_PASSWORD=************
6
9
 
7
- # Options
10
+ ## Options
8
11
  # HOST=6668
9
12
  # SSL=true
10
13
  # PASSWORD=*****************
11
14
 
12
- # GitHub Enterprise
15
+ ## GitHub Enterprise
13
16
  # GITHUB_API_ENDPOINT=http://your.enterprise.domain/api/v3
14
17
  # GITHUB_WEB_ENDPOINT=http://your.enterprise.domain
data/README.md CHANGED
@@ -53,7 +53,6 @@ edit `.env`:
53
53
  ```sh
54
54
  SERVER=irc.yourserver.net
55
55
  CHANNELS=yourchannel
56
- GITHUB_LOGIN=yourusername
57
56
  GITHUB_TOKEN=e17e1c6caa3e452433ab55****************
58
57
  ```
59
58
 
@@ -7,6 +7,7 @@ module Octospy
7
7
  ssl
8
8
  password
9
9
  nick
10
+ worker_interval
10
11
  cinch_config_block
11
12
  github_api_endpoint
12
13
  github_web_endpoint
@@ -44,6 +45,7 @@ module Octospy
44
45
  @port = ENV['PORT']
45
46
  @ssl = !!ENV['SSL']
46
47
  @password = ENV['PASSWORD']
48
+ @worker_interval = ENV['WORKER_INTERVAL'] || 30 #sec
47
49
  @github_login = ENV['GITHUB_LOGIN']
48
50
  @github_token = ENV['GITHUB_TOKEN']
49
51
  @channels = ENV['CHANNELS'] ?
@@ -18,7 +18,7 @@ module Octospy
18
18
  status: "#{@event.payload.action} issue ##{@event.payload.issue.number}",
19
19
  title: @event.payload.issue.title,
20
20
  body: body,
21
- link: @event.payload.issue.html_url
21
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}/issues/#{@event.payload.issue.number}"
22
22
  }
23
23
  end
24
24
 
@@ -35,7 +35,7 @@ module Octospy
35
35
  status: status,
36
36
  title: title,
37
37
  body: "#{@event.payload.comment.body}".split_lfbl,
38
- link: @event.payload.comment.html_url
38
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}/issues/#{@event.payload.issue.number}#issuecomment-#{@event.payload.comment.id}"
39
39
  }
40
40
  end
41
41
  end
@@ -14,7 +14,7 @@ module Octospy
14
14
  {
15
15
  status: "#{@event.payload.action} member",
16
16
  title: user.login,
17
- link: "#{Octokit.web_endpoint}/#{user.login}"
17
+ link: "#{Octokit.web_endpoint}#{user.login}"
18
18
  }
19
19
  end
20
20
  end
@@ -6,7 +6,7 @@ module Octospy
6
6
  status: "#{@event.payload.action} pull request ##{@event.payload.number}",
7
7
  title: @event.payload.pull_request.title,
8
8
  body: "#{@event.payload.pull_request.body}".split_lfbl,
9
- link: @event.payload.pull_request.html_url
9
+ link: @event.payload.pull_request._links.html.attrs[:href]
10
10
  }
11
11
  end
12
12
 
@@ -0,0 +1,14 @@
1
+ module Octospy
2
+ class Parser
3
+ module Release
4
+ def parse_release_event
5
+ {
6
+ status: "#{@event.payload.release.draft ? 'published' : 'saved draft'} release",
7
+ title: "#{@event.payload.release.name}",
8
+ body: "#{@event.payload.release.body}".split_lfbl,
9
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}/releases/#{@event.payload.release.tag_name}"
10
+ }
11
+ end
12
+ end
13
+ end
14
+ end
@@ -15,7 +15,7 @@ module Octospy
15
15
  @event.payload.commits.each do |commit|
16
16
  verbose_commit = Octokit.commit(@event.repo.name, commit.sha)
17
17
  name = "#{verbose_commit.author ? verbose_commit.author.login : commit.author.name}"
18
- link = "#{Octokit.web_endpoint}/#{@event.repo.name}/commit/#{commit.sha}"
18
+ link = "#{Octokit.web_endpoint}#{@event.repo.name}/commit/#{commit.sha}"
19
19
  line = "#{name.colorize_for_irc.silver}: #{commit.message}"
20
20
  line << " - #{link.shorten.colorize_for_irc.blue}"
21
21
  body = body + "#{line}".split_lfbl
@@ -24,7 +24,7 @@ module Octospy
24
24
  {
25
25
  status: "pushed to #{@event.payload.ref.gsub('refs/heads/', '')}",
26
26
  body: body,
27
- link: "#{Octokit.web_endpoint}/#{@event.repo.name}",
27
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}",
28
28
  notice_body: true
29
29
  }
30
30
  end
@@ -36,14 +36,14 @@ module Octospy
36
36
  {
37
37
  status: "created repository",
38
38
  title: title,
39
- link: "#{Octokit.web_endpoint}/#{@event.repo.name}",
39
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}",
40
40
  repository: nil
41
41
  }
42
42
  else
43
43
  {
44
44
  status: "created #{@event.payload.ref_type}:#{@event.payload.ref}",
45
45
  title: @event.payload.description,
46
- link: "#{Octokit.web_endpoint}/#{@event.repo.name}"
46
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}"
47
47
  }
48
48
  end
49
49
  end
@@ -51,7 +51,7 @@ module Octospy
51
51
  def parse_delete_event
52
52
  {
53
53
  status: "deleted #{@event.payload.ref_type}:#{@event.payload.ref}",
54
- link: "#{Octokit.web_endpoint}/#{@event.repo.name}"
54
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}"
55
55
  }
56
56
  end
57
57
 
@@ -68,7 +68,7 @@ module Octospy
68
68
  def parse_public_event
69
69
  {
70
70
  status: "published #{@event.repo.name}",
71
- link: "#{Octokit.web_endpoint}/#{@event.repo.name}"
71
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}"
72
72
  }
73
73
  end
74
74
 
@@ -5,7 +5,7 @@ module Octospy
5
5
  {
6
6
  status: "#{@event.payload.action} repository",
7
7
  title: @event.repo.name,
8
- link: "#{Octokit.web_endpoint}/#{@event.repo.name}",
8
+ link: "#{Octokit.web_endpoint}#{@event.repo.name}",
9
9
  repository: nil
10
10
  }
11
11
  end
@@ -27,7 +27,7 @@ module Octospy
27
27
  status: "followed",
28
28
  title: title,
29
29
  body: profile.join(', '),
30
- link: "#{Octokit.web_endpoint}/#{user.login}",
30
+ link: "#{Octokit.web_endpoint}#{user.login}",
31
31
  repository: nil,
32
32
  notice: true
33
33
  }
@@ -7,6 +7,7 @@ require 'octospy/parser/pull_request'
7
7
  require 'octospy/parser/wiki'
8
8
  require 'octospy/parser/download'
9
9
  require 'octospy/parser/gist'
10
+ require 'octospy/parser/release'
10
11
 
11
12
  module Octospy
12
13
  class Parser
@@ -18,6 +19,7 @@ module Octospy
18
19
  include Wiki
19
20
  include Download
20
21
  include Gist
22
+ include Release
21
23
 
22
24
  def initialize(event)
23
25
  @event = event
@@ -99,7 +101,8 @@ module Octospy
99
101
  edited: :green,
100
102
  published: :blue,
101
103
  started: :rainbow,
102
- followed: :seven_eleven
104
+ followed: :seven_eleven,
105
+ saved: :cyan
103
106
  }
104
107
  end
105
108
 
@@ -1,3 +1,3 @@
1
1
  module Octospy
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -14,10 +14,10 @@ module Octospy
14
14
  loop do
15
15
  begin
16
16
  watch_repositories
17
- sleep 30
17
+ sleep Octospy.worker_interval
18
18
  rescue => e
19
- puts e.message
20
- sleep 30
19
+ @block.call e.message
20
+ sleep Octospy.worker_interval
21
21
  end
22
22
  end
23
23
  end
@@ -25,22 +25,33 @@ module Octospy
25
25
 
26
26
  def events
27
27
  @repositories.each_with_object([]) do |repo, arr|
28
+ if Octokit.rate_limit.remaining.zero?
29
+ @block.call "ヾ(;´Д`)ノ #{::Octokit.rate_limit}"
30
+ break
31
+ end
32
+
28
33
  arr.concat ::Octokit.repository_events(repo)
29
34
  end
30
35
  end
31
36
 
37
+ def while_ago
38
+ Time.now.utc - (60 * 30)
39
+ end
40
+
32
41
  def watch_repositories
33
- events.sort_by(&:id).reverse_each { |event|
34
- if @last_event_id.nil?
35
- next if Time.now.utc - (60*60) >= event.created_at
36
- else
37
- next if @last_event_id >= event.id
42
+ # ascending by event.id
43
+ events.sort_by(&:id).each { |event|
44
+ case
45
+ when @last_event_id.nil? && while_ago >= event.created_at
46
+ next
47
+ when !@last_event_id.nil? && @last_event_id >= event.id.to_i
48
+ next
38
49
  end
39
50
 
40
51
  parsed_event = Octospy.parse(event)
41
52
  next unless parsed_event
42
53
 
43
- @last_event_id = event.id
54
+ @last_event_id = event.id.to_i
44
55
  parsed_event.each { |p| @block.call p[:message] }
45
56
  }
46
57
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octospy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - linyows
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-26 00:00:00.000000000 Z
11
+ date: 2014-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -265,6 +265,7 @@ files:
265
265
  - lib/octospy/parser/issue.rb
266
266
  - lib/octospy/parser/organization.rb
267
267
  - lib/octospy/parser/pull_request.rb
268
+ - lib/octospy/parser/release.rb
268
269
  - lib/octospy/parser/repository.rb
269
270
  - lib/octospy/parser/user.rb
270
271
  - lib/octospy/parser/wiki.rb