lita-ship-to-pastebin 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lita/extensions/ship_to_pastebin.rb +5 -2
- data/lib/lita/handlers/bigtext.rb +5 -2
- data/lita-ship-to-pastebin.gemspec +4 -1
- data/spec/lita/extensions/ship_to_pastebin_spec.rb +4 -2
- data/spec/lita/handlers/bigtext_spec.rb +10 -1
- data/spec/spec_helper.rb +20 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1547015a664d24776e1ae54694b07877964ddc65
|
4
|
+
data.tar.gz: 5a672bc14ace993d1aa7ba58fc908caf07c182ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d000b99fbd33484bad5b6f38fcce3e5d6cca0e5d9f508d1d970f9e17449379445e2c69824fe8c59dd49abc1a45ec48ca8c07c88ec9897942cbc6537975e4f90c
|
7
|
+
data.tar.gz: 781e05929ba6eeea87b740d26796e7f45ec00e487c17ce7f7b7dae8bdbd477336d4fadae5d44d3e5032cbb99189f3a09ab20d2ad38810b8a2a645b5ef9aa0cb4
|
@@ -9,12 +9,14 @@ module Lita
|
|
9
9
|
|
10
10
|
PasteBinError = Class.new(StandardError)
|
11
11
|
|
12
|
-
def save_to_pastebin(message, title: "Lita's Wall of Text",
|
12
|
+
def save_to_pastebin(message, title: "Lita's Wall of Text",
|
13
|
+
api_key: API_KEY_DEFAULT )
|
13
14
|
begin
|
14
15
|
result = Faraday.post PASTEBIN_URL, {
|
15
16
|
api_dev_key: api_key,
|
16
17
|
api_paste_name: title,
|
17
18
|
api_paste_code: message,
|
19
|
+
api_paste_expire_date: '1D', # delete after a day
|
18
20
|
api_option: 'paste'
|
19
21
|
}
|
20
22
|
rescue Faraday::Error => err
|
@@ -22,7 +24,8 @@ module Lita
|
|
22
24
|
end
|
23
25
|
|
24
26
|
if !result.success? || result.body.include?('Bad API')
|
25
|
-
raise PasteBinError,
|
27
|
+
raise PasteBinError,
|
28
|
+
"Unable to deal with this Faraday response: [#{result.body}]"
|
26
29
|
end
|
27
30
|
|
28
31
|
result.body
|
@@ -16,11 +16,14 @@ module Lita
|
|
16
16
|
})
|
17
17
|
|
18
18
|
def hide_bigtext(message)
|
19
|
-
|
19
|
+
too_long = longtext
|
20
|
+
url_placeholder = snip_text too_long
|
21
|
+
message.reply url_placeholder
|
20
22
|
end
|
21
23
|
|
22
24
|
def snip_text(text)
|
23
|
-
Lita::Extensions::ShipToPastebin.new.
|
25
|
+
Lita::Extensions::ShipToPastebin.new.
|
26
|
+
save_to_pastebin(text, api_key: config.pastebin_api_key)
|
24
27
|
end
|
25
28
|
|
26
29
|
def longtext
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = 'lita-ship-to-pastebin'
|
3
|
-
spec.version = '0.1.
|
3
|
+
spec.version = '0.1.6'
|
4
4
|
spec.authors = ['Daniel J. Pritchett']
|
5
5
|
spec.email = ['dpritchett@gmail.com']
|
6
6
|
spec.description = 'Expose helper method to pastebin-ify any input text'
|
@@ -21,5 +21,8 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency 'rake'
|
22
22
|
spec.add_development_dependency 'rack-test'
|
23
23
|
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
24
|
+
|
25
|
+
# START:webmock
|
24
26
|
spec.add_development_dependency 'webmock', '~> 3.3'
|
27
|
+
# END:webmock
|
25
28
|
end
|
@@ -1,13 +1,15 @@
|
|
1
|
-
require 'webmock/rspec'
|
2
1
|
require 'spec_helper'
|
3
2
|
|
4
3
|
describe Lita::Extensions::ShipToPastebin, lita: true do
|
5
4
|
subject { Lita::Extensions::ShipToPastebin.new }
|
6
5
|
|
6
|
+
# thanks webmock!
|
7
7
|
before { stub_pastebin_calls! }
|
8
8
|
|
9
9
|
it 'saves text to pastebin' do
|
10
10
|
actual = subject.save_to_pastebin 'hey john', title: 'hey there john'
|
11
|
-
|
11
|
+
|
12
|
+
# e.g. https://pastebin.com/Vi4Cgn6i
|
13
|
+
expect(actual).to match(%r{^https:\/\/pastebin\.com\/[a-zA-Z0-9]+})
|
12
14
|
end
|
13
15
|
end
|
@@ -20,7 +20,16 @@ describe Lita::Handlers::Bigtext, lita_handler: true do
|
|
20
20
|
expect(result.split.length > 10).to be_falsey
|
21
21
|
|
22
22
|
# stubbing out Faraday calls to hide from Pastebin API limits
|
23
|
-
expect(result).to
|
23
|
+
expect(result).to(
|
24
|
+
match(%r{^https:\/\/pastebin\.com\/[a-zA-Z0-9]+})
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should use pastebin extension when responding to users' do
|
29
|
+
send_message 'Lita bigtext'
|
30
|
+
expect(replies.last).to(
|
31
|
+
match(%r{^https:\/\/pastebin\.com\/[a-zA-Z0-9]+})
|
32
|
+
)
|
24
33
|
end
|
25
34
|
end
|
26
35
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,20 +5,29 @@ require 'lita/rspec'
|
|
5
5
|
# was generated with Lita 4, the compatibility mode should be left disabled.
|
6
6
|
Lita.version_3_compatibility_mode = false
|
7
7
|
|
8
|
+
# START:stub_request
|
9
|
+
require 'webmock/rspec'
|
10
|
+
|
8
11
|
# call me in a before block anywhere you're calling pastebin!
|
9
12
|
# This will save you from fairly low-overhead API limits.
|
10
13
|
def stub_pastebin_calls!
|
11
14
|
stub_request(:post, 'https://pastebin.com/api/api_post.php')
|
12
15
|
.with(body: {
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
16
|
+
'api_dev_key' => /[a-f0-9]+/,
|
17
|
+
'api_option' => 'paste',
|
18
|
+
'api_paste_expire_date' => '1D',
|
19
|
+
'api_paste_code' => /\W+/,
|
20
|
+
'api_paste_name' => /\W+/ },
|
21
|
+
headers: {
|
22
|
+
'Accept' => '*/*',
|
23
|
+
'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
|
24
|
+
'Content-Type' => 'application/x-www-form-urlencoded',
|
25
|
+
'User-Agent' => 'Faraday v0.15.0'
|
26
|
+
})
|
27
|
+
.to_return(
|
28
|
+
status: 200,
|
29
|
+
body: 'https://pastebin.com/6ig4DLUQ',
|
30
|
+
headers: {}
|
31
|
+
)
|
24
32
|
end
|
33
|
+
# START:stub_request
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-ship-to-pastebin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Pritchett
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|