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 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
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pathname'
4
+ path = Pathname.new(__FILE__)
5
+ require File.expand_path(File.dirname(path.realpath) + '/../lib/pbbin')
6
+
7
+ cli = Haste::CLI.new
8
+ cli.start
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,4 @@
1
+ module Haste
2
+ class Exception < StandardError
3
+ end
4
+ 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
@@ -0,0 +1,5 @@
1
+ module Haste
2
+
3
+ VERSION = '0.2.4'
4
+
5
+ end
data/lib/pbbin.rb ADDED
@@ -0,0 +1,6 @@
1
+ require File.dirname(__FILE__) + '/pbbin/uploader'
2
+ require File.dirname(__FILE__) + '/pbbin/exception'
3
+ require File.dirname(__FILE__) + '/pbbin/cli'
4
+
5
+ module Haste
6
+ end
@@ -0,0 +1,3 @@
1
+ require 'ostruct'
2
+
3
+ require File.dirname(__FILE__) + '/../lib/pbbin'
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