cloudconvert 0.0.3
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/.gitignore +17 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +64 -0
- data/Rakefile +1 -0
- data/cloudconvert.gemspec +26 -0
- data/lib/cloudconvert.rb +15 -0
- data/lib/cloudconvert/configuration.rb +21 -0
- data/lib/cloudconvert/conversion.rb +111 -0
- data/lib/cloudconvert/version.rb +3 -0
- metadata +120 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Pandurang
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
# Cloudconvert
|
2
|
+
|
3
|
+
Ruby wrapper for CloudConvert [CloudConvert ](https://cloudconvert.org/page/api)
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'cloudconvert'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install cloudconvert
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
This is a Ruby wrapper for Cloud Convert where you can convert files from one format to another format.
|
22
|
+
|
23
|
+
Configure CloudConvert
|
24
|
+
|
25
|
+
Cloudconvert.configure do |config|
|
26
|
+
config.api_key = your_api_key
|
27
|
+
config.callback = callback_url
|
28
|
+
end
|
29
|
+
|
30
|
+
In this if you specify callback_url then you will be notified on file conversion completion
|
31
|
+
|
32
|
+
Start a Conversion on Cloud convert
|
33
|
+
|
34
|
+
conversion = Cloudconvert::Conversion.new
|
35
|
+
|
36
|
+
# to start file conversion (options parameter is optional)
|
37
|
+
conversion.convert(inputformat, outputformat, file_path, options)
|
38
|
+
|
39
|
+
# options parameter is Conversion type specific options , which you can get from,
|
40
|
+
conversion.converter_options(inputformat, outputformat)
|
41
|
+
#it will return all possible conversion types and possible options(inputformat and outputformat are optional)
|
42
|
+
|
43
|
+
# to list all conversions
|
44
|
+
conversion.list_conversions
|
45
|
+
|
46
|
+
# to cancel conversion
|
47
|
+
conversion.cancel_conversion
|
48
|
+
|
49
|
+
# to delete conversion
|
50
|
+
conversion.delete_conversion
|
51
|
+
|
52
|
+
# to get download link of completed conversion
|
53
|
+
conversion.download_link
|
54
|
+
|
55
|
+
# to get current status of conversion
|
56
|
+
conversion.status
|
57
|
+
|
58
|
+
## Contributing
|
59
|
+
|
60
|
+
1. Fork it
|
61
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
62
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
63
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
64
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'cloudconvert/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "cloudconvert"
|
8
|
+
spec.version = Cloudconvert::VERSION
|
9
|
+
spec.authors = ["Pandurang Waghulde"]
|
10
|
+
spec.email = ["pandurang.plw@gmail.com"]
|
11
|
+
spec.description = "Ruby wrapper for Cloud Convert"
|
12
|
+
spec.summary = "Ruby wrapper for Cloud Convert"
|
13
|
+
spec.homepage = "https://github.com/pandurang90/cloudconvert"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
|
24
|
+
spec.add_dependency "faraday"
|
25
|
+
spec.add_dependency "json"
|
26
|
+
end
|
data/lib/cloudconvert.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "cloudconvert/version"
|
2
|
+
require "cloudconvert/configuration"
|
3
|
+
require "cloudconvert/conversion"
|
4
|
+
|
5
|
+
require "faraday"
|
6
|
+
require "json"
|
7
|
+
|
8
|
+
module Cloudconvert
|
9
|
+
# Your code goes here...
|
10
|
+
CONVERSION_URL = "https://api.cloudconvert.org/"
|
11
|
+
|
12
|
+
API_KEY_ERROR = "API Key cant be blank!"
|
13
|
+
Cloudconvert.configure
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
module Cloudconvert
|
3
|
+
class Configuration
|
4
|
+
attr_accessor :api_key, :callback
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
api_key = nil
|
8
|
+
callback = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
class << self
|
14
|
+
attr_accessor :configuration
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.configure
|
18
|
+
self.configuration ||= Configuration.new
|
19
|
+
yield(configuration) if block_given?
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
module Cloudconvert
|
2
|
+
class Conversion
|
3
|
+
attr_accessor :convert_request_url, :conn , :request_connection, :process_id, :conversion_connection
|
4
|
+
|
5
|
+
#request_connection => specific to file conversion
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
raise Cloudconvert::API_KEY_ERROR if Cloudconvert.configuration.api_key == nil
|
9
|
+
@conversion_connection = Faraday.new(:url => Cloudconvert::CONVERSION_URL)
|
10
|
+
end
|
11
|
+
|
12
|
+
#convert request for file
|
13
|
+
def convert(inputformat, outputformat, file_path = nil, options = [])
|
14
|
+
raise "File path cant be blank" if file_path == nil
|
15
|
+
@convert_request_url = start_conversion(inputformat, outputformat)
|
16
|
+
#initiate connection with new response host
|
17
|
+
initiate_connection(@convert_request_url)
|
18
|
+
upload(build_upload_params(file_path, outputformat, options))
|
19
|
+
end
|
20
|
+
|
21
|
+
#lists all conversions
|
22
|
+
def list_conversions
|
23
|
+
response = @conversion_connection.get '/processes', {:apikey => api_key }
|
24
|
+
parse_response(response.body)
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
#cancels current conversion
|
29
|
+
def cancel_conversion
|
30
|
+
response = @request_connection.get "/process/#{@process_id.to_s}/cancel"
|
31
|
+
parse_response(response.body)
|
32
|
+
end
|
33
|
+
|
34
|
+
#deletes finished conversion
|
35
|
+
def delete_conversion
|
36
|
+
response = @request_connection.get "/process/#{@process_id.to_s}/delete"
|
37
|
+
parse_response(response.body)
|
38
|
+
end
|
39
|
+
|
40
|
+
#upload request
|
41
|
+
def upload(upload_params)
|
42
|
+
response = @request_connection.post "/process/#{@process_id.to_s}", upload_params
|
43
|
+
parse_response(response.body)
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
# checks if conversion finished for process id and returns download link
|
48
|
+
def download_link
|
49
|
+
response = status
|
50
|
+
response["step"] == "finished" ? "http:#{response['output']['url']}" : nil
|
51
|
+
end
|
52
|
+
|
53
|
+
# checks status of conversion with process_id
|
54
|
+
def status
|
55
|
+
response = @request_connection.get "/process/#{@process_id.to_s}"
|
56
|
+
parse_response(response.body)
|
57
|
+
end
|
58
|
+
|
59
|
+
#returns all possible conversions and options
|
60
|
+
def converter_options(inputformat ="", outputformat = "")
|
61
|
+
response = @conversion_connection.get "conversiontypes", {:inputformat => inputformat,:outputformat => outputformat }
|
62
|
+
parse_response(response.body)
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
#######################################################################################################
|
67
|
+
#######################################################################################################
|
68
|
+
def api_key
|
69
|
+
raise Cloudconvert::API_KEY_ERROR if Cloudconvert.configuration.api_key == nil
|
70
|
+
Cloudconvert.configuration.api_key
|
71
|
+
end
|
72
|
+
|
73
|
+
def callback
|
74
|
+
Cloudconvert.configuration.callback
|
75
|
+
end
|
76
|
+
|
77
|
+
#send conversion http request
|
78
|
+
def conversion_post_request(inputformat, outputformat)
|
79
|
+
@conversion_connection.post "https://api.cloudconvert.org/process?inputformat=#{inputformat}&outputformat=#{outputformat}&apikey=#{api_key}"
|
80
|
+
end
|
81
|
+
|
82
|
+
def start_conversion(inputformat, outputformat)
|
83
|
+
response = conversion_post_request(inputformat,outputformat)
|
84
|
+
|
85
|
+
parsed_response = parse_response(response.body)
|
86
|
+
@process_id = parsed_response["id"]
|
87
|
+
|
88
|
+
"https://#{parsed_response['host']}"
|
89
|
+
end
|
90
|
+
|
91
|
+
def initiate_connection(url)
|
92
|
+
@request_connection = Faraday.new(:url => url)
|
93
|
+
end
|
94
|
+
|
95
|
+
#building params for local file
|
96
|
+
def build_upload_params(file_path, outputformat, options)
|
97
|
+
upload_params = { :format => outputformat, :options => options}
|
98
|
+
upload_params.merge!(:callback => callback) if callback != nil
|
99
|
+
upload_params.merge!(:input => "download",:link => file_path )
|
100
|
+
end
|
101
|
+
|
102
|
+
def parse_response(response)
|
103
|
+
JSON.parse(response)
|
104
|
+
end
|
105
|
+
|
106
|
+
#######################################################################################################
|
107
|
+
#######################################################################################################
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cloudconvert
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Pandurang Waghulde
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-04-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: faraday
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: json
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
description: Ruby wrapper for Cloud Convert
|
79
|
+
email:
|
80
|
+
- pandurang.plw@gmail.com
|
81
|
+
executables: []
|
82
|
+
extensions: []
|
83
|
+
extra_rdoc_files: []
|
84
|
+
files:
|
85
|
+
- .gitignore
|
86
|
+
- Gemfile
|
87
|
+
- LICENSE.txt
|
88
|
+
- README.md
|
89
|
+
- Rakefile
|
90
|
+
- cloudconvert.gemspec
|
91
|
+
- lib/cloudconvert.rb
|
92
|
+
- lib/cloudconvert/configuration.rb
|
93
|
+
- lib/cloudconvert/conversion.rb
|
94
|
+
- lib/cloudconvert/version.rb
|
95
|
+
homepage: https://github.com/pandurang90/cloudconvert
|
96
|
+
licenses:
|
97
|
+
- MIT
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
require_paths:
|
101
|
+
- lib
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
105
|
+
- - ! '>='
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
requirements: []
|
115
|
+
rubyforge_project:
|
116
|
+
rubygems_version: 1.8.23
|
117
|
+
signing_key:
|
118
|
+
specification_version: 3
|
119
|
+
summary: Ruby wrapper for Cloud Convert
|
120
|
+
test_files: []
|