dwolla 0.0.10
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/.gitignore +6 -0
- data/Gemfile +4 -0
- data/README.md +74 -0
- data/Rakefile +5 -0
- data/dwolla.gemspec +29 -0
- data/lib/dwolla/client.rb +20 -0
- data/lib/dwolla/connection.rb +45 -0
- data/lib/dwolla/response/parse_json.rb +27 -0
- data/lib/dwolla/transaction.rb +32 -0
- data/lib/dwolla/user.rb +82 -0
- data/lib/dwolla/version.rb +3 -0
- data/lib/dwolla.rb +38 -0
- data/spec/dwolla/client_spec.rb +27 -0
- data/spec/dwolla/transaction_spec.rb +79 -0
- data/spec/dwolla/user_spec.rb +168 -0
- data/spec/dwolla_spec.rb +18 -0
- data/spec/fixtures/account_information.json +13 -0
- data/spec/fixtures/balance.json +5 -0
- data/spec/fixtures/basic_information.json +6 -0
- data/spec/fixtures/contacts.json +18 -0
- data/spec/fixtures/request_transaction.json +3 -0
- data/spec/fixtures/send_transaction.json +3 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/helpers.rb +29 -0
- metadata +164 -0
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,74 @@ | |
| 1 | 
            +
            # Dwolla Ruby Gem
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            A Dwolla API wrapper in Ruby.
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ## Installation
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            gem install dwolla
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ## Resources
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            * View Source on GitHub (https://github.com/jeffersongirao/dwolla)
         | 
| 12 | 
            +
            * Report Issues on GitHub (https://github.com/jeffersongirao/dwolla/issues)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            #### Users API
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            ##### With Access Token
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ```ruby
         | 
| 19 | 
            +
              user = Dwolla::User.me(ACCESS_TOKEN).fetch
         | 
| 20 | 
            +
            ```
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            ##### With Client ID and Secret
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            ```ruby
         | 
| 25 | 
            +
              client = Dwolla::Client.new(CLIENT_ID, SECRET)
         | 
| 26 | 
            +
              user = client.user(ACCOUNT_ID) # Dwolla account identifier or email address of the Dwolla account.
         | 
| 27 | 
            +
            ```
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            #### Balance API
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            ```ruby
         | 
| 32 | 
            +
              user = Dwolla::User.me(ACCESS_TOKEN)
         | 
| 33 | 
            +
              user.balance
         | 
| 34 | 
            +
            ```
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            #### Contacts API
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            ##### User Contacts
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            ```ruby
         | 
| 41 | 
            +
              user = Dwolla::User.me(ACCESS_TOKEN)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              # limit default is 10
         | 
| 44 | 
            +
              # max limit is 200
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              # type default is "Dwolla"
         | 
| 47 | 
            +
              # valid types are "All", "Twitter", "Facebook", "LinkedIn" and "Dwolla"
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              user.contacts(:search => "Bob", :type => "Dwolla", :limit => 5)
         | 
| 50 | 
            +
            ```
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            #### Transactions API
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            ##### Sending Money
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            ```ruby
         | 
| 57 | 
            +
              user = Dwolla::User.me(ACCESS_TOKEN)
         | 
| 58 | 
            +
              other_user_id = 'sample@user.com' # or the Dwolla account id
         | 
| 59 | 
            +
              pin = '1234'
         | 
| 60 | 
            +
              amount = 200
         | 
| 61 | 
            +
             | 
| 62 | 
            +
              user.send_money_to(other_user_id, amount, pin)
         | 
| 63 | 
            +
            ```
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            ##### Requesting Money
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            ```ruby
         | 
| 68 | 
            +
              user = Dwolla::User.me(ACCESS_TOKEN)
         | 
| 69 | 
            +
              other_user_id = 'sample@user.com' # or the Dwolla account id
         | 
| 70 | 
            +
              pin = '1234'
         | 
| 71 | 
            +
              amount = 200
         | 
| 72 | 
            +
             | 
| 73 | 
            +
              user.request_money_from(other_user_id, amount, pin)
         | 
| 74 | 
            +
            ```
         | 
    
        data/Rakefile
    ADDED
    
    
    
        data/dwolla.gemspec
    ADDED
    
    | @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $:.push File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            require "dwolla/version"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name        = "dwolla"
         | 
| 7 | 
            +
              s.version     = Dwolla::VERSION
         | 
| 8 | 
            +
              s.authors     = ["Jefferson Girao"]
         | 
| 9 | 
            +
              s.email       = ["contato@jefferson.eti.br"]
         | 
| 10 | 
            +
              s.homepage    = "https://github.com/jeffersongirao/dwolla"
         | 
| 11 | 
            +
              s.summary     = %q{A Ruby wrapper for the Dwolla API.}
         | 
| 12 | 
            +
              s.description = %q{A Ruby wrapper for the Dwolla API.}
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              s.rubyforge_project = "dwolla"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              s.files         = `git ls-files`.split("\n")
         | 
| 17 | 
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 18 | 
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 19 | 
            +
              s.require_paths = ["lib"]
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              s.add_dependency 'jeffersongirao_faraday-stack'
         | 
| 22 | 
            +
              s.add_dependency 'multi_json'
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              s.add_development_dependency 'bundler'
         | 
| 25 | 
            +
              s.add_development_dependency 'rake'
         | 
| 26 | 
            +
              s.add_development_dependency 'rspec'
         | 
| 27 | 
            +
              s.add_development_dependency 'webmock'
         | 
| 28 | 
            +
              s.add_development_dependency 'simplecov'
         | 
| 29 | 
            +
            end
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            module Dwolla
         | 
| 2 | 
            +
              class Client
         | 
| 3 | 
            +
                include Dwolla::Connection
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def initialize(client, secret)
         | 
| 6 | 
            +
                  @client, @secret = client, secret
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def user(id)
         | 
| 10 | 
            +
                  user_attributes_hash = get("users/#{id}")
         | 
| 11 | 
            +
                  User.new(user_attributes_hash)
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                private
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def auth_params
         | 
| 17 | 
            +
                    { :client_id => @client, :client_secret => @secret }
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
               end
         | 
| 20 | 
            +
            end
         | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            module Dwolla
         | 
| 2 | 
            +
              module Connection
         | 
| 3 | 
            +
                private
         | 
| 4 | 
            +
                  def connection
         | 
| 5 | 
            +
                    default_options = {
         | 
| 6 | 
            +
                      :headers => {
         | 
| 7 | 
            +
                        :accept => 'application/json',
         | 
| 8 | 
            +
                        :user_agent => Dwolla.user_agent,
         | 
| 9 | 
            +
                      }
         | 
| 10 | 
            +
                    }
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    @connection ||= Faraday.new(Dwolla.endpoint, default_options) do |builder|
         | 
| 13 | 
            +
                      builder.use FaradayStack::FollowRedirects
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                      builder.use Dwolla::Response::ParseJson
         | 
| 16 | 
            +
                      builder.use Faraday::Request::UrlEncoded
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                      builder.response :logger if Dwolla.debugging?
         | 
| 19 | 
            +
                      builder.adapter Faraday.default_adapter
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  def get(path, params={})
         | 
| 24 | 
            +
                    request(:get, path, params)
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  def post(path, params={})
         | 
| 28 | 
            +
                    request(:post, path, params)
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  def request(method, path, params)
         | 
| 32 | 
            +
                    response = connection.send(method) do |request|
         | 
| 33 | 
            +
                      case method.to_sym
         | 
| 34 | 
            +
                      when :delete, :get
         | 
| 35 | 
            +
                        request.url(path, params.merge(auth_params))
         | 
| 36 | 
            +
                      when :post
         | 
| 37 | 
            +
                        request.path = path
         | 
| 38 | 
            +
                        params.merge!(auth_params) if auth_params
         | 
| 39 | 
            +
                        request.body = params unless params.empty?
         | 
| 40 | 
            +
                      end
         | 
| 41 | 
            +
                    end
         | 
| 42 | 
            +
                    response.body
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
            end
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            require 'faraday'
         | 
| 2 | 
            +
            require 'multi_json'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Dwolla
         | 
| 5 | 
            +
              module Response
         | 
| 6 | 
            +
                class ParseJson < Faraday::Response::Middleware
         | 
| 7 | 
            +
                  def on_complete(env)
         | 
| 8 | 
            +
                    if respond_to? :parse
         | 
| 9 | 
            +
                      env[:body] = parse(env[:body]) unless [204,302,304,307].index env[:status]
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  def parse(body)
         | 
| 14 | 
            +
                    case body
         | 
| 15 | 
            +
                    when ''
         | 
| 16 | 
            +
                      nil
         | 
| 17 | 
            +
                    else
         | 
| 18 | 
            +
                      response_hash = ::MultiJson.decode(body)
         | 
| 19 | 
            +
                      response_hash["Response"] ||
         | 
| 20 | 
            +
                        response_hash["SendResult"] ||
         | 
| 21 | 
            +
                          response_hash["RequestResult"] ||
         | 
| 22 | 
            +
                            response_hash
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            module Dwolla
         | 
| 2 | 
            +
              class Transaction
         | 
| 3 | 
            +
                include Dwolla::Connection
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                ENDPOINTS = { :send => 'transactions/send',
         | 
| 6 | 
            +
                              :request => 'transactions/request' }
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                attr_accessor :origin, :destination, :type, :amount, :pin, :id
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                def initialize(attrs = {})
         | 
| 11 | 
            +
                  attrs.each do |key, value|
         | 
| 12 | 
            +
                    send("#{key}=".to_sym, value)
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def execute
         | 
| 17 | 
            +
                  self.id = post(ENDPOINTS[type], to_payload)
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                private
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def auth_params
         | 
| 23 | 
            +
                    { :oauth_token => origin.oauth_token }
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  def to_payload
         | 
| 27 | 
            +
                    { :destinationId => destination.id,
         | 
| 28 | 
            +
                      :amount => amount.to_s,
         | 
| 29 | 
            +
                      :pin => pin }
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
            end
         | 
    
        data/lib/dwolla/user.rb
    ADDED
    
    | @@ -0,0 +1,82 @@ | |
| 1 | 
            +
            module Dwolla
         | 
| 2 | 
            +
              class User
         | 
| 3 | 
            +
                include Dwolla::Connection
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                attr_accessor :id,
         | 
| 6 | 
            +
                              :name,
         | 
| 7 | 
            +
                              :latitude,
         | 
| 8 | 
            +
                              :longitude,
         | 
| 9 | 
            +
                              :city,
         | 
| 10 | 
            +
                              :state,
         | 
| 11 | 
            +
                              :type,
         | 
| 12 | 
            +
                              :contact_type,
         | 
| 13 | 
            +
                              :image,
         | 
| 14 | 
            +
                              :oauth_token
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def initialize(attrs={})
         | 
| 17 | 
            +
                  update_attributes(attrs)
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def self.me(access_token)
         | 
| 21 | 
            +
                  User.new(:oauth_token => access_token)
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def fetch
         | 
| 25 | 
            +
                  user_attributes_hash = get('users')
         | 
| 26 | 
            +
                  update_attributes(user_attributes_hash)
         | 
| 27 | 
            +
                  self
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                def update_attributes(attrs)
         | 
| 31 | 
            +
                  attrs.each do |key, value|
         | 
| 32 | 
            +
                    send("#{key.downcase}=".to_sym, value)
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def balance
         | 
| 37 | 
            +
                  get('balance')
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def contacts(options = {})
         | 
| 41 | 
            +
                  contacts_url = 'contacts'
         | 
| 42 | 
            +
                  contacts = get(contacts_url, options)
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  instances_from_contacts(contacts)
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                def send_money_to(destination, amount, pin)
         | 
| 48 | 
            +
                  transaction = Transaction.new(:origin => self,
         | 
| 49 | 
            +
                                                :destination => destination,
         | 
| 50 | 
            +
                                                :type => :send,
         | 
| 51 | 
            +
                                                :amount => amount,
         | 
| 52 | 
            +
                                                :pin => pin)
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                  transaction.execute
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                def request_money_from(destination, amount, pin)
         | 
| 58 | 
            +
                  transaction = Transaction.new(:origin => self,
         | 
| 59 | 
            +
                                                :destination => destination,
         | 
| 60 | 
            +
                                                :type => :request,
         | 
| 61 | 
            +
                                                :amount => amount,
         | 
| 62 | 
            +
                                                :pin => pin)
         | 
| 63 | 
            +
                  transaction.execute
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                private
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  def instances_from_contacts(contacts)
         | 
| 69 | 
            +
                    user_instances = []
         | 
| 70 | 
            +
                    contacts.each do |contact|
         | 
| 71 | 
            +
                      contact["Contact_Type"] = contact["Type"]
         | 
| 72 | 
            +
                      contact.delete("Type")
         | 
| 73 | 
            +
                      user_instances << User.new(contact)
         | 
| 74 | 
            +
                    end
         | 
| 75 | 
            +
                    user_instances
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                  def auth_params
         | 
| 79 | 
            +
                    { :oauth_token => self.oauth_token }
         | 
| 80 | 
            +
                  end
         | 
| 81 | 
            +
               end
         | 
| 82 | 
            +
            end
         | 
    
        data/lib/dwolla.rb
    ADDED
    
    | @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            require 'faraday_stack'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Dwolla
         | 
| 4 | 
            +
              def self.endpoint=(endpoint)
         | 
| 5 | 
            +
                @@endpoint = endpoint
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              def self.endpoint
         | 
| 9 | 
            +
                @@endpoint
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def self.user_agent=(user_agent)
         | 
| 13 | 
            +
                @@user_agent = user_agent
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              def self.user_agent
         | 
| 17 | 
            +
                @@user_agent
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def self.debugging?
         | 
| 21 | 
            +
                !!@@debug
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              def self.debug=(debug)
         | 
| 25 | 
            +
                @@debug = debug
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              self.debug = false
         | 
| 29 | 
            +
              self.user_agent = "Dwolla Ruby Wrapper"
         | 
| 30 | 
            +
              self.endpoint = "https://www.dwolla.com/oauth/rest"
         | 
| 31 | 
            +
            end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            require "dwolla/response/parse_json"
         | 
| 34 | 
            +
            require "dwolla/connection"
         | 
| 35 | 
            +
            require "dwolla/client"
         | 
| 36 | 
            +
            require "dwolla/transaction"
         | 
| 37 | 
            +
            require "dwolla/user"
         | 
| 38 | 
            +
            require "dwolla/version"
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Dwolla::Client do
         | 
| 4 | 
            +
              subject { Dwolla::Client.new('sample_client_id', 'sample_client_secret') }
         | 
| 5 | 
            +
              let(:query_params) { "client_id=sample_client_id&client_secret=sample_client_secret" }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              describe "getting user basic information" do
         | 
| 8 | 
            +
                before do
         | 
| 9 | 
            +
                  stub_get('/users/812-111-1111', query_params).
         | 
| 10 | 
            +
                    to_return(:body => fixture("basic_information.json"))
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                it 'should request the correct resource' do
         | 
| 14 | 
            +
                  subject.user('812-111-1111')
         | 
| 15 | 
            +
                  a_get('/users/812-111-1111', query_params).should have_been_made
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                it 'should return extended information of a given user' do
         | 
| 19 | 
            +
                  user = subject.user('812-111-1111')
         | 
| 20 | 
            +
                  user.should be_a Dwolla::User
         | 
| 21 | 
            +
                  user.id.should == '812-111-1111'
         | 
| 22 | 
            +
                  user.name.should == 'Test User'
         | 
| 23 | 
            +
                  user.latitude.should == 41.584546
         | 
| 24 | 
            +
                  user.longitude.should == -93.634167
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
| @@ -0,0 +1,79 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Dwolla::Transaction do
         | 
| 4 | 
            +
              describe "send transaction" do
         | 
| 5 | 
            +
                before do
         | 
| 6 | 
            +
                  @origin = double(:oauth_token => '1')
         | 
| 7 | 
            +
                  @destination = double(:id => '2')
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  @payload = { :oauth_token => '1',
         | 
| 10 | 
            +
                               :destinationId => '2',
         | 
| 11 | 
            +
                               :amount => '200',
         | 
| 12 | 
            +
                               :pin => '1234' }
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  stub_post('/transactions/send').with(:body => @payload).to_return(
         | 
| 15 | 
            +
                    :body => fixture('send_transaction.json'))
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                it "should request the correct resource" do
         | 
| 19 | 
            +
                  transaction = Dwolla::Transaction.new(:origin => @origin,
         | 
| 20 | 
            +
                                                        :destination => @destination,
         | 
| 21 | 
            +
                                                        :type => :send,
         | 
| 22 | 
            +
                                                        :amount => 200,
         | 
| 23 | 
            +
                                                        :pin => '1234')
         | 
| 24 | 
            +
                  transaction.execute
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  a_post('/transactions/send').
         | 
| 27 | 
            +
                    with(:body => @payload).should have_been_made
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                it "should fetch the id if transaction succesfull" do
         | 
| 31 | 
            +
                  transaction = Dwolla::Transaction.new(:origin => @origin,
         | 
| 32 | 
            +
                                                        :destination => @destination,
         | 
| 33 | 
            +
                                                        :type => :send,
         | 
| 34 | 
            +
                                                        :amount => 200,
         | 
| 35 | 
            +
                                                        :pin => '1234')
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  transaction.execute.should == 12345
         | 
| 38 | 
            +
                  transaction.id.should == 12345
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              describe "request transaction" do
         | 
| 43 | 
            +
                before do
         | 
| 44 | 
            +
                  @origin = double(:oauth_token => '1')
         | 
| 45 | 
            +
                  @destination = double(:id => '2')
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  @payload = { :oauth_token => '1',
         | 
| 48 | 
            +
                               :destinationId => '2',
         | 
| 49 | 
            +
                               :amount => '200',
         | 
| 50 | 
            +
                               :pin => '1234' }
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  stub_post('/transactions/request').with(:body => @payload).to_return(
         | 
| 53 | 
            +
                    :body => fixture('request_transaction.json'))
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                it "should request the correct resource" do
         | 
| 57 | 
            +
                  transaction = Dwolla::Transaction.new(:origin => @origin,
         | 
| 58 | 
            +
                                                        :destination => @destination,
         | 
| 59 | 
            +
                                                        :type => :request,
         | 
| 60 | 
            +
                                                        :amount => 200,
         | 
| 61 | 
            +
                                                        :pin => '1234')
         | 
| 62 | 
            +
                  transaction.execute
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  a_post('/transactions/request').
         | 
| 65 | 
            +
                    with(:body => @payload).should have_been_made
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                it "should fetch the id if transaction succesfull" do
         | 
| 69 | 
            +
                  transaction = Dwolla::Transaction.new(:origin => @origin,
         | 
| 70 | 
            +
                                                        :destination => @destination,
         | 
| 71 | 
            +
                                                        :type => :request,
         | 
| 72 | 
            +
                                                        :amount => 200,
         | 
| 73 | 
            +
                                                        :pin => '1234')
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  transaction.execute.should == 12345
         | 
| 76 | 
            +
                  transaction.id.should == 12345
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
            end
         | 
| @@ -0,0 +1,168 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Dwolla::User do
         | 
| 4 | 
            +
              let(:oauth_token) { 'valid_token' }
         | 
| 5 | 
            +
              let(:token_param) { "oauth_token=#{oauth_token}" }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              describe "fetching your full account information" do
         | 
| 8 | 
            +
                before do
         | 
| 9 | 
            +
                  stub_get('/users', token_param).
         | 
| 10 | 
            +
                    to_return(:body => fixture("account_information.json"))
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                it "should request the correct resource" do
         | 
| 14 | 
            +
                  user = Dwolla::User.me(oauth_token).fetch
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  a_get('/users', token_param).should have_been_made
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                it "should return full information" do
         | 
| 20 | 
            +
                  user = Dwolla::User.me(oauth_token).fetch
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  user.should be_a Dwolla::User
         | 
| 23 | 
            +
                  user.id.should == '812-111-1111'
         | 
| 24 | 
            +
                  user.name.should == 'Test User'
         | 
| 25 | 
            +
                  user.latitude.should == 41.584546
         | 
| 26 | 
            +
                  user.longitude.should == -93.634167
         | 
| 27 | 
            +
                  user.city.should == 'Des Moines'
         | 
| 28 | 
            +
                  user.state.should == 'IA'
         | 
| 29 | 
            +
                  user.type.should == 'Personal'
         | 
| 30 | 
            +
                  user.oauth_token.should == oauth_token
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              describe "sending money" do
         | 
| 35 | 
            +
                it "should make the correct transaction" do
         | 
| 36 | 
            +
                  user = Dwolla::User.new(:oauth_token => '12345', :id => '1')
         | 
| 37 | 
            +
                  destination_user = Dwolla::User.new(:id => '2')
         | 
| 38 | 
            +
                  amount = 10
         | 
| 39 | 
            +
                  pin = '2222'
         | 
| 40 | 
            +
             | 
| 41 | 
            +
             | 
| 42 | 
            +
                  transaction = double('transaction')
         | 
| 43 | 
            +
                  transaction_id = 123
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  Dwolla::Transaction.should_receive(:new).with(:origin => user,
         | 
| 46 | 
            +
                                                        :destination => destination_user,
         | 
| 47 | 
            +
                                                        :amount => 10,
         | 
| 48 | 
            +
                                                        :type => :send,
         | 
| 49 | 
            +
                                                        :pin => '2222').and_return(transaction)
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                  transaction.should_receive(:execute).and_return(transaction_id)
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  user.send_money_to(destination_user, amount, pin).should == 123
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              describe "requesting money" do
         | 
| 58 | 
            +
                it "should make the correct transaction" do
         | 
| 59 | 
            +
                  user = Dwolla::User.new(:oauth_token => '12345', :id => '1')
         | 
| 60 | 
            +
                  destination_user = Dwolla::User.new(:id => '2')
         | 
| 61 | 
            +
                  amount = 10
         | 
| 62 | 
            +
                  pin = '2222'
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  transaction = double('transaction')
         | 
| 65 | 
            +
                  transaction_id = 123
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  Dwolla::Transaction.should_receive(:new).with(:origin => user,
         | 
| 68 | 
            +
                                                                :destination => destination_user,
         | 
| 69 | 
            +
                                                                :amount => 10,
         | 
| 70 | 
            +
                                                                :type => :request,
         | 
| 71 | 
            +
                                                                :pin => '2222').and_return(transaction)
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  transaction.should_receive(:execute).and_return(transaction_id)
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  user.request_money_from(destination_user, amount, pin).should == 123
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
              end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
              it "knows his balance" do
         | 
| 80 | 
            +
                stub_get('/balance', token_param).
         | 
| 81 | 
            +
                  to_return(:body => fixture("balance.json"))
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                user = Dwolla::User.me(oauth_token)
         | 
| 84 | 
            +
                user.balance.should == 55.76
         | 
| 85 | 
            +
              end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
              describe "contacts" do
         | 
| 88 | 
            +
                it "should request the correct resource when unfiltered" do
         | 
| 89 | 
            +
                  user = Dwolla::User.me(oauth_token)
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                  stub_get('/contacts', token_param).
         | 
| 92 | 
            +
                    to_return(:body => fixture("contacts.json"))
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                  user.contacts
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  a_get('/contacts', token_param).should have_been_made
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                it "should request the correct resource when seaching by name" do
         | 
| 100 | 
            +
                  user = Dwolla::User.me(oauth_token)
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  stub_get("/contacts?search=Bob&#{token_param}").
         | 
| 103 | 
            +
                    to_return(:body => fixture("contacts.json"))
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                  user.contacts(:search => 'Bob')
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                  a_get("/contacts?search=Bob&#{token_param}").should have_been_made
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                it "should request the correct resource when filtering by type" do
         | 
| 111 | 
            +
                  user = Dwolla::User.me(oauth_token)
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                  stub_get("/contacts?type=Facebook&#{token_param}").
         | 
| 114 | 
            +
                    to_return(:body => fixture("contacts.json"))
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                  user.contacts(:type => 'Facebook')
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                  a_get("/contacts?type=Facebook&#{token_param}").should have_been_made
         | 
| 119 | 
            +
                end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                it "should request the correct resource when limiting" do
         | 
| 122 | 
            +
                  user = Dwolla::User.me(oauth_token)
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                  stub_get("/contacts?limit=2&#{token_param}").
         | 
| 125 | 
            +
                    to_return(:body => fixture("contacts.json"))
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                  user.contacts(:limit => 2)
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                  a_get("/contacts?limit=2&#{token_param}").should have_been_made
         | 
| 130 | 
            +
                end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                it "should request the correct resource when using all together" do
         | 
| 133 | 
            +
                  user = Dwolla::User.me(oauth_token)
         | 
| 134 | 
            +
             | 
| 135 | 
            +
                  stub_get("/contacts?search=Bob&type=Facebook&limit=2&#{token_param}").
         | 
| 136 | 
            +
                    to_return(:body => fixture("contacts.json"))
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                  user.contacts(:search => "Bob", :type => "Facebook", :limit => 2)
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                  a_get("/contacts?search=Bob&type=Facebook&limit=2&#{token_param}").should have_been_made
         | 
| 141 | 
            +
                end
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                it "should return the contact users properly" do
         | 
| 144 | 
            +
                  user = Dwolla::User.me(oauth_token)
         | 
| 145 | 
            +
             | 
| 146 | 
            +
                  stub_get("/contacts", token_param).
         | 
| 147 | 
            +
                    to_return(:body => fixture("contacts.json"))
         | 
| 148 | 
            +
             | 
| 149 | 
            +
                  contacts = user.contacts
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                  first_contact = contacts.first
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                  first_contact.should be_a Dwolla::User
         | 
| 154 | 
            +
                  first_contact.id.should == "12345"
         | 
| 155 | 
            +
                  first_contact.name.should == "Ben Facebook Test"
         | 
| 156 | 
            +
                  first_contact.image.should == "https://graph.facebook.com/12345/picture?type=square"
         | 
| 157 | 
            +
                  first_contact.contact_type.should == "Facebook"
         | 
| 158 | 
            +
             | 
| 159 | 
            +
                  second_contact = contacts.last
         | 
| 160 | 
            +
             | 
| 161 | 
            +
                  second_contact.should be_a Dwolla::User
         | 
| 162 | 
            +
                  second_contact.id.should == "812-111-1111"
         | 
| 163 | 
            +
                  second_contact.name.should == "Ben Dwolla Test"
         | 
| 164 | 
            +
                  second_contact.image.should == "https://www.dwolla.com/avatar.aspx?u=812-111-1111"
         | 
| 165 | 
            +
                  second_contact.contact_type.should == "Dwolla"
         | 
| 166 | 
            +
                end
         | 
| 167 | 
            +
              end
         | 
| 168 | 
            +
            end
         | 
    
        data/spec/dwolla_spec.rb
    ADDED
    
    | @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Dwolla do
         | 
| 4 | 
            +
              its(:endpoint) { should == "https://www.dwolla.com/oauth/rest" }
         | 
| 5 | 
            +
              its(:user_agent) { should == "Dwolla Ruby Wrapper" }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              describe 'debugging' do
         | 
| 8 | 
            +
                after do
         | 
| 9 | 
            +
                  Dwolla.debug = false 
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                it { should_not be_debugging }
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                it 'should be debugging' do
         | 
| 15 | 
            +
                  Dwolla.debug = true
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            {
         | 
| 2 | 
            +
                "Success": true,
         | 
| 3 | 
            +
                "Message": "Success",
         | 
| 4 | 
            +
                "Response": [
         | 
| 5 | 
            +
                    {
         | 
| 6 | 
            +
                        "Name": "Ben Facebook Test",
         | 
| 7 | 
            +
                        "Id": "12345",
         | 
| 8 | 
            +
                        "Type": "Facebook",
         | 
| 9 | 
            +
                        "Image": "https://graph.facebook.com/12345/picture?type=square"
         | 
| 10 | 
            +
                    },
         | 
| 11 | 
            +
                    {
         | 
| 12 | 
            +
                        "Name": "Ben Dwolla Test",
         | 
| 13 | 
            +
                        "Id": "812-111-1111",
         | 
| 14 | 
            +
                        "Type": "Dwolla",
         | 
| 15 | 
            +
                        "Image": "https://www.dwolla.com/avatar.aspx?u=812-111-1111"
         | 
| 16 | 
            +
                    }
         | 
| 17 | 
            +
                ]
         | 
| 18 | 
            +
            }
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            def a_get(path, params = nil)
         | 
| 2 | 
            +
              url = Dwolla.endpoint + path
         | 
| 3 | 
            +
              url += "?#{params}" if params
         | 
| 4 | 
            +
              a_request(:get, url)
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            def a_post(path)
         | 
| 8 | 
            +
              url = Dwolla.endpoint + path
         | 
| 9 | 
            +
              a_request(:post, url)
         | 
| 10 | 
            +
            end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            def stub_get(path, params = nil)
         | 
| 13 | 
            +
              url = Dwolla.endpoint + path
         | 
| 14 | 
            +
              url += "?#{params}" if params
         | 
| 15 | 
            +
              stub_request(:get, url)
         | 
| 16 | 
            +
            end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            def stub_post(path)
         | 
| 19 | 
            +
              url = Dwolla.endpoint + path
         | 
| 20 | 
            +
              stub_request(:post, url)
         | 
| 21 | 
            +
            end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            def fixture_path
         | 
| 24 | 
            +
              File.expand_path("../../fixtures", __FILE__)
         | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            def fixture(file)
         | 
| 28 | 
            +
              IO.read(fixture_path + '/' + file)
         | 
| 29 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,164 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: dwolla
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.0.10
         | 
| 5 | 
            +
              prerelease: 
         | 
| 6 | 
            +
            platform: ruby
         | 
| 7 | 
            +
            authors:
         | 
| 8 | 
            +
            - Jefferson Girao
         | 
| 9 | 
            +
            autorequire: 
         | 
| 10 | 
            +
            bindir: bin
         | 
| 11 | 
            +
            cert_chain: []
         | 
| 12 | 
            +
            date: 2012-01-15 00:00:00.000000000Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              name: jeffersongirao_faraday-stack
         | 
| 16 | 
            +
              requirement: &2152450200 !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: '0'
         | 
| 22 | 
            +
              type: :runtime
         | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              version_requirements: *2152450200
         | 
| 25 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 26 | 
            +
              name: multi_json
         | 
| 27 | 
            +
              requirement: &2152449680 !ruby/object:Gem::Requirement
         | 
| 28 | 
            +
                none: false
         | 
| 29 | 
            +
                requirements:
         | 
| 30 | 
            +
                - - ! '>='
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                    version: '0'
         | 
| 33 | 
            +
              type: :runtime
         | 
| 34 | 
            +
              prerelease: false
         | 
| 35 | 
            +
              version_requirements: *2152449680
         | 
| 36 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 37 | 
            +
              name: bundler
         | 
| 38 | 
            +
              requirement: &2152449040 !ruby/object:Gem::Requirement
         | 
| 39 | 
            +
                none: false
         | 
| 40 | 
            +
                requirements:
         | 
| 41 | 
            +
                - - ! '>='
         | 
| 42 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 43 | 
            +
                    version: '0'
         | 
| 44 | 
            +
              type: :development
         | 
| 45 | 
            +
              prerelease: false
         | 
| 46 | 
            +
              version_requirements: *2152449040
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: rake
         | 
| 49 | 
            +
              requirement: &2152448460 !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
                none: false
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ! '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 55 | 
            +
              type: :development
         | 
| 56 | 
            +
              prerelease: false
         | 
| 57 | 
            +
              version_requirements: *2152448460
         | 
| 58 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 59 | 
            +
              name: rspec
         | 
| 60 | 
            +
              requirement: &2152447840 !ruby/object:Gem::Requirement
         | 
| 61 | 
            +
                none: false
         | 
| 62 | 
            +
                requirements:
         | 
| 63 | 
            +
                - - ! '>='
         | 
| 64 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 65 | 
            +
                    version: '0'
         | 
| 66 | 
            +
              type: :development
         | 
| 67 | 
            +
              prerelease: false
         | 
| 68 | 
            +
              version_requirements: *2152447840
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: webmock
         | 
| 71 | 
            +
              requirement: &2152447240 !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                none: false
         | 
| 73 | 
            +
                requirements:
         | 
| 74 | 
            +
                - - ! '>='
         | 
| 75 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 76 | 
            +
                    version: '0'
         | 
| 77 | 
            +
              type: :development
         | 
| 78 | 
            +
              prerelease: false
         | 
| 79 | 
            +
              version_requirements: *2152447240
         | 
| 80 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 81 | 
            +
              name: simplecov
         | 
| 82 | 
            +
              requirement: &2152446580 !ruby/object:Gem::Requirement
         | 
| 83 | 
            +
                none: false
         | 
| 84 | 
            +
                requirements:
         | 
| 85 | 
            +
                - - ! '>='
         | 
| 86 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 87 | 
            +
                    version: '0'
         | 
| 88 | 
            +
              type: :development
         | 
| 89 | 
            +
              prerelease: false
         | 
| 90 | 
            +
              version_requirements: *2152446580
         | 
| 91 | 
            +
            description: A Ruby wrapper for the Dwolla API.
         | 
| 92 | 
            +
            email:
         | 
| 93 | 
            +
            - contato@jefferson.eti.br
         | 
| 94 | 
            +
            executables: []
         | 
| 95 | 
            +
            extensions: []
         | 
| 96 | 
            +
            extra_rdoc_files: []
         | 
| 97 | 
            +
            files:
         | 
| 98 | 
            +
            - .gitignore
         | 
| 99 | 
            +
            - Gemfile
         | 
| 100 | 
            +
            - README.md
         | 
| 101 | 
            +
            - Rakefile
         | 
| 102 | 
            +
            - dwolla.gemspec
         | 
| 103 | 
            +
            - lib/dwolla.rb
         | 
| 104 | 
            +
            - lib/dwolla/client.rb
         | 
| 105 | 
            +
            - lib/dwolla/connection.rb
         | 
| 106 | 
            +
            - lib/dwolla/response/parse_json.rb
         | 
| 107 | 
            +
            - lib/dwolla/transaction.rb
         | 
| 108 | 
            +
            - lib/dwolla/user.rb
         | 
| 109 | 
            +
            - lib/dwolla/version.rb
         | 
| 110 | 
            +
            - spec/dwolla/client_spec.rb
         | 
| 111 | 
            +
            - spec/dwolla/transaction_spec.rb
         | 
| 112 | 
            +
            - spec/dwolla/user_spec.rb
         | 
| 113 | 
            +
            - spec/dwolla_spec.rb
         | 
| 114 | 
            +
            - spec/fixtures/account_information.json
         | 
| 115 | 
            +
            - spec/fixtures/balance.json
         | 
| 116 | 
            +
            - spec/fixtures/basic_information.json
         | 
| 117 | 
            +
            - spec/fixtures/contacts.json
         | 
| 118 | 
            +
            - spec/fixtures/request_transaction.json
         | 
| 119 | 
            +
            - spec/fixtures/send_transaction.json
         | 
| 120 | 
            +
            - spec/spec_helper.rb
         | 
| 121 | 
            +
            - spec/support/helpers.rb
         | 
| 122 | 
            +
            homepage: https://github.com/jeffersongirao/dwolla
         | 
| 123 | 
            +
            licenses: []
         | 
| 124 | 
            +
            post_install_message: 
         | 
| 125 | 
            +
            rdoc_options: []
         | 
| 126 | 
            +
            require_paths:
         | 
| 127 | 
            +
            - lib
         | 
| 128 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 129 | 
            +
              none: false
         | 
| 130 | 
            +
              requirements:
         | 
| 131 | 
            +
              - - ! '>='
         | 
| 132 | 
            +
                - !ruby/object:Gem::Version
         | 
| 133 | 
            +
                  version: '0'
         | 
| 134 | 
            +
                  segments:
         | 
| 135 | 
            +
                  - 0
         | 
| 136 | 
            +
                  hash: 3030208524669820078
         | 
| 137 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 138 | 
            +
              none: false
         | 
| 139 | 
            +
              requirements:
         | 
| 140 | 
            +
              - - ! '>='
         | 
| 141 | 
            +
                - !ruby/object:Gem::Version
         | 
| 142 | 
            +
                  version: '0'
         | 
| 143 | 
            +
                  segments:
         | 
| 144 | 
            +
                  - 0
         | 
| 145 | 
            +
                  hash: 3030208524669820078
         | 
| 146 | 
            +
            requirements: []
         | 
| 147 | 
            +
            rubyforge_project: dwolla
         | 
| 148 | 
            +
            rubygems_version: 1.8.10
         | 
| 149 | 
            +
            signing_key: 
         | 
| 150 | 
            +
            specification_version: 3
         | 
| 151 | 
            +
            summary: A Ruby wrapper for the Dwolla API.
         | 
| 152 | 
            +
            test_files:
         | 
| 153 | 
            +
            - spec/dwolla/client_spec.rb
         | 
| 154 | 
            +
            - spec/dwolla/transaction_spec.rb
         | 
| 155 | 
            +
            - spec/dwolla/user_spec.rb
         | 
| 156 | 
            +
            - spec/dwolla_spec.rb
         | 
| 157 | 
            +
            - spec/fixtures/account_information.json
         | 
| 158 | 
            +
            - spec/fixtures/balance.json
         | 
| 159 | 
            +
            - spec/fixtures/basic_information.json
         | 
| 160 | 
            +
            - spec/fixtures/contacts.json
         | 
| 161 | 
            +
            - spec/fixtures/request_transaction.json
         | 
| 162 | 
            +
            - spec/fixtures/send_transaction.json
         | 
| 163 | 
            +
            - spec/spec_helper.rb
         | 
| 164 | 
            +
            - spec/support/helpers.rb
         |