stalkerr 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,64 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://qiita.com/api/v1/auth
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"url_name":"jack@github","password":"nicholson"}'
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.8.7
12
+ Content-Type:
13
+ - application/json
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - '*/*'
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Access-Control-Allow-Origin:
24
+ - '*'
25
+ Cache-Control:
26
+ - max-age=0, private, must-revalidate
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ Date:
30
+ - Thu, 11 Apr 2013 16:02:45 GMT
31
+ Etag:
32
+ - '"c41eb759e11f23258693d0b868f41252"'
33
+ Server:
34
+ - nginx/1.2.7
35
+ Status:
36
+ - 200 OK
37
+ X-Content-Type-Options:
38
+ - nosniff
39
+ X-Frame-Options:
40
+ - SAMEORIGIN
41
+ X-Rack-Cache:
42
+ - invalidate, pass
43
+ X-Ratelimit-Limit:
44
+ - '150'
45
+ X-Ratelimit-Remaining:
46
+ - '149'
47
+ X-Request-Id:
48
+ - 0c4d69ebd35d6b83c00725123fc844b6
49
+ X-Runtime:
50
+ - '0.582722'
51
+ X-Ua-Compatible:
52
+ - IE=Edge,chrome=1
53
+ X-Xss-Protection:
54
+ - 1; mode=block
55
+ Content-Length:
56
+ - '72'
57
+ Connection:
58
+ - keep-alive
59
+ body:
60
+ encoding: UTF-8
61
+ string: '{"url_name":"jack@github","token":"1dfa266iekud408eb88845fda2d7zh5c"}'
62
+ http_version:
63
+ recorded_at: Thu, 11 Apr 2013 16:02:48 GMT
64
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,54 @@
1
+ # coding: utf-8
2
+
3
+ require 'simplecov'
4
+ require 'coveralls'
5
+
6
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
7
+ SimpleCov::Formatter::HTMLFormatter,
8
+ Coveralls::SimpleCov::Formatter
9
+ ]
10
+ SimpleCov.start
11
+
12
+ require 'stalkerr'
13
+ require 'rspec'
14
+ require 'webmock/rspec'
15
+ require 'vcr'
16
+ require 'awesome_print'
17
+
18
+ WebMock.disable_net_connect!(allow: 'coveralls.io')
19
+
20
+ RSpec.configure do |c|
21
+ c.include WebMock::API
22
+ end
23
+
24
+ VCR.configure do |c|
25
+ c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
26
+ c.hook_into :webmock
27
+ end
28
+
29
+ def fixture_path
30
+ File.expand_path('../fixtures', __FILE__)
31
+ end
32
+
33
+ def fixture(file)
34
+ File.new(fixture_path + '/' + file)
35
+ end
36
+
37
+ def json_response(file)
38
+ {
39
+ :body => fixture(file),
40
+ :headers => {
41
+ :content_type => 'application/json; charset=utf-8'
42
+ }
43
+ }
44
+ end
45
+
46
+ def method_missing(method, *args, &block)
47
+ if method =~ /^a_(get|post|put|delete)$/
48
+ a_request(Regexp.last_match[1].to_sym, *args, &block)
49
+ elsif method =~ /^stub_(get|post|put|delete|head|patch)$/
50
+ stub_request(Regexp.last_match[1].to_sym, *args, &block)
51
+ else
52
+ super
53
+ end
54
+ end
@@ -0,0 +1,50 @@
1
+ require 'helper'
2
+
3
+ describe Stalkerr::Extensions::String do
4
+ describe '.constantize' do
5
+ it 'returns class' do
6
+ expect('String'.constantize).to eq String
7
+ end
8
+ end
9
+
10
+ describe '.camerize' do
11
+ it 'returns camelcase' do
12
+ expect('foo_bar_baz'.camerize).to eq 'FooBarBaz'
13
+ end
14
+ end
15
+
16
+ describe '.split_by_crlf' do
17
+ let(:sentence) {
18
+ }
19
+
20
+ it 'returns array' do
21
+ sentence = <<-STRING.gsub(/^\s+/, '')
22
+ That lucid breeze in Ihatov,
23
+ Blue sky that has coolness at the bottom even in summer,
24
+ Morio which has been decorated with beautiful forest,
25
+ grass wave shines garishly in suburb.
26
+ STRING
27
+
28
+ expect(sentence.split_by_crlf).to eq(
29
+ [
30
+ 'That lucid breeze in Ihatov,',
31
+ 'Blue sky that has coolness at the bottom even in summer,',
32
+ 'Morio which has been decorated with beautiful forest,',
33
+ 'grass wave shines garishly in suburb.'
34
+ ]
35
+ )
36
+ end
37
+
38
+ context 'when empty string' do
39
+ it 'returns empty array' do
40
+ expect(''.split_by_crlf).to eq []
41
+ end
42
+ end
43
+ end
44
+
45
+ describe '.to_irc_color' do
46
+ it 'returns StringIrc' do
47
+ expect('String'.to_irc_color.class).to eq StringIrc
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,127 @@
1
+ require 'helper'
2
+
3
+ describe Stalkerr::Target::Github do
4
+ let(:username) { 'jack' }
5
+ let(:password) { 'nicholson' }
6
+ let(:path) { 'octokit_client/received_events' }
7
+ before { @github = described_class.new(username, password) }
8
+
9
+ describe '#initialize' do
10
+ subject { @github }
11
+
12
+ it { expect(subject.instance_variable_get :@username).to eq username }
13
+ it { expect(subject.instance_variable_get :@password).to eq password }
14
+ it { expect(subject.instance_variable_get :@last_event_id).to be_nil }
15
+ end
16
+
17
+ describe '#client' do
18
+ subject { @github.client }
19
+
20
+ it { expect(subject).to be_an_instance_of(Octokit::Client) }
21
+
22
+ context 'when call a second time' do
23
+ before { @id = @github.client.object_id }
24
+ it { expect(subject.object_id).to eq @id }
25
+ end
26
+
27
+ context 'when not authenticated' do
28
+ before do
29
+ Octokit::Client.any_instance.stub(:token_authenticated?).and_return(false)
30
+ @id = @github.client.object_id
31
+ end
32
+ it { expect(subject.object_id.eql? @id).to be_falsy }
33
+ end
34
+ end
35
+
36
+ describe '#stalking' do
37
+ let(:parse_result) { { event_id: 123456789 } }
38
+
39
+ before do
40
+ @github.stub(:parse).and_return(parse_result)
41
+ @github.stub(:posts).and_return(nil)
42
+ end
43
+
44
+ subject do
45
+ @github.stalking do |prefix, command, *params|
46
+ post(prefix, command, *params)
47
+ end
48
+ end
49
+
50
+ it 'return is array' do
51
+ VCR.use_cassette 'octokit_client/received_events', match_requests_on: [:path] do
52
+ expect(subject).to be_an_instance_of(Array)
53
+ end
54
+ end
55
+ end
56
+
57
+ describe '#parse' do
58
+ before do
59
+ @event = VCR.use_cassette path, match_requests_on: [:path] do
60
+ @github.client.received_events(username).sort_by(&:id).map { |e|
61
+ e if e.type == event_type
62
+ }.compact.last
63
+ end
64
+ end
65
+
66
+ subject { @github.parse(@event) }
67
+
68
+ context 'issues event' do
69
+ let(:event_type) { 'IssuesEvent' }
70
+
71
+ it 'matched status format' do
72
+ regex = /(created|closed) issue #[0-9]+/
73
+ expect(subject[:status].to_s).to match regex
74
+ end
75
+ end
76
+
77
+ context 'issue comment event' do
78
+ let(:event_type) { 'IssueCommentEvent' }
79
+
80
+ it 'matched status format' do
81
+ regex = /(commented on issue #[0-9]+|deleted issue comment)/
82
+ expect(subject[:status].to_s).to match regex
83
+ end
84
+ end
85
+
86
+ context 'pull request event' do
87
+ let(:event_type) { 'PullRequestEvent' }
88
+
89
+ it 'matched status format' do
90
+ regex = /(created|closed) pull request #[0-9]+/
91
+ expect(subject[:status].to_s).to match regex
92
+ end
93
+ end
94
+
95
+ context 'push event' do
96
+ let(:event_type) { 'PushEvent' }
97
+
98
+ it 'matched status format' do
99
+ VCR.use_cassette 'octokit_client/commit', match_requests_on: [:path] do
100
+ regex = /pushed to /
101
+ expect(subject[:status].to_s).to match regex
102
+ end
103
+ end
104
+
105
+ it 'noticeable' do
106
+ VCR.use_cassette 'octokit_client/commit', match_requests_on: [:path] do
107
+ expect(subject[:notice]).to be_truthy
108
+ end
109
+ end
110
+ end
111
+ end
112
+
113
+ describe '#shorten' do
114
+ let(:url) { 'https://github.com/linyows/stalkerr' }
115
+ let(:short_url) { 'http://git.io/CSRjYA' }
116
+ let(:api) { 'http://git.io/' }
117
+
118
+ before { @github = described_class.new('user', 'password') }
119
+
120
+ it 'request the correct resource' do
121
+ VCR.use_cassette 'gitio/response' do
122
+ res = @github.shorten(url)
123
+ expect(res).to eq(short_url)
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,33 @@
1
+ require 'helper'
2
+
3
+ describe Stalkerr::Target::Qiita do
4
+ let(:username) { 'jack@github' }
5
+ let(:password) { 'nicholson' }
6
+ before { @qiita = described_class.new(username, password) }
7
+
8
+ describe '#initialize' do
9
+ subject { @qiita }
10
+
11
+ it { expect(subject.instance_variable_get :@username).to eq username }
12
+ it { expect(subject.instance_variable_get :@password).to eq password }
13
+ it { expect(subject.instance_variable_get :@last_fetched_at).to be_nil }
14
+ it { expect(subject.instance_variable_get :@marker).to be_nil }
15
+ end
16
+
17
+ describe '#client' do
18
+ it 'qiita client instance' do
19
+ VCR.use_cassette 'qiita_client/login', match_requests_on: [:path] do
20
+ expect(@qiita.client).to be_an_instance_of(Qiita::Client)
21
+ end
22
+ end
23
+ end
24
+
25
+ describe '#stalking' do
26
+ end
27
+
28
+ describe '#parse' do
29
+ end
30
+
31
+ describe '#shorten' do
32
+ end
33
+ end
@@ -1,27 +1,28 @@
1
- require File.expand_path('../lib/stalkerr/version', __FILE__)
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'stalkerr/version'
2
5
 
3
- Gem::Specification.new do |gem|
4
- gem.authors = ['linyows']
5
- gem.email = ['linyows@gmail.com']
6
- gem.description = %q{Stalkerr is IRC Server for stalking :)}
7
- gem.summary = %q{Stalkerr is IRC Gateway, inspired by agig and atig.}
8
- gem.homepage = 'https://github.com/linyows/stalkerr'
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'stalkerr'
8
+ spec.version = Stalkerr::VERSION
9
+ spec.authors = ['linyows']
10
+ spec.email = ['linyows@gmail.com']
11
+ spec.description = %q{Stalkerr is IRC Server for stalking :)}
12
+ spec.summary = %q{Stalkerr is IRC Gateway, inspired by agig and atig.}
13
+ spec.homepage = 'https://github.com/linyows/stalkerr'
14
+ spec.license = 'MIT'
9
15
 
10
- gem.required_ruby_version = Gem::Requirement.new(">= 1.9.3")
16
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.0.0')
11
17
 
12
- gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
13
- gem.files = `git ls-files`.split("\n")
14
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
- gem.name = 'stalkerr'
16
- gem.require_paths = ['lib']
17
- gem.version = Stalkerr::VERSION
18
+ spec.files = `git ls-files`.split($/)
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
+ spec.require_paths = ['lib']
18
22
 
19
- gem.add_dependency 'net-irc', ['>= 0.0.9']
20
- gem.add_dependency 'json', ['>= 1.7.7']
21
- gem.add_dependency 'octokit', ['>= 0.0.9']
22
- gem.add_dependency 'string-irc', ['>= 0.3.0']
23
- gem.add_dependency 'qiita', ['>= 0.0.3']
24
-
25
- gem.add_development_dependency 'bundler'
26
- gem.add_development_dependency 'rspec'
23
+ spec.add_dependency 'net-irc', '~> 0.0.9'
24
+ spec.add_dependency 'json', '~> 1.7.7'
25
+ spec.add_dependency 'octokit', '~> 3.4.0'
26
+ spec.add_dependency 'string-irc', '~> 0.3.0'
27
+ spec.add_dependency 'qiita', '~> 0.0.3'
27
28
  end
metadata CHANGED
@@ -1,113 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stalkerr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - linyows
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-02 00:00:00.000000000 Z
11
+ date: 2014-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-irc
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.0.9
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.0.9
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.7.7
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.7.7
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: octokit
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.0.9
47
+ version: 3.4.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.0.9
54
+ version: 3.4.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: string-irc
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.3.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.3.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: qiita
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.0.3
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.0.3
83
- - !ruby/object:Gem::Dependency
84
- name: bundler
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '>='
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
83
  description: Stalkerr is IRC Server for stalking :)
112
84
  email:
113
85
  - linyows@gmail.com
@@ -116,7 +88,9 @@ executables:
116
88
  extensions: []
117
89
  extra_rdoc_files: []
118
90
  files:
119
- - .gitignore
91
+ - ".gitignore"
92
+ - ".rspec"
93
+ - ".travis.yml"
120
94
  - Gemfile
121
95
  - LICENSE
122
96
  - README.md
@@ -130,11 +104,21 @@ files:
130
104
  - lib/stalkerr/session.rb
131
105
  - lib/stalkerr/target.rb
132
106
  - lib/stalkerr/target/github.rb
107
+ - lib/stalkerr/target/github_enterprise.rb
133
108
  - lib/stalkerr/target/qiita.rb
134
109
  - lib/stalkerr/version.rb
110
+ - spec/fixtures/vcr_cassettes/gitio/response.yml
111
+ - spec/fixtures/vcr_cassettes/octokit_client/commit.yml
112
+ - spec/fixtures/vcr_cassettes/octokit_client/received_events.yml
113
+ - spec/fixtures/vcr_cassettes/qiita_client/login.yml
114
+ - spec/helper.rb
115
+ - spec/stalkerr/extensions/string_spec.rb
116
+ - spec/stalkerr/target/github_spec.rb
117
+ - spec/stalkerr/target/qiita_spec.rb
135
118
  - stalkerr.gemspec
136
119
  homepage: https://github.com/linyows/stalkerr
137
- licenses: []
120
+ licenses:
121
+ - MIT
138
122
  metadata: {}
139
123
  post_install_message:
140
124
  rdoc_options: []
@@ -142,18 +126,26 @@ require_paths:
142
126
  - lib
143
127
  required_ruby_version: !ruby/object:Gem::Requirement
144
128
  requirements:
145
- - - '>='
129
+ - - ">="
146
130
  - !ruby/object:Gem::Version
147
- version: 1.9.3
131
+ version: 2.0.0
148
132
  required_rubygems_version: !ruby/object:Gem::Requirement
149
133
  requirements:
150
- - - '>='
134
+ - - ">="
151
135
  - !ruby/object:Gem::Version
152
136
  version: '0'
153
137
  requirements: []
154
138
  rubyforge_project:
155
- rubygems_version: 2.0.0
139
+ rubygems_version: 2.2.2
156
140
  signing_key:
157
141
  specification_version: 4
158
142
  summary: Stalkerr is IRC Gateway, inspired by agig and atig.
159
- test_files: []
143
+ test_files:
144
+ - spec/fixtures/vcr_cassettes/gitio/response.yml
145
+ - spec/fixtures/vcr_cassettes/octokit_client/commit.yml
146
+ - spec/fixtures/vcr_cassettes/octokit_client/received_events.yml
147
+ - spec/fixtures/vcr_cassettes/qiita_client/login.yml
148
+ - spec/helper.rb
149
+ - spec/stalkerr/extensions/string_spec.rb
150
+ - spec/stalkerr/target/github_spec.rb
151
+ - spec/stalkerr/target/qiita_spec.rb