best3 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README +22 -2
  2. data/lib/best3.rb +21 -9
  3. metadata +25 -10
data/README CHANGED
@@ -1,3 +1,23 @@
1
- I'm still working on this, I'll try and be as polite as possible when I say 'go fart yourself'.
2
1
 
3
- Ryan.
2
+ PETE MADE A BETTER ONE!
3
+ https://github.com/envato/awsraw
4
+
5
+
6
+ #EXAMPLE:
7
+
8
+ # api wrapper w/ your aws credentials
9
+ s3 = Best3(aws_key, aws_secret_key).s3()
10
+
11
+ # make a call to s3, args are: http method, REST uri (w/ params), request headers, request body
12
+
13
+ # get a list of buckets
14
+ puts s3.('GET', '/').inspect
15
+
16
+ # put a custom acl on an object
17
+ puts s3.('PUT', '/path/to/object?acl', {'Content-Type' => 'text/xml'}, acl_in_xml)
18
+
19
+ # NOTES:
20
+ # all output is in the raw rest api output
21
+ # wraps signing of requests for you, which is a pain
22
+ # currently works with s3 and cloudfront
23
+ # very alpha so not all stuff is tested but the library is small
@@ -1,10 +1,9 @@
1
- #!/usr/bin/env ruby
1
+ #raise 'Best3 gem requires Ruby 1.9.x' unless RUBY_VERSION.include? '1.9.'
2
2
 
3
- raise 'requires ruby 1.9.2' unless RUBY_VERSION == '1.9.2'
4
- %w(rubygems openssl bundler/setup typhoeus nokogiri strscan ostruct digest/sha1 time).each { |lib| require(lib) }
3
+ %w(rubygems bundler/setup typhoeus nokogiri strscan ostruct digest/sha1 time openssl).each { |lib| require(lib) }
5
4
 
6
5
  class Best3
7
- VERSION = '0.0.2'
6
+ VERSION = '0.0.3'
8
7
 
9
8
  def initialize(*args)
10
9
  @key, @secret = args
@@ -27,14 +26,19 @@ class Best3
27
26
  end
28
27
 
29
28
  def call(request_method, uri, headers = {}, body = nil)
30
- _(request_method, uri, headers.clone, body)
29
+ YESTHISMETHODISCALLEDUNDERSCORE!(request_method, uri, headers.clone, body)
31
30
  end
32
31
 
33
32
  private
34
33
 
35
- def _(request_method, uri, headers, body = nil)
34
+ def YESTHISMETHODISCALLEDUNDERSCORE!(request_method, uri, headers, body = nil)
36
35
  response = Typhoeus::Request.send(request_method.downcase, "#{@host}#{uri}", :headers => make_headers(request_method, uri, headers, body), :body => body)
37
- OpenStruct.new({:code => response.code, :headers => response.headers_hash, :body => Nokogiri::XML(response.body), :response => response})
36
+ body = if response.headers_hash['Content-Type'] == 'application/xml'
37
+ Nokogiri::XML(response.body) # wrap up xml
38
+ else
39
+ response.body # pass through everything else
40
+ end
41
+ OpenStruct.new({:success? => response.code == 200, :code => response.code, :headers => response.headers_hash, :body => body, :response => response})
38
42
  end
39
43
 
40
44
  def make_headers(request_method, uri, headers, body = nil)
@@ -59,10 +63,18 @@ class Best3
59
63
  str << headers[key] # other headers just send the value
60
64
  end
61
65
  end
62
- if uri.include?('&')
63
- str << "#{StringScanner.new(uri).scan_until(/&/)[0..-2]}"
66
+ if uri.match(/\?versioning|\?location|\?acl|\?torrent|\?lifecycle|\?versionid/) # if there's a sub resource
67
+ if uri.include?('&')
68
+ str << "#{StringScanner.new(uri).scan_until(/&/)[0..-2]}"
69
+ else
70
+ str << uri
71
+ end
64
72
  else
73
+ if uri.include?('?')
74
+ str << "#{StringScanner.new(uri).scan_until(/\?/)[0..-2]}"
75
+ else
65
76
  str << uri
77
+ end
66
78
  end
67
79
  str = str.join("\n").chomp
68
80
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: best3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-23 00:00:00.000000000Z
12
+ date: 2012-06-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70126506754860 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70126506754860
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: typhoeus
27
- requirement: &70126506752640 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70126506752640
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: nokogiri
38
- requirement: &70126506750820 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,7 +53,12 @@ dependencies:
43
53
  version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70126506750820
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  description: Are you depressed? Has high interest rates got you down? My name is Meatwad
48
63
  and today I'm here to offer you a once in a lifetime opportunity. Sell your organs,
49
64
  live, over the internet. Get money back on your baby!
@@ -75,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
75
90
  version: '0'
76
91
  segments:
77
92
  - 0
78
- hash: -772524459860763143
93
+ hash: 2535164541368506169
79
94
  required_rubygems_version: !ruby/object:Gem::Requirement
80
95
  none: false
81
96
  requirements:
@@ -84,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
99
  version: '0'
85
100
  requirements: []
86
101
  rubyforge_project: best3
87
- rubygems_version: 1.8.6
102
+ rubygems_version: 1.8.23
88
103
  signing_key:
89
104
  specification_version: 3
90
105
  summary: Minimal library for interacting with the Amazon Web Service API.