pbbin 0.2.4
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.
- checksums.yaml +7 -0
- data/bin/pbbin +8 -0
- data/lib/pbbin/cli.rb +40 -0
- data/lib/pbbin/exception.rb +4 -0
- data/lib/pbbin/uploader.rb +89 -0
- data/lib/pbbin/version.rb +5 -0
- data/lib/pbbin.rb +6 -0
- data/spec/spec_helper.rb +3 -0
- metadata +93 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ed73b54919610e9a5c10847ac9d94fc0e5c470106a68253fb33d28b913fef91d
|
4
|
+
data.tar.gz: 1a794bb28d82cc38dba468d7b46f15990f0a11cfa77438d828fb2833ce74a062
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 641f8771bd71b0c050185d443931579d9d092ce72ee74aec7da494fe5fd2ca294d2b10ac2215043f5094602a80649c3cfa5ca0250c0d55013aaca5281e40d931
|
7
|
+
data.tar.gz: b3862ceaaf80b6cc510469391e4e762a40c39e75ece496bb546b6c07681ad0232e1ef8b7c2d4ad9742afcdd5bf2c0c13097e9a113e4db23f75e8022f3b5c5669
|
data/bin/pbbin
ADDED
data/lib/pbbin/cli.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
module Haste
|
2
|
+
|
3
|
+
class CLI
|
4
|
+
|
5
|
+
# Create a new uploader
|
6
|
+
def initialize
|
7
|
+
@uploader = Uploader.new(
|
8
|
+
ENV['HASTE_SERVER'],
|
9
|
+
ENV['HASTE_USER'],
|
10
|
+
ENV['HASTE_PASS'],
|
11
|
+
ENV['HASTE_SSL_CERTS'])
|
12
|
+
end
|
13
|
+
|
14
|
+
# And then handle the basic usage
|
15
|
+
def start
|
16
|
+
# Take data in
|
17
|
+
if STDIN.tty?
|
18
|
+
key = @uploader.upload_path ARGV.first
|
19
|
+
else
|
20
|
+
key = @uploader.upload_raw STDIN.readlines.join
|
21
|
+
end
|
22
|
+
# Put together a URL
|
23
|
+
if ARGV.include?('--raw')
|
24
|
+
url = "#{@uploader.server_url}/raw/#{key}"
|
25
|
+
else
|
26
|
+
url = "#{@uploader.server_url}/#{key}"
|
27
|
+
end
|
28
|
+
# And write data out
|
29
|
+
if STDOUT.tty?
|
30
|
+
STDOUT.puts url
|
31
|
+
else
|
32
|
+
STDOUT.print url
|
33
|
+
end
|
34
|
+
rescue Exception => e
|
35
|
+
abort e.message
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'faraday'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
module Haste
|
6
|
+
|
7
|
+
DEFAULT_URL = 'https://pbbin.com'
|
8
|
+
|
9
|
+
class Uploader
|
10
|
+
|
11
|
+
attr_reader :server_url, :server_user, :server_pass, :ssl_certs
|
12
|
+
|
13
|
+
def initialize(server_url = nil, server_user = nil, server_pass = nil, ssl_certs = nil)
|
14
|
+
@server_url = server_url || Haste::DEFAULT_URL
|
15
|
+
@server_url = @server_url.dup
|
16
|
+
@server_url = @server_url.chop if @server_url.end_with?('/')
|
17
|
+
|
18
|
+
@server_user = server_user
|
19
|
+
@server_pass = server_pass
|
20
|
+
@ssl_certs = ssl_certs
|
21
|
+
end
|
22
|
+
|
23
|
+
# Take in a path and return a key
|
24
|
+
def upload_path(path)
|
25
|
+
fail_with 'No input file given' unless path
|
26
|
+
fail_with "#{path}: No such path" unless File.exists?(path)
|
27
|
+
upload_raw open(path).read
|
28
|
+
end
|
29
|
+
|
30
|
+
# Take in data and return a key
|
31
|
+
def upload_raw(data)
|
32
|
+
data.rstrip!
|
33
|
+
response = do_post data
|
34
|
+
if response.status == 200
|
35
|
+
data = JSON.parse(response.body)
|
36
|
+
data['key']
|
37
|
+
else
|
38
|
+
fail_with "failure uploading: #{response.body}"
|
39
|
+
end
|
40
|
+
rescue JSON::ParserError => e
|
41
|
+
fail_with "failure parsing response: #{e.message}"
|
42
|
+
rescue Errno::ECONNREFUSED => e
|
43
|
+
fail_with "failure connecting: #{e.message}"
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def post_path
|
49
|
+
parsed_uri = URI.parse(server_url)
|
50
|
+
"#{parsed_uri.path}/documents"
|
51
|
+
end
|
52
|
+
|
53
|
+
def do_post(data)
|
54
|
+
connection.post(post_path, data)
|
55
|
+
end
|
56
|
+
|
57
|
+
def connection
|
58
|
+
@connection ||= connection_set
|
59
|
+
end
|
60
|
+
|
61
|
+
def connection_set
|
62
|
+
return connection_https if @ssl_certs
|
63
|
+
connection_http
|
64
|
+
end
|
65
|
+
|
66
|
+
def connection_http
|
67
|
+
Faraday.new(:url => server_url) do |c|
|
68
|
+
connection_config(c)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def connection_https
|
73
|
+
Faraday.new(:url => server_url, :ssl => { :ca_path => @ssl_certs }) do |c|
|
74
|
+
connection_config(c)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def connection_config(config)
|
79
|
+
config.basic_auth(@server_user, @server_pass) if @server_user
|
80
|
+
config.adapter Faraday.default_adapter
|
81
|
+
end
|
82
|
+
|
83
|
+
def fail_with(msg)
|
84
|
+
raise Exception.new(msg)
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
data/lib/pbbin.rb
ADDED
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pbbin
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.4
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Christopher Anderson, John Crepezzi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-09-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.9'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.9'
|
55
|
+
description: CLI Haste Client for pbbin.com
|
56
|
+
email: john.crepezzi@gmail.com
|
57
|
+
executables:
|
58
|
+
- pbbin
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- bin/pbbin
|
63
|
+
- lib/pbbin.rb
|
64
|
+
- lib/pbbin/cli.rb
|
65
|
+
- lib/pbbin/exception.rb
|
66
|
+
- lib/pbbin/uploader.rb
|
67
|
+
- lib/pbbin/version.rb
|
68
|
+
- spec/spec_helper.rb
|
69
|
+
homepage: https://github.com/sfinktah/haste-client
|
70
|
+
licenses:
|
71
|
+
- MIT License
|
72
|
+
metadata: {}
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
requirements: []
|
88
|
+
rubygems_version: 3.1.2
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: Haste Client
|
92
|
+
test_files:
|
93
|
+
- spec/spec_helper.rb
|