faraday-middleware-aws-sigv4-0.3.0/0000755000175000017500000000000013715004124016077 5ustar pravipravifaraday-middleware-aws-sigv4-0.3.0/.coveralls.yml0000644000175000017500000000003013715004124020663 0ustar pravipraviservice_name: travis-ci faraday-middleware-aws-sigv4-0.3.0/lib/0000755000175000017500000000000013715004124016645 5ustar pravipravifaraday-middleware-aws-sigv4-0.3.0/lib/faraday_middleware/0000755000175000017500000000000013715004124022451 5ustar pravipravifaraday-middleware-aws-sigv4-0.3.0/lib/faraday_middleware/aws_sigv4.rb0000644000175000017500000000026313715004124024705 0ustar pravipravirequire 'faraday' module FaradayMiddleware autoload :AwsSigV4, 'faraday_middleware/request/aws_sigv4' Faraday::Request.register_middleware aws_sigv4: lambda { AwsSigV4 } end faraday-middleware-aws-sigv4-0.3.0/lib/faraday_middleware/request/0000755000175000017500000000000013715004124024141 5ustar pravipravifaraday-middleware-aws-sigv4-0.3.0/lib/faraday_middleware/request/aws_sigv4.rb0000644000175000017500000000140013715004124026367 0ustar pravipravirequire 'aws-sigv4' require 'faraday_middleware/request/aws_sigv4_util' class FaradayMiddleware::AwsSigV4 < Faraday::Middleware include FaradayMiddleware::AwsSigV4Util def initialize(app, options = nil) super(app) @signer = Aws::Sigv4::Signer.new(options) @options = options end def call(env) sign!(env) @app.call(env) end private def sign!(env) request = build_aws_sigv4_request(env) signature = @signer.sign_request(request) signature.headers.each do |name, value| env.request_headers[name] = value end end def build_aws_sigv4_request(env) { http_method: env.method.to_s, url: seahorse_encode_query(env.url), headers: env.request_headers, body: env.body, } end end faraday-middleware-aws-sigv4-0.3.0/lib/faraday_middleware/request/aws_sigv4_util.rb0000644000175000017500000000125213715004124027431 0ustar pravipravimodule FaradayMiddleware::AwsSigV4Util def seahorse_encode_query(url) return url unless url.query params = URI.decode_www_form(url.query) if params.any? {|_, v| v[?\s] } url = url.dup url.query = seahorse_encode_www_form(params) end url end def seahorse_encode_www_form(params) params.flat_map {|key, value| encoded_key = URI.encode_www_form_component(key) if value.nil? encoded_key else Array(value).map do |v| if v.nil? # nothing to do else encoded_key + '=' + Aws::Sigv4::Signer.uri_escape(v) end end end }.join(?&) end end faraday-middleware-aws-sigv4-0.3.0/.travis.yml0000644000175000017500000000026313715004124020211 0ustar pravipravisudo: false language: ruby cache: bundler rvm: - 2.3.8 - 2.4.7 - 2.5.6 - 2.6.4 script: - bundle exec rake gemfile: - gemfiles/faraday_0.15.gemfile - gemfiles/faraday_0.16.gemfile faraday-middleware-aws-sigv4-0.3.0/.simplecov0000644000175000017500000000011713715004124020100 0ustar pravipraviSimpleCov.start do # exclude directories and files add_filter "/spec/" end faraday-middleware-aws-sigv4-0.3.0/Gemfile0000644000175000017500000000016113715004124017370 0ustar pravipravisource 'https://rubygems.org' # Specify your gem's dependencies in faraday_middleware-aws-sigv4.gemspec gemspec faraday-middleware-aws-sigv4-0.3.0/README.md0000644000175000017500000000467213715004124017367 0ustar pravipravi# FaradayMiddleware::AwsSigV4 [Faraday](https://github.com/lostisland/faraday) middleware for AWS Signature Version 4 using [aws-sigv4](https://rubygems.org/gems/aws-sigv4). [![Gem Version](https://badge.fury.io/rb/faraday_middleware-aws-sigv4.svg)](https://badge.fury.io/rb/faraday_middleware-aws-sigv4) [![Build Status](https://travis-ci.org/winebarrel/faraday_middleware-aws-sigv4.svg?branch=master)](https://travis-ci.org/winebarrel/faraday_middleware-aws-sigv4) [![Coverage Status](https://coveralls.io/repos/github/winebarrel/faraday_middleware-aws-sigv4/badge.svg?branch=master)](https://coveralls.io/github/winebarrel/faraday_middleware-aws-sigv4?branch=master) * `faraday_middleware-aws-sigv4 < 0.3.0` * `faraday < 0.15` * `faraday_middleware-aws-sigv4 >= 0.3.0` * `ruby >= 2.3` * `faraday >= 0.15` ## Installation Add this line to your application's Gemfile: ```ruby gem 'faraday_middleware-aws-sigv4' ``` And then execute: $ bundle Or install it yourself as: $ gem install faraday_middleware-aws-sigv4 ## Usage ```ruby # `gem install faraday_middleware` is required. require 'faraday_middleware' require 'faraday_middleware/aws_sigv4' require 'pp' conn = Faraday.new(url: 'https://apigateway.us-east-1.amazonaws.com') do |faraday| faraday.request :aws_sigv4, service: 'apigateway', region: 'us-east-1', access_key_id: ENV['AWS_ACCESS_KEY_ID'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'] # see http://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Sigv4/Signer.html faraday.response :json, content_type: /\bjson\b/ faraday.response :raise_error faraday.adapter Faraday.default_adapter end res = conn.get '/account' pp res.body #=> {"_links"=> # {"curies"=> # {"href"=> # "http://docs.aws.amazon.com/apigateway/latest/developerguide/account-apigateway-{rel}.html", # "name"=>"account", # "templated"=>true}, # "self"=>{"href"=>"/account"}, # "account:update"=>{"href"=>"/account"}}, # "throttleSettings"=>{"rateLimit"=>10000.0, "burstLimit"=>5000}} ``` ## Upgrading from `faraday_middleware-aws-signers-v4` If you previously provided the `service_name` option, you need to rename it `service` ## Test ```sh bundle install bundle exec appraisal install bundle exec appraisal faraday-0.16 rake ``` ## Related Links * http://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Sigv4/Signer.html * https://github.com/winebarrel/faraday_middleware-aws-signers-v4 (aws-sdk-v2 version) faraday-middleware-aws-sigv4-0.3.0/Appraisals0000644000175000017500000000017113715004124020120 0ustar pravipraviappraise 'faraday-0.15' do gem 'faraday', '~> 0.15.0' end appraise 'faraday-0.16' do gem 'faraday', '~> 0.16.0' end faraday-middleware-aws-sigv4-0.3.0/.gitignore0000644000175000017500000000023013715004124020062 0ustar pravipravi/.bundle/ /.yardoc /Gemfile.lock /_yardoc/ /coverage/ /doc/ /pkg/ /spec/reports/ /tmp/ test.rb /gemfiles/*.lock # rspec failure tracking .rspec_status faraday-middleware-aws-sigv4-0.3.0/gemfiles/0000755000175000017500000000000013715004124017672 5ustar pravipravifaraday-middleware-aws-sigv4-0.3.0/gemfiles/faraday_0.15.gemfile0000644000175000017500000000016713715004124023302 0ustar pravipravi# This file was generated by Appraisal source "https://rubygems.org" gem "faraday", "~> 0.15.0" gemspec path: "../" faraday-middleware-aws-sigv4-0.3.0/gemfiles/.bundle/0000755000175000017500000000000013715004124021221 5ustar pravipravifaraday-middleware-aws-sigv4-0.3.0/gemfiles/.bundle/config0000644000175000017500000000002613715004124022407 0ustar pravipravi--- BUNDLE_RETRY: "1" faraday-middleware-aws-sigv4-0.3.0/gemfiles/faraday_0.16.gemfile0000644000175000017500000000016713715004124023303 0ustar pravipravi# This file was generated by Appraisal source "https://rubygems.org" gem "faraday", "~> 0.16.0" gemspec path: "../" faraday-middleware-aws-sigv4-0.3.0/bin/0000755000175000017500000000000013715004124016647 5ustar pravipravifaraday-middleware-aws-sigv4-0.3.0/bin/setup0000755000175000017500000000020313715004124017730 0ustar pravipravi#!/usr/bin/env bash set -euo pipefail IFS=$'\n\t' set -vx bundle install # Do any other automated setup that you need to do here faraday-middleware-aws-sigv4-0.3.0/bin/console0000755000175000017500000000055313715004124020242 0ustar pravipravi#!/usr/bin/env ruby require "bundler/setup" require "faraday_middleware/aws/sigv4" # 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(__FILE__) faraday-middleware-aws-sigv4-0.3.0/faraday_middleware-aws-sigv4.gemspec0000644000175000017500000000257413715004124025102 0ustar pravipravi# coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) Gem::Specification.new do |spec| spec.name = 'faraday_middleware-aws-sigv4' spec.version = '0.3.0' spec.authors = ['Genki Sugawara'] spec.email = ['sugawara@cookpad.com'] spec.summary = %q{Faraday middleware for AWS Signature Version 4 using aws-sigv4.} spec.description = %q{Faraday middleware for AWS Signature Version 4 using aws-sigv4.} spec.homepage = 'https://github.com/winebarrel/faraday_middleware-aws-sigv4' spec.license = 'MIT' spec.files = `git ls-files -z`.split("\x0").reject do |f| f.match(%r{^(test|spec|features)/}) end spec.bindir = 'exe' spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.require_paths = ['lib'] spec.required_ruby_version = '>= 2.3' spec.add_dependency 'faraday', '>= 0.15' spec.add_dependency 'aws-sigv4', '~> 1.0' spec.add_development_dependency 'faraday_middleware' spec.add_development_dependency 'bundler' spec.add_development_dependency 'rake' spec.add_development_dependency 'rspec', '~> 3.0' spec.add_development_dependency 'timecop' spec.add_development_dependency 'coveralls' spec.add_development_dependency 'aws-sdk-core', '~> 3.14.0' spec.add_development_dependency 'appraisal', '>= 2.2' end faraday-middleware-aws-sigv4-0.3.0/LICENSE.txt0000644000175000017500000000207113715004124017722 0ustar pravipraviThe MIT License (MIT) Copyright (c) 2017 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. faraday-middleware-aws-sigv4-0.3.0/Rakefile0000644000175000017500000000016513715004124017546 0ustar pravipravirequire 'bundler/gem_tasks' require 'rspec/core/rake_task' RSpec::Core::RakeTask.new(:spec) task :default => :spec faraday-middleware-aws-sigv4-0.3.0/.rspec0000644000175000017500000000003613715004124017213 0ustar pravipravi--require spec_helper --color