snapshot-ruby 0.2.1 → 0.3.0
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/lib/snapshot/connection.rb +31 -8
- data/lib/snapshot/image.rb +3 -4
- data/lib/snapshot/token.rb +19 -0
- data/lib/snapshot/url.rb +1 -1
- data/lib/snapshot/version.rb +1 -1
- data/lib/snapshot.rb +1 -0
- metadata +36 -15
data/lib/snapshot/connection.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'openssl'
|
3
|
+
require 'restclient'
|
1
4
|
require 'uri'
|
5
|
+
require 'time'
|
2
6
|
|
3
7
|
module Snapshot
|
4
8
|
class Connection
|
@@ -22,19 +26,38 @@ module Snapshot
|
|
22
26
|
end
|
23
27
|
end
|
24
28
|
|
25
|
-
|
26
|
-
|
27
|
-
def resource
|
28
|
-
@resource ||= RestClient::Resource.new(self.url, {
|
29
|
-
:user => self.access_key,
|
30
|
-
:password => self.secret_key
|
31
|
-
})
|
29
|
+
def delete(path)
|
30
|
+
request(:delete, path)
|
32
31
|
end
|
33
32
|
|
33
|
+
def get(path)
|
34
|
+
request(:get, path)
|
35
|
+
end
|
36
|
+
|
37
|
+
def post(path, payload={})
|
38
|
+
request(:post, path, payload)
|
39
|
+
end
|
40
|
+
|
34
41
|
# Returns a URL to Snapshot for the connection
|
35
42
|
#
|
36
43
|
def url
|
37
|
-
"http://#{domain}
|
44
|
+
"http://#{domain}"
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def request(method, path, payload = nil)
|
50
|
+
date = Time.now.httpdate
|
51
|
+
|
52
|
+
sha1 = OpenSSL::Digest::Digest.new('sha1')
|
53
|
+
message = "#{method.to_s.upcase}\n#{path}\n#{date}"
|
54
|
+
digest = Base64.encode64(OpenSSL::HMAC.digest(sha1, secret_key, message))
|
55
|
+
|
56
|
+
headers = { authorization: "HMAC #{access_key}:#{digest}", date: date }
|
57
|
+
|
58
|
+
params = { method: method, url: "#{url}#{path}", headers: headers }
|
59
|
+
params[:payload] = payload unless payload.nil?
|
60
|
+
RestClient::Request.execute(params)
|
38
61
|
end
|
39
62
|
end
|
40
63
|
end
|
data/lib/snapshot/image.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'json'
|
2
|
-
require 'rest_client'
|
3
2
|
|
4
3
|
module Snapshot
|
5
4
|
class Image
|
@@ -27,7 +26,7 @@ module Snapshot
|
|
27
26
|
#
|
28
27
|
def create(file)
|
29
28
|
file = File.open(file) if file.is_a?(String)
|
30
|
-
result = Snapshot.connection.
|
29
|
+
result = Snapshot.connection.post('/', file: file)
|
31
30
|
info = JSON.parse(result)['file']
|
32
31
|
|
33
32
|
self.new.tap do |img|
|
@@ -65,7 +64,7 @@ module Snapshot
|
|
65
64
|
# Snapshot::Image.find('a45af9b9e6ebab9c685faef4e72e7a14f3e24e1a')
|
66
65
|
#
|
67
66
|
def find(id)
|
68
|
-
result = Snapshot.connection.
|
67
|
+
result = Snapshot.connection.get("/#{id}")
|
69
68
|
info = JSON.parse(result)
|
70
69
|
|
71
70
|
self.new.tap do |img|
|
@@ -90,7 +89,7 @@ module Snapshot
|
|
90
89
|
# img.destroy
|
91
90
|
#
|
92
91
|
def destroy
|
93
|
-
Snapshot.connection.
|
92
|
+
Snapshot.connection.delete("/#{id}")
|
94
93
|
true
|
95
94
|
rescue RestClient::ResourceNotFound
|
96
95
|
nil
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Snapshot
|
2
|
+
class Token
|
3
|
+
attr_accessor :expires_in, :token
|
4
|
+
|
5
|
+
def self.create
|
6
|
+
result = Snapshot.connection.post('/token')
|
7
|
+
info = JSON.parse(result)
|
8
|
+
|
9
|
+
self.new.tap do |t|
|
10
|
+
t.expires_in = info['expires_in']
|
11
|
+
t.token = info['token']
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_s
|
16
|
+
token
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/snapshot/url.rb
CHANGED
data/lib/snapshot/version.rb
CHANGED
data/lib/snapshot.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snapshot-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,52 +9,72 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- - =
|
19
|
+
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 1.6.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - '='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.6.5
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rest-client
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
|
-
- - =
|
35
|
+
- - '='
|
31
36
|
- !ruby/object:Gem::Version
|
32
37
|
version: 1.6.7
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - '='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.6.7
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: fakeweb
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
|
-
- - =
|
51
|
+
- - '='
|
42
52
|
- !ruby/object:Gem::Version
|
43
53
|
version: '1.3'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.3'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rspec
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
|
-
- - =
|
67
|
+
- - '='
|
53
68
|
- !ruby/object:Gem::Version
|
54
69
|
version: 2.4.0
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - '='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.4.0
|
58
78
|
description: Snap is a very simple image storage and processing services for developers.
|
59
79
|
email:
|
60
80
|
- jeremy@jeremyboles.com
|
@@ -64,6 +84,7 @@ extra_rdoc_files: []
|
|
64
84
|
files:
|
65
85
|
- lib/snapshot/connection.rb
|
66
86
|
- lib/snapshot/image.rb
|
87
|
+
- lib/snapshot/token.rb
|
67
88
|
- lib/snapshot/url.rb
|
68
89
|
- lib/snapshot/version.rb
|
69
90
|
- lib/snapshot.rb
|
@@ -88,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
109
|
version: 1.3.7
|
89
110
|
requirements: []
|
90
111
|
rubyforge_project: snapshot-ruby
|
91
|
-
rubygems_version: 1.8.
|
112
|
+
rubygems_version: 1.8.24
|
92
113
|
signing_key:
|
93
114
|
specification_version: 3
|
94
115
|
summary: Ruby wrapper for storing and manipulating images via Snapshot.
|