New upstream version 12.3.8
This commit is contained in:
parent
860976d237
commit
1d92d9db41
15 changed files with 275 additions and 0 deletions
10
faraday-middleware-aws-signers-v4/.gitignore
vendored
Normal file
10
faraday-middleware-aws-signers-v4/.gitignore
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
/.bundle/
|
||||
/.yardoc
|
||||
/Gemfile.lock
|
||||
/_yardoc/
|
||||
/coverage/
|
||||
/doc/
|
||||
/pkg/
|
||||
/spec/reports/
|
||||
/tmp/
|
||||
test.rb
|
2
faraday-middleware-aws-signers-v4/.rspec
Normal file
2
faraday-middleware-aws-signers-v4/.rspec
Normal file
|
@ -0,0 +1,2 @@
|
|||
--color
|
||||
--require spec_helper
|
12
faraday-middleware-aws-signers-v4/.travis.yml
Normal file
12
faraday-middleware-aws-signers-v4/.travis.yml
Normal file
|
@ -0,0 +1,12 @@
|
|||
sudo: false
|
||||
cache: bundler
|
||||
language: ruby
|
||||
rvm:
|
||||
- 2.0.0
|
||||
- 2.1.10
|
||||
- 2.2.6
|
||||
- 2.3.3
|
||||
- 2.4.0
|
||||
script:
|
||||
- bundle install
|
||||
- bundle exec rake
|
4
faraday-middleware-aws-signers-v4/Gemfile
Normal file
4
faraday-middleware-aws-signers-v4/Gemfile
Normal file
|
@ -0,0 +1,4 @@
|
|||
source 'https://rubygems.org'
|
||||
|
||||
# Specify your gem's dependencies in faraday_middleware-aws-signers-v4.gemspec
|
||||
gemspec
|
21
faraday-middleware-aws-signers-v4/LICENSE.txt
Normal file
21
faraday-middleware-aws-signers-v4/LICENSE.txt
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Genki Sugawara
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
67
faraday-middleware-aws-signers-v4/README.md
Normal file
67
faraday-middleware-aws-signers-v4/README.md
Normal file
|
@ -0,0 +1,67 @@
|
|||
# FaradayMiddleware::AwsSignersV4
|
||||
|
||||
[Faraday](https://github.com/lostisland/faraday) middleware for AWS Signature Version 4.
|
||||
|
||||
[![Gem Version](https://badge.fury.io/rb/faraday_middleware-aws-signers-v4.svg)](http://badge.fury.io/rb/faraday_middleware-aws-signers-v4)
|
||||
[![Build Status](https://travis-ci.org/winebarrel/faraday_middleware-aws-signers-v4.svg)](https://travis-ci.org/winebarrel/faraday_middleware-aws-signers-v4)
|
||||
[![Coverage Status](https://coveralls.io/repos/winebarrel/faraday_middleware-aws-signers-v4/badge.svg?branch=master&service=github)](https://coveralls.io/github/winebarrel/faraday_middleware-aws-signers-v4?branch=master)
|
||||
|
||||
**Currently developing new gem to support aws-sdk-v3.**
|
||||
|
||||
**see https://github.com/winebarrel/faraday_middleware-aws-sigv4**
|
||||
|
||||
## Installation
|
||||
|
||||
Add this line to your application's Gemfile:
|
||||
|
||||
```ruby
|
||||
gem 'faraday_middleware-aws-signers-v4'
|
||||
```
|
||||
|
||||
And then execute:
|
||||
|
||||
$ bundle
|
||||
|
||||
Or install it yourself as:
|
||||
|
||||
$ gem install faraday_middleware-aws-signers-v4
|
||||
|
||||
## Usage
|
||||
|
||||
```ruby
|
||||
require 'faraday_middleware'
|
||||
require 'faraday_middleware/aws_signers_v4'
|
||||
require 'pp'
|
||||
|
||||
conn = Faraday.new(url: 'https://apigateway.us-east-1.amazonaws.com') do |faraday|
|
||||
faraday.request :aws_signers_v4,
|
||||
credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']),
|
||||
# If you use the credentials file:
|
||||
#credentials: Aws::SharedCredentials.new.credentials,
|
||||
service_name: 'apigateway',
|
||||
region: 'us-east-1'
|
||||
|
||||
faraday.response :json, :content_type => /\bjson\b/
|
||||
faraday.response :raise_error
|
||||
|
||||
faraday.adapter Faraday.default_adapter
|
||||
end
|
||||
|
||||
res = conn.get '/account'
|
||||
pp res.body
|
||||
# => {"accountUpdate"=>
|
||||
# {"name"=>nil,
|
||||
# "template"=>false,
|
||||
# "templateSkipList"=>nil,
|
||||
# "title"=>nil,
|
||||
# "updateAccountInput"=>nil},
|
||||
# "cloudwatchRoleArn"=>nil,
|
||||
# "self"=>
|
||||
# {"__type"=>
|
||||
# "GetAccountRequest:http://internal.amazon.com/coral/com.amazonaws.backplane.controlplane/",
|
||||
# "name"=>nil,
|
||||
# "template"=>false,
|
||||
# "templateSkipList"=>nil,
|
||||
# "title"=>nil},
|
||||
# "throttleSettings"=>{"burstLimit"=>1000, "rateLimit"=>500.0}}
|
||||
```
|
6
faraday-middleware-aws-signers-v4/Rakefile
Normal file
6
faraday-middleware-aws-signers-v4/Rakefile
Normal file
|
@ -0,0 +1,6 @@
|
|||
require 'bundler/gem_tasks'
|
||||
require 'rspec/core/rake_task'
|
||||
|
||||
RSpec::Core::RakeTask.new(:spec)
|
||||
|
||||
task :default => :spec
|
14
faraday-middleware-aws-signers-v4/bin/console
Executable file
14
faraday-middleware-aws-signers-v4/bin/console
Executable file
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
require "bundler/setup"
|
||||
require "faraday_middleware/aws_signers_v4"
|
||||
|
||||
# You can add fixtures and/or initialization code here to make experimenting
|
||||
# with your gem easier. You can also use a different console, if you like.
|
||||
|
||||
# (If you use this, don't forget to add pry to your Gemfile!)
|
||||
# require "pry"
|
||||
# Pry.start
|
||||
|
||||
require "irb"
|
||||
IRB.start
|
7
faraday-middleware-aws-signers-v4/bin/setup
Executable file
7
faraday-middleware-aws-signers-v4/bin/setup
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
bundle install
|
||||
|
||||
# Do any other automated setup that you need to do here
|
|
@ -0,0 +1,28 @@
|
|||
# coding: utf-8
|
||||
Gem::Specification.new do |spec|
|
||||
spec.name = 'faraday_middleware-aws-signers-v4'
|
||||
spec.version = '0.1.9'
|
||||
spec.authors = ['Genki Sugawara']
|
||||
spec.email = ['sgwr_dts@yahoo.co.jp']
|
||||
|
||||
spec.summary = %q{Faraday middleware for AWS Signature Version 4.}
|
||||
spec.description = %q{Faraday middleware for AWS Signature Version 4.}
|
||||
spec.homepage = 'https://github.com/winebarrel/faraday_middleware-aws-signers-v4'
|
||||
spec.license = 'MIT'
|
||||
|
||||
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
||||
spec.bindir = 'exe'
|
||||
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
||||
spec.require_paths = ['lib']
|
||||
|
||||
spec.add_dependency 'faraday', '~> 0.9'
|
||||
spec.add_dependency 'aws-sdk-resources', '>= 2', '< 3'
|
||||
|
||||
spec.add_development_dependency 'bundler'
|
||||
spec.add_development_dependency 'rake'
|
||||
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
||||
spec.add_development_dependency 'timecop'
|
||||
spec.add_development_dependency 'faraday_middleware'
|
||||
spec.add_development_dependency 'coveralls'
|
||||
spec.add_development_dependency 'webmock'
|
||||
end
|
|
@ -0,0 +1 @@
|
|||
require 'faraday_middleware/aws_signers_v4'
|
|
@ -0,0 +1,8 @@
|
|||
require 'aws-sdk-resources'
|
||||
require 'faraday'
|
||||
|
||||
module FaradayMiddleware
|
||||
autoload :AwsSignersV4, 'faraday_middleware/request/aws_signers_v4'
|
||||
|
||||
Faraday::Request.register_middleware :aws_signers_v4 => lambda { AwsSignersV4 }
|
||||
end
|
|
@ -0,0 +1,13 @@
|
|||
require 'aws-sdk-core/signers/v4'
|
||||
|
||||
module AwsSignersV4Ext
|
||||
def signed_headers(request)
|
||||
super.downcase
|
||||
end
|
||||
end
|
||||
|
||||
class Aws::Signers::V4
|
||||
unless Aws::Signers::V4 < AwsSignersV4Ext
|
||||
prepend AwsSignersV4Ext
|
||||
end
|
||||
end
|
|
@ -0,0 +1,25 @@
|
|||
require 'uri'
|
||||
require 'aws-sdk-resources'
|
||||
|
||||
module URI
|
||||
def self.seahorse_encode_www_form(params)
|
||||
params.map {|key, value|
|
||||
encoded_key = encode_www_form_component(key)
|
||||
|
||||
if value.nil?
|
||||
encoded_key
|
||||
elsif value.respond_to?(:to_ary)
|
||||
value.to_ary.map {|v|
|
||||
if v.nil?
|
||||
# bug?
|
||||
#encoded_key
|
||||
else
|
||||
encoded_key + '=' + Seahorse::Util.uri_escape(v)
|
||||
end
|
||||
}.join('&')
|
||||
else
|
||||
encoded_key + '=' + Seahorse::Util.uri_escape(value)
|
||||
end
|
||||
}.join('&')
|
||||
end
|
||||
end
|
|
@ -0,0 +1,57 @@
|
|||
require 'faraday_middleware/ext/uri_ext'
|
||||
require 'faraday_middleware/aws_signers_v4_ext'
|
||||
|
||||
class FaradayMiddleware::AwsSignersV4 < Faraday::Middleware
|
||||
class Request
|
||||
def initialize(env)
|
||||
@env = env
|
||||
end
|
||||
|
||||
def headers
|
||||
@env.request_headers
|
||||
end
|
||||
|
||||
def body
|
||||
@env.body || ''
|
||||
end
|
||||
|
||||
def endpoint
|
||||
url = @env.url.dup
|
||||
|
||||
# Escape the query string or the request won't sign correctly
|
||||
if url and url.query
|
||||
re_escape_query!(url)
|
||||
end
|
||||
|
||||
url
|
||||
end
|
||||
|
||||
def http_method
|
||||
@env.method.to_s.upcase
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def re_escape_query!(url)
|
||||
params = URI.decode_www_form(url.query)
|
||||
|
||||
if params.any? {|k, v| v =~ / / }
|
||||
url.query = URI.seahorse_encode_www_form(params)
|
||||
end
|
||||
end
|
||||
end # of class Request
|
||||
|
||||
def initialize(app, options = nil)
|
||||
super(app)
|
||||
|
||||
@credentials = options.fetch(:credentials)
|
||||
@service_name = options.fetch(:service_name)
|
||||
@region = options.fetch(:region)
|
||||
end
|
||||
|
||||
def call(env)
|
||||
req = Request.new(env)
|
||||
Aws::Signers::V4.new(@credentials, @service_name, @region).sign(req)
|
||||
@app.call(env)
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue