fossbin 0.1.7

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
+ SHA1:
3
+ metadata.gz: 2ea4cbf7724bd248c8dfda8bf7b8eb048d26b717
4
+ data.tar.gz: 7d5cba65c0379f8cc9a4b130459bdea2e6044a03
5
+ SHA512:
6
+ metadata.gz: 4b2091e12742e2c4065b371ce826038d56cb08e8a199da2f3d03e7b774e029d902df18d6b6c87a92ce8afe9f8642dba48aeeee605c7bcd27b5fda9f82bf359d5
7
+ data.tar.gz: 4db7c0854bf27b618f78ce6632ab3d0a33abc487e80ca6afcb4199d0c4d24c4a1329a1f37343678fb35d9beb07afb33abfcab6af7ca24d989f77b423a4af668a
data/bin/fossbin ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+
5
+ require 'pathname'
6
+ path = Pathname.new(__FILE__)
7
+ require File.expand_path(File.dirname(path.realpath) + '/../lib/haste')
8
+
9
+ cli = Haste::CLI.new
10
+ cli.start
data/lib/haste/cli.rb ADDED
@@ -0,0 +1,36 @@
1
+ module Haste
2
+
3
+ class CLI
4
+
5
+ # Create a new uploader
6
+ def initialize
7
+ @uploader = Uploader.new ENV['HASTE_SERVER']
8
+ end
9
+
10
+ # And then handle the basic usage
11
+ def start
12
+ # Take data in
13
+ if STDIN.tty?
14
+ key = @uploader.upload_path ARGV.first
15
+ else
16
+ key = @uploader.upload_raw STDIN.readlines.join
17
+ end
18
+ # Put together a URL
19
+ if ARGV.include?('--raw')
20
+ url = "#{@uploader.server_url}/raw/#{key}"
21
+ else
22
+ url = "#{@uploader.server_url}/#{key}"
23
+ end
24
+ # And write data out
25
+ if STDOUT.tty?
26
+ STDOUT.puts url
27
+ else
28
+ STDOUT.print url
29
+ end
30
+ rescue Exception => e
31
+ abort e.message
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,4 @@
1
+ module Haste
2
+ class Exception < StandardError
3
+ end
4
+ end
@@ -0,0 +1,59 @@
1
+ require 'json'
2
+ require 'faraday'
3
+
4
+ module Haste
5
+
6
+ DEFAULT_URL = 'http://hastebin.com'
7
+
8
+ class Uploader
9
+
10
+ attr_reader :server_url
11
+
12
+ def initialize(server_url = nil)
13
+ @server_url = server_url || Haste::DEFAULT_URL
14
+ @server_url = @server_url.dup
15
+ @server_url = @server_url.chop if @server_url.end_with?('/')
16
+ end
17
+
18
+ # Take in a path and return a key
19
+ def upload_path(path)
20
+ fail_with 'No input file given' unless path
21
+ fail_with "#{path}: No such path" unless File.exists?(path)
22
+ upload_raw open(path).read
23
+ end
24
+
25
+ # Take in data and return a key
26
+ def upload_raw(data)
27
+ data.rstrip!
28
+ response = do_post data
29
+ if response.status == 200
30
+ data = JSON.parse(response.body)
31
+ data['key']
32
+ else
33
+ fail_with "failure uploading: #{response.body}"
34
+ end
35
+ rescue JSON::ParserError => e
36
+ fail_with "failure parsing response: #{e.message}"
37
+ rescue Errno::ECONNREFUSED => e
38
+ fail_with "failure connecting: #{e.message}"
39
+ end
40
+
41
+ private
42
+
43
+ def do_post(data)
44
+ connection.post('/documents', data)
45
+ end
46
+
47
+ def connection
48
+ @connection ||= Faraday.new(:url => server_url) do |c|
49
+ c.adapter Faraday.default_adapter
50
+ end
51
+ end
52
+
53
+ def fail_with(msg)
54
+ raise Exception.new(msg)
55
+ end
56
+
57
+ end
58
+
59
+ end
@@ -0,0 +1,5 @@
1
+ module Haste
2
+
3
+ VERSION = '0.1.7'
4
+
5
+ end
data/lib/haste.rb ADDED
@@ -0,0 +1,6 @@
1
+ require File.dirname(__FILE__) + '/haste/uploader'
2
+ require File.dirname(__FILE__) + '/haste/exception'
3
+ require File.dirname(__FILE__) + '/haste/cli'
4
+
5
+ module Haste
6
+ end
@@ -0,0 +1,2 @@
1
+ require 'bundler/setup'
2
+ require File.dirname(__FILE__) + '/../lib/haste'
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fossbin
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.7
5
+ platform: ruby
6
+ authors:
7
+ - John Crepezzi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-24 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'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: CLI fossbin Client
56
+ email: obetcc@gmail.com
57
+ executables:
58
+ - fossbin
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/haste.rb
63
+ - lib/haste/version.rb
64
+ - lib/haste/exception.rb
65
+ - lib/haste/cli.rb
66
+ - lib/haste/uploader.rb
67
+ - spec/spec_helper.rb
68
+ - bin/fossbin
69
+ homepage:
70
+ licenses: []
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubyforge_project:
88
+ rubygems_version: 2.0.13
89
+ signing_key:
90
+ specification_version: 4
91
+ summary: Haste Client
92
+ test_files:
93
+ - spec/spec_helper.rb