best3 0.0.2 → 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.
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.