brainshell 0.2.0 → 0.3.0
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.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/brainshell.gemspec +1 -0
- data/lib/brainshell.rb +8 -0
- data/lib/brainshell/commands/base.rb +43 -5
- data/lib/brainshell/commands/credit_card.rb +14 -0
- data/lib/brainshell/commands/customer.rb +25 -1
- data/lib/brainshell/commands/merchant_account.rb +14 -0
- data/lib/brainshell/commands/subscription.rb +24 -16
- data/lib/brainshell/commands/transaction.rb +38 -0
- data/lib/brainshell/value_formatter.rb +17 -3
- data/lib/brainshell/version.rb +1 -1
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2809d5e93e973a4704de6514e98a229298cde6e
|
4
|
+
data.tar.gz: 6f286dac2ffd4e6d34ced575ceaa79b66f827fea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6a23a4e709213b81f6703706d0fff88471da23306c0d783eb1107ebaaf8174c2e53fb3757174a9d84b74a5c0d5b62ba56066004ce45e1839e6b35fa6b3f7810
|
7
|
+
data.tar.gz: eb7279166f16c4128e232d032e75aca9749e611523ae5ce9e3d1fac99192c8399cd2e735d7c89c71b676905652bd69e523858a8b4785a28b2f09a6a3cd3fb36d
|
data/.rspec
ADDED
data/brainshell.gemspec
CHANGED
data/lib/brainshell.rb
CHANGED
@@ -7,6 +7,8 @@ require 'brainshell/commands/base'
|
|
7
7
|
require 'brainshell/commands/customer'
|
8
8
|
require 'brainshell/commands/subscription'
|
9
9
|
require 'brainshell/commands/transaction'
|
10
|
+
require 'brainshell/commands/credit_card'
|
11
|
+
require 'brainshell/commands/merchant_account'
|
10
12
|
|
11
13
|
module Brainshell
|
12
14
|
|
@@ -21,6 +23,12 @@ module Brainshell
|
|
21
23
|
desc 'transaction OPTIONS', 'Query Braintree transactions'
|
22
24
|
subcommand 'transaction', Commands::Transaction
|
23
25
|
|
26
|
+
desc 'credit_card OPTIONS', 'Query Braintree credit cards'
|
27
|
+
subcommand 'credit_card', Commands::CreditCard
|
28
|
+
|
29
|
+
desc 'merchant_account OPTIONS', 'Query Braintree merchant accounts'
|
30
|
+
subcommand 'merchant_account', Commands::MerchantAccount
|
31
|
+
|
24
32
|
end
|
25
33
|
|
26
34
|
end
|
@@ -6,7 +6,39 @@ module Brainshell
|
|
6
6
|
|
7
7
|
class_option :columns, type: :array
|
8
8
|
|
9
|
-
|
9
|
+
class << self
|
10
|
+
|
11
|
+
def define_query_options
|
12
|
+
multiple_search_fields.each do |field|
|
13
|
+
method_option field, type: :array
|
14
|
+
end
|
15
|
+
text_search_fields.each do |field|
|
16
|
+
method_option field
|
17
|
+
end
|
18
|
+
range_search_fields.each do |field|
|
19
|
+
method_option field
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def text_search_fields; [] end
|
24
|
+
def multiple_search_fields; [] end
|
25
|
+
def range_search_fields; [] end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
protected
|
30
|
+
|
31
|
+
def run_query(entity)
|
32
|
+
search_results = entity.search do |search|
|
33
|
+
|
34
|
+
self.class.text_search_fields.each { |field| assign_text_criteria(search, field) }
|
35
|
+
self.class.multiple_search_fields.each { |field| assign_multiple_value_criteria(search, field) }
|
36
|
+
self.class.range_search_fields.each { |field| assign_range_criteria(search, field) }
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
build_table(search_results.to_a)
|
41
|
+
end
|
10
42
|
|
11
43
|
def assign_range_criteria(search, field)
|
12
44
|
if criteria = options[field]
|
@@ -32,16 +64,22 @@ module Brainshell
|
|
32
64
|
end
|
33
65
|
end
|
34
66
|
|
35
|
-
def
|
67
|
+
def assign_text_criteria(search, field)
|
68
|
+
if criteria = options[field]
|
69
|
+
search.send(field).is criteria
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def build_table(objects, columns = nil)
|
36
74
|
rows = []
|
37
75
|
objects.each do |object|
|
38
|
-
rows << render_row(object)
|
76
|
+
rows << render_row(object,columns)
|
39
77
|
end
|
40
78
|
shell.print_table(rows)
|
41
79
|
end
|
42
80
|
|
43
|
-
def render_row(object)
|
44
|
-
columns = options[:columns] ? options[:columns] : default_columns
|
81
|
+
def render_row(object, columns)
|
82
|
+
columns = columns ||(options[:columns] ? options[:columns] : default_columns)
|
45
83
|
columns.map { |column| get_column_value(object, column) }
|
46
84
|
end
|
47
85
|
|
@@ -2,13 +2,37 @@ module Brainshell
|
|
2
2
|
module Commands
|
3
3
|
class Customer < Base
|
4
4
|
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def text_search_fields
|
8
|
+
%w(address_country_name address_extended_address address_first_name
|
9
|
+
address_last_name address_locality address_postal_code address_region address_street_address cardholder_name
|
10
|
+
company credit_card_expiration_date credit_card_number email fax first_name id last_name payment_method_token
|
11
|
+
payment_method_token_with_duplicates paypal_account_email phone website).freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
def multiple_search_fields
|
15
|
+
%w(ids).freeze
|
16
|
+
end
|
17
|
+
|
18
|
+
def range_search_fields
|
19
|
+
%w(created_at).freeze
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
5
24
|
desc 'find ID', 'Get customer by identifier'
|
6
25
|
def find(id)
|
7
26
|
customer = Braintree::Customer.find(id)
|
8
|
-
|
9
27
|
build_table([customer])
|
10
28
|
end
|
11
29
|
|
30
|
+
desc 'query OPTIONS', 'Find customer matching criteria specified in options'
|
31
|
+
define_query_options
|
32
|
+
def query
|
33
|
+
run_query Braintree::Customer
|
34
|
+
end
|
35
|
+
|
12
36
|
end
|
13
37
|
end
|
14
38
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Brainshell
|
2
|
+
module Commands
|
3
|
+
class MerchantAccount < Base
|
4
|
+
|
5
|
+
desc 'find ID', 'Get merchant account by identifier'
|
6
|
+
def find(id)
|
7
|
+
merchant_account = Braintree::MerchantAccount.find(id)
|
8
|
+
build_table([merchant_account])
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
@@ -2,30 +2,38 @@ module Brainshell
|
|
2
2
|
module Commands
|
3
3
|
class Subscription < Base
|
4
4
|
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def text_search_fields
|
8
|
+
%w(id transaction_id).freeze
|
9
|
+
end
|
10
|
+
|
11
|
+
def multiple_search_fields
|
12
|
+
%w(ids in_trial_period merchant_account_id plan_id status).freeze
|
13
|
+
end
|
14
|
+
|
15
|
+
def range_search_fields
|
16
|
+
%w(billing_cycles_remaining days_past_due next_billing_date price).freeze
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
5
20
|
desc 'find ID', 'Get subscription by identifier'
|
6
21
|
def find(id)
|
7
22
|
subscription = Braintree::Subscription.find(id)
|
8
|
-
|
9
23
|
build_table([subscription])
|
10
24
|
end
|
11
25
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
method_option :price
|
16
|
-
method_option :billing_cycles_remaining, aliases: '-bcr'
|
17
|
-
method_option :days_past_due, aliases: '-dpd'
|
18
|
-
desc 'query OPTIONS', 'Find subscriptions matching criteria specified in options'
|
19
|
-
def query
|
20
|
-
search_results = Braintree::Subscription.search do |search|
|
21
|
-
assign_multiple_value_criteria(search, :ids)
|
22
|
-
assign_multiple_value_criteria(search, :plan_id)
|
23
|
-
assign_multiple_value_criteria(search, :status)
|
26
|
+
desc 'status_history ID', 'Get subscription status history by identifier'
|
27
|
+
def status_history(id)
|
28
|
+
subscription = Braintree::Subscription.find(id)
|
24
29
|
|
25
|
-
|
26
|
-
|
30
|
+
build_table(subscription.status_history, [:balance, :price, :status, :subscription_source])
|
31
|
+
end
|
27
32
|
|
28
|
-
|
33
|
+
desc 'query OPTIONS', 'Find subscriptions matching criteria specified in options'
|
34
|
+
define_query_options
|
35
|
+
def query
|
36
|
+
run_query Braintree::Subscription
|
29
37
|
end
|
30
38
|
|
31
39
|
end
|
@@ -2,6 +2,31 @@ module Brainshell
|
|
2
2
|
module Commands
|
3
3
|
class Transaction < Base
|
4
4
|
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def text_search_fields
|
8
|
+
%w(billing_company billing_country_name billing_extended_address billing_first_name
|
9
|
+
billing_last_name billing_locality billing_postal_code billing_region billing_street_address
|
10
|
+
credit_card_cardholder_name credit_card_expiration_date credit_card_number credit_card_unique_identifier
|
11
|
+
currency customer_company customer_email customer_fax customer_first_name customer_id customer_last_name
|
12
|
+
customer_phone customer_website id order_id payment_method_token paypal_authorization_id paypal_payer_email
|
13
|
+
paypal_payment_id processor_authorization_code settlement_batch_id shipping_company shipping_country_name
|
14
|
+
shipping_extended_address shipping_first_name shipping_last_name shipping_locality shipping_postal_code
|
15
|
+
shipping_region shipping_street_address).freeze
|
16
|
+
end
|
17
|
+
|
18
|
+
def multiple_search_fields
|
19
|
+
%w(created_using credit_card_card_type credit_card_customer_location ids merchant_account_id
|
20
|
+
payment_instrument_type refund settled_at source status type user).freeze
|
21
|
+
end
|
22
|
+
|
23
|
+
def range_search_fields
|
24
|
+
%w(amount authorization_expired_at authorized_at created_at dispute_date failed_at
|
25
|
+
gateway_rejected_at processor_declined_at submitted_for_settlement_at voided_at).freeze
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
5
30
|
desc 'find TOKEN', 'Get transaction by identifier'
|
6
31
|
def find(token)
|
7
32
|
transaction = Braintree::Transaction.find(token)
|
@@ -9,6 +34,19 @@ module Brainshell
|
|
9
34
|
build_table([transaction])
|
10
35
|
end
|
11
36
|
|
37
|
+
desc 'query OPTIONS', 'Find subscriptions matching criteria specified in options'
|
38
|
+
define_query_options
|
39
|
+
def query
|
40
|
+
run_query Braintree::Transaction
|
41
|
+
end
|
42
|
+
|
43
|
+
desc 'disbursement_details TOKEN', 'Get disbursement details by identifier'
|
44
|
+
def disbursement_details(token)
|
45
|
+
transaction = Braintree::Transaction.find(token)
|
46
|
+
|
47
|
+
build_table([transaction.disbursement_details], [:disbursement_date, :funds_held?, :settlement_amount, :success])
|
48
|
+
end
|
49
|
+
|
12
50
|
end
|
13
51
|
end
|
14
52
|
end
|
@@ -3,12 +3,18 @@ module Brainshell
|
|
3
3
|
|
4
4
|
KNOWN_FORMAT_METHODS = {
|
5
5
|
BigDecimal => :big_decimal,
|
6
|
-
DateTime => :date_time
|
6
|
+
DateTime => :date_time,
|
7
|
+
Braintree::CreditCard => :model_with_token,
|
8
|
+
Braintree::Subscription => :model_with_id
|
7
9
|
}.freeze
|
8
10
|
|
9
11
|
def format_value(value)
|
10
|
-
|
11
|
-
|
12
|
+
if value.is_a? Array
|
13
|
+
value.map { |item| format_value(item) }.join(',')
|
14
|
+
else
|
15
|
+
format_method = KNOWN_FORMAT_METHODS[value.class]
|
16
|
+
format_method ? send(format_method, value) : value
|
17
|
+
end
|
12
18
|
end
|
13
19
|
|
14
20
|
protected
|
@@ -21,5 +27,13 @@ module Brainshell
|
|
21
27
|
value.iso8601
|
22
28
|
end
|
23
29
|
|
30
|
+
def model_with_token(value)
|
31
|
+
value.token
|
32
|
+
end
|
33
|
+
|
34
|
+
def model_with_id(value)
|
35
|
+
value.id
|
36
|
+
end
|
37
|
+
|
24
38
|
end
|
25
39
|
end
|
data/lib/brainshell/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brainshell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- koss
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description: Console client for accessing Braintree payment gateway
|
70
84
|
email:
|
71
85
|
- koss.lebedev@gmail.com
|
@@ -75,13 +89,16 @@ extensions: []
|
|
75
89
|
extra_rdoc_files: []
|
76
90
|
files:
|
77
91
|
- ".gitignore"
|
92
|
+
- ".rspec"
|
78
93
|
- Gemfile
|
79
94
|
- README.md
|
80
95
|
- bin/brainshell
|
81
96
|
- brainshell.gemspec
|
82
97
|
- lib/brainshell.rb
|
83
98
|
- lib/brainshell/commands/base.rb
|
99
|
+
- lib/brainshell/commands/credit_card.rb
|
84
100
|
- lib/brainshell/commands/customer.rb
|
101
|
+
- lib/brainshell/commands/merchant_account.rb
|
85
102
|
- lib/brainshell/commands/subscription.rb
|
86
103
|
- lib/brainshell/commands/transaction.rb
|
87
104
|
- lib/brainshell/value_formatter.rb
|