uploadcare 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +44 -0
- data/Rakefile +1 -0
- data/lib/uploadcare.rb +9 -0
- data/lib/uploadcare/file.rb +36 -0
- data/lib/uploadcare/uploadcare.rb +39 -0
- data/lib/uploadcare/version.rb +3 -0
- data/uploadcare.gemspec +24 -0
- metadata +93 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# Uploadcare Ruby Gem
|
2
|
+
|
3
|
+
Simple ruby gem to interact with the Uploadcare API
|
4
|
+
|
5
|
+
## Example Usage
|
6
|
+
|
7
|
+
require 'uploadcare'
|
8
|
+
pubkey = "d1531fba1b7fd176feaec8d1e7d86650ac549b9644e9279197a8c901243509dc"
|
9
|
+
pvtkey = "2f769cf086ece700f69fc58fb61e64a7708fee777068dc3f75798ae6166891f1"
|
10
|
+
file_id = "b6nn9f2d-1aj2-6q87-ofk0-265d8nki0diu"
|
11
|
+
ucare = Uploadcare.new(pubkey, pvtkey)
|
12
|
+
file = ucare.file(file_id)
|
13
|
+
file.info # Returns the files info hash
|
14
|
+
file.keep # Returns the updated info hash
|
15
|
+
|
16
|
+
## Example Info Hashes
|
17
|
+
|
18
|
+
### Preclaim Hash:
|
19
|
+
|
20
|
+
{
|
21
|
+
"upload_date"=>"2011-10-25 02:05:50",
|
22
|
+
"last_keep_claim"=>nil,
|
23
|
+
"on_s3"=>true,
|
24
|
+
"url"=>"http://api.uploadcare.com/api/files/b6nn9f2d-1aj2-6q87-ofk0-265d8nki0diu/",
|
25
|
+
"file_id"=>"b6nn9f2d-1aj2-6q87-ofk0-265d8nki0diu",
|
26
|
+
"original_filename"=>"test-image.png",
|
27
|
+
"original_file_url"=>nil
|
28
|
+
}
|
29
|
+
|
30
|
+
### Postclaim Hash:
|
31
|
+
|
32
|
+
{
|
33
|
+
"upload_date"=>"2011-10-25 02:05:50",
|
34
|
+
"last_keep_claim"=>"2011-10-25 02:19:06",
|
35
|
+
"on_s3"=>true,
|
36
|
+
"url"=>"http://api.uploadcare.com/api/files/b6nn9f2d-1aj2-6q87-ofk0-265d8nki0diu/",
|
37
|
+
"file_id"=>"b6nn9f2d-1aj2-6q87-ofk0-265d8nki0diu",
|
38
|
+
"original_filename"=>"test-image.png",
|
39
|
+
"original_file_url"=>"http://s3.amazonaws.com/uploadcare/b6nn9f2d-1aj2-6q87-ofk0-265d8nki0diu/testimage.png"
|
40
|
+
}
|
41
|
+
|
42
|
+
## Notes
|
43
|
+
All data in the examples (pubkey, pvtkey, file_id, example hashses) are intended to show usage and format. These values are randomly generated strings for this example and are therefore not valid. You must use your own public and private key, as well as a valid file id.
|
44
|
+
Since the API is still very limited, thats about the extent of what you can do. Once delete functionallity is added to the API I will update the gem
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/uploadcare.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
module Uploadcare
|
2
|
+
class File
|
3
|
+
def initialize(ucare, file_id)
|
4
|
+
@ucare = ucare
|
5
|
+
@file_id = file_id
|
6
|
+
@file_info = nil
|
7
|
+
@file_url = nil
|
8
|
+
end
|
9
|
+
|
10
|
+
def api_uri
|
11
|
+
"/files/#{@file_id}/"
|
12
|
+
end
|
13
|
+
|
14
|
+
def update_info
|
15
|
+
@file_info = @ucare.make_request('GET', api_uri).parsed_response
|
16
|
+
end
|
17
|
+
|
18
|
+
def info
|
19
|
+
update_info unless @file_info
|
20
|
+
@file_info
|
21
|
+
end
|
22
|
+
|
23
|
+
def url
|
24
|
+
@file_url = info['original_file_url'] unless @file_url
|
25
|
+
@file_url
|
26
|
+
end
|
27
|
+
|
28
|
+
def url=(file_url)
|
29
|
+
@file_url = file_url
|
30
|
+
end
|
31
|
+
|
32
|
+
def keep
|
33
|
+
@file_info = @ucare.make_request('POST', api_uri, {'keep' => 1}).parsed_response
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'openssl'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Uploadcare
|
6
|
+
class Uploadcare
|
7
|
+
include HTTParty
|
8
|
+
def initialize(public_key, private_key, timeout=5, api_base='http://api.uploadcare.com')
|
9
|
+
@public_key = public_key
|
10
|
+
@private_key = private_key
|
11
|
+
@timeout = timeout
|
12
|
+
self.class.base_uri api_base
|
13
|
+
end
|
14
|
+
|
15
|
+
def make_request(verb, uri, data={})
|
16
|
+
content = data.to_json
|
17
|
+
content = '' if data.empty?
|
18
|
+
content_type = 'application/json'
|
19
|
+
content_hash = Digest::MD5.hexdigest(content)
|
20
|
+
date = Time.now.gmtime.rfc2822.to_s
|
21
|
+
sign_string = [verb, content_hash, content_type, date, uri].join("\n")
|
22
|
+
sign = OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha1'), @private_key, sign_string)
|
23
|
+
headers = {'Authentication' => "UploadCare #{@public_key}:#{sign}", 'Date' => date, 'Content-Type' => content_type}
|
24
|
+
self.class.send(verb.downcase, uri, :headers => headers, :body => content)
|
25
|
+
end
|
26
|
+
|
27
|
+
def uuid_regex
|
28
|
+
/[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}/
|
29
|
+
end
|
30
|
+
|
31
|
+
def file(file_serialized)
|
32
|
+
raise "could not find uuid" unless file_serialized =~ uuid_regex
|
33
|
+
file_id = file_serialized.match(uuid_regex)[0]
|
34
|
+
file = File.new(self, file_id)
|
35
|
+
file.url = file_serialized if file_serialized.start_with?('http')
|
36
|
+
file
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/uploadcare.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "uploadcare/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "uploadcare"
|
7
|
+
s.version = Uploadcare::VERSION
|
8
|
+
s.authors = ["Geoffrey Byers"]
|
9
|
+
s.email = ["geoff@seaandco.com"]
|
10
|
+
s.homepage = "https://github.com/gdcbyers/uploadcare"
|
11
|
+
s.summary = "Uploadcare.com API Wrapper"
|
12
|
+
s.description = "Allow easy access to the Uploadcare.com API"
|
13
|
+
|
14
|
+
s.rubyforge_project = "uploadcare"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_development_dependency "rake"
|
22
|
+
s.add_runtime_dependency "httparty"
|
23
|
+
s.add_runtime_dependency "json"
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: uploadcare
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Geoffrey Byers
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-10-25 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &70254936882000 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70254936882000
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: httparty
|
27
|
+
requirement: &70254936881000 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70254936881000
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: json
|
38
|
+
requirement: &70254936879840 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70254936879840
|
47
|
+
description: Allow easy access to the Uploadcare.com API
|
48
|
+
email:
|
49
|
+
- geoff@seaandco.com
|
50
|
+
executables: []
|
51
|
+
extensions: []
|
52
|
+
extra_rdoc_files: []
|
53
|
+
files:
|
54
|
+
- .gitignore
|
55
|
+
- Gemfile
|
56
|
+
- README.md
|
57
|
+
- Rakefile
|
58
|
+
- lib/uploadcare.rb
|
59
|
+
- lib/uploadcare/file.rb
|
60
|
+
- lib/uploadcare/uploadcare.rb
|
61
|
+
- lib/uploadcare/version.rb
|
62
|
+
- uploadcare.gemspec
|
63
|
+
homepage: https://github.com/gdcbyers/uploadcare
|
64
|
+
licenses: []
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
require_paths:
|
68
|
+
- lib
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
hash: -4309817857322054467
|
78
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
segments:
|
85
|
+
- 0
|
86
|
+
hash: -4309817857322054467
|
87
|
+
requirements: []
|
88
|
+
rubyforge_project: uploadcare
|
89
|
+
rubygems_version: 1.8.6
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: Uploadcare.com API Wrapper
|
93
|
+
test_files: []
|