convertible 0.0.1 → 0.0.2
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.
- data/README.md +6 -0
- data/bin/convertible +31 -2
- data/lib/convertible/cli.rb +13 -5
- data/lib/convertible/client.rb +11 -1
- data/lib/convertible/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -21,6 +21,9 @@ options to override. When using STDIN and/or STDOUT you have to use one or both
|
|
21
21
|
to specify the format of the data. To specify a file format, use the well known file name postfix
|
22
22
|
(i.e. pdf for PDF documents) or the official mime type string like application/pdf.
|
23
23
|
|
24
|
+
When passing an URL as input file the convertible.io service will attempt to load the input data
|
25
|
+
directly from there.
|
26
|
+
|
24
27
|
convert pdf to plain text:
|
25
28
|
convertible document.pdf document.txt
|
26
29
|
|
@@ -33,6 +36,9 @@ convertible -c -o txt document.pdf > document.txt
|
|
33
36
|
convert pdf to plain text using both STDIN/STDOUT:
|
34
37
|
convertible -i pdf -o txt < document.pdf > document.txt
|
35
38
|
|
39
|
+
scale down flickr image to 700x700px with cropping and write it to image.jpg:
|
40
|
+
convertible --width=700 --height=700 --crop http://farm7.static.flickr.com/6123/5994459827_ba62c5a5bb_b_d.jpg image.jpg
|
41
|
+
|
36
42
|
|
37
43
|
# Querying supported conversions
|
38
44
|
|
data/bin/convertible
CHANGED
@@ -2,10 +2,12 @@
|
|
2
2
|
|
3
3
|
require 'optparse'
|
4
4
|
require 'convertible/cli'
|
5
|
+
require 'yaml'
|
5
6
|
require 'pp'
|
6
7
|
|
7
8
|
@options = { :debug => false }
|
8
9
|
@max_file_args = 2
|
10
|
+
@config = File.expand_path '~/.convertible'
|
9
11
|
|
10
12
|
OptionParser.new do |optparser|
|
11
13
|
optparser.banner = <<-HELP
|
@@ -77,9 +79,24 @@ HELP
|
|
77
79
|
@max_file_args -= 1
|
78
80
|
end
|
79
81
|
|
82
|
+
optparser.on('-a', '--api-key=KEY', "use the given API key (will be stored in #{@config} for future use)") do |arg|
|
83
|
+
@api_key = arg
|
84
|
+
end
|
85
|
+
|
86
|
+
optparser.on(nil, '--width=WIDTH', "Image scaling: output width") do |arg|
|
87
|
+
@options[:width] = arg.to_i
|
88
|
+
end
|
89
|
+
optparser.on(nil, '--height=HEIGHT', "Image scaling: output height") do |arg|
|
90
|
+
@options[:height] = arg.to_i
|
91
|
+
end
|
92
|
+
optparser.on(nil, '--crop', "Image scaling: crop image to fit desired output dimensions") do
|
93
|
+
@options[:crop] = true
|
94
|
+
end
|
95
|
+
|
96
|
+
|
80
97
|
files = optparser.permute!(ARGV)
|
81
98
|
(puts optparser; exit(1)) unless files.size <= @max_file_args
|
82
|
-
|
99
|
+
|
83
100
|
@out ||= files.pop || 'STDOUT'
|
84
101
|
@in = files.pop || 'STDIN'
|
85
102
|
STDERR.puts "#{@in} => #{@out}\n#{@options.inspect}" if @options[:debug]
|
@@ -87,8 +104,20 @@ HELP
|
|
87
104
|
@command ||= :convert
|
88
105
|
end
|
89
106
|
|
107
|
+
if @api_key
|
108
|
+
(File.open(@config, 'w') << {:key => @api_key}.to_yaml).close
|
109
|
+
elsif File.readable?(@config)
|
110
|
+
@api_key = YAML.load(File.read(@config))[:key] rescue nil
|
111
|
+
end
|
112
|
+
|
113
|
+
if @api_key.nil?
|
114
|
+
puts "Please use the -a option to set your API key."
|
115
|
+
puts optparser
|
116
|
+
exit(1)
|
117
|
+
end
|
118
|
+
|
90
119
|
begin
|
91
|
-
Convertible::Cli.new(@in, @out, @options).send @command
|
120
|
+
Convertible::Cli.new(@api_key, @in, @out, @options).send @command
|
92
121
|
rescue ArgumentError
|
93
122
|
STDERR.puts $!
|
94
123
|
exit 1
|
data/lib/convertible/cli.rb
CHANGED
@@ -3,19 +3,27 @@ require 'convertible/mime_types'
|
|
3
3
|
|
4
4
|
module Convertible
|
5
5
|
class Cli
|
6
|
-
def initialize(input, output = nil, options = {})
|
6
|
+
def initialize(key, input, output = nil, options = {})
|
7
|
+
@key = key
|
7
8
|
@input = input
|
8
9
|
@output = output
|
9
10
|
@options = options
|
10
11
|
end
|
11
12
|
|
12
13
|
def convert
|
13
|
-
|
14
|
-
|
14
|
+
data = case @input
|
15
|
+
when 'STDIN'
|
16
|
+
$stdin.read
|
17
|
+
when /^https?:\/\//
|
18
|
+
URI.parse @input
|
19
|
+
else
|
20
|
+
File.read(@input) if File.readable?(@input)
|
15
21
|
end
|
16
|
-
|
22
|
+
raise ArgumentError, "cannot open #{@input} for reading" unless data
|
23
|
+
|
24
|
+
check_mimetypes !(URI === data)
|
17
25
|
$stderr.puts "converting #{@input} to #{@output} with options #{@options.inspect}" if @options[:debug]
|
18
|
-
|
26
|
+
|
19
27
|
response = client.convert data, @input_type, @output_type, @options
|
20
28
|
if @output == 'STDOUT'
|
21
29
|
$stdout << response
|
data/lib/convertible/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'httparty'
|
2
2
|
require 'json'
|
3
|
+
require 'uri'
|
3
4
|
|
4
5
|
module Convertible
|
5
6
|
API_ENDPOINT = 'http://api.convertible.io/'
|
@@ -7,10 +8,19 @@ module Convertible
|
|
7
8
|
class Client
|
8
9
|
include HTTParty
|
9
10
|
base_uri API_ENDPOINT
|
11
|
+
CONVERT = '/convert'
|
10
12
|
|
11
13
|
# content_type and output_content_type must be valid mime types like 'application/pdf' or 'text/plain'
|
14
|
+
# if an URI instance is passed as data, the content will be fetched server side from said uri. content_type is
|
15
|
+
# ignored an should be nil in this case (convertible.io will use the content type from the remote resource).
|
12
16
|
def convert(data, content_type, output_content_type, options = {})
|
13
|
-
response =
|
17
|
+
response = if URI === data
|
18
|
+
self.class.get CONVERT, :headers => { 'Accept' => output_content_type,
|
19
|
+
'X-Convert-Options' => option_string(options),
|
20
|
+
'X-Source' => data.to_s }
|
21
|
+
else
|
22
|
+
self.class.post CONVERT, :body => data, :headers => { 'Content-Type' => content_type, 'Accept' => output_content_type, 'X-Convert-Options' => option_string(options) }
|
23
|
+
end
|
14
24
|
if response.code == 200
|
15
25
|
return response
|
16
26
|
else
|
data/lib/convertible/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: convertible
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jens Kraemer
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-10-03 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|