gratitude 0.0.12 → 0.1.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/.hound.yml +34 -0
- data/.rubocop.yml +34 -0
- data/.travis.yml +4 -1
- data/CHANGELOG.md +2 -2
- data/CONTRIBUTING.md +97 -0
- data/Gemfile +11 -6
- data/Guardfile +4 -0
- data/README.md +3 -0
- data/Rakefile +12 -10
- data/gratitude.gemspec +4 -4
- data/lib/gratitude/chart.rb +5 -5
- data/lib/gratitude/client.rb +2 -1
- data/lib/gratitude/connection.rb +4 -2
- data/lib/gratitude/error.rb +28 -0
- data/lib/gratitude/payday.rb +12 -10
- data/lib/gratitude/profile.rb +4 -1
- data/lib/gratitude/statistics.rb +18 -16
- data/lib/gratitude/tips.rb +42 -10
- data/lib/gratitude/user_chart.rb +9 -7
- data/lib/gratitude/version.rb +3 -1
- data/lib/gratitude.rb +3 -1
- data/spec/cassettes/charts.json +8 -5
- data/spec/cassettes/current_tips.json +74 -5
- data/spec/cassettes/current_tips_not_authenticated.json +76 -0
- data/spec/cassettes/paydays.json +8 -5
- data/spec/cassettes/profiles.json +73 -17
- data/spec/cassettes/prune_tips_not_authenticated.json +76 -0
- data/spec/cassettes/statistics.json +8 -70
- data/spec/cassettes/update_and_prune.json +15 -15
- data/spec/cassettes/update_and_prune_bad_request.json +74 -0
- data/spec/cassettes/update_bad_request.json +74 -0
- data/spec/cassettes/update_tips.json +5 -5
- data/spec/cassettes/update_tips_not_authenticated.json +76 -0
- data/spec/cassettes/user_chart_not_found.json +76 -0
- data/spec/cassettes/user_charts.json +147 -1
- data/spec/gratitude/chart_spec.rb +11 -11
- data/spec/gratitude/client_spec.rb +5 -3
- data/spec/gratitude/connection_spec.rb +2 -0
- data/spec/gratitude/payday_spec.rb +9 -5
- data/spec/gratitude/profile_spec.rb +22 -13
- data/spec/gratitude/statistics_spec.rb +25 -23
- data/spec/gratitude/tips_spec.rb +177 -40
- data/spec/gratitude/user_chart_spec.rb +30 -17
- data/spec/gratitude/version_spec.rb +2 -0
- data/spec/spec_helper.rb +6 -4
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86d7979838448df774b9bd29f73c6b11e468c914
|
4
|
+
data.tar.gz: cceea1e613fe4789536d8e91865edbc42e7efbed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de3f92649c3322d05cbcd21218815e59c804cc850fdbf17536b19bcaf92bf7b0630f1ff0c536fa59dfbc45d668eb3b1facd568ce9ddc4678c5a5a7ea79eff4f9
|
7
|
+
data.tar.gz: 3f13439f0b3f06ee18aba8438fc953d1cb7695af872c339fcc8221c0341aaeb32bd3b13f7a0762362106c1916e611854e25bef45f7d5cce0ec38841b7e91d5ca
|
data/.hound.yml
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- vendor/**/**
|
4
|
+
- bin/**
|
5
|
+
- gratitude.gemspec
|
6
|
+
|
7
|
+
CollectionMethods:
|
8
|
+
# Mapping from undesired method to desired_method
|
9
|
+
# e.g. to use `detect` over `find`:
|
10
|
+
#
|
11
|
+
# CollectionMethods:
|
12
|
+
# PreferredMethods:
|
13
|
+
# find: detect
|
14
|
+
PreferredMethods:
|
15
|
+
map: 'collect'
|
16
|
+
map!: 'collect!'
|
17
|
+
reduce: 'inject'
|
18
|
+
find: 'detect'
|
19
|
+
find_all: 'select'
|
20
|
+
|
21
|
+
Documentation:
|
22
|
+
Enabled: false
|
23
|
+
|
24
|
+
MethodLength:
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
SignalException:
|
28
|
+
Enabled: false
|
29
|
+
|
30
|
+
SingleLineBlockParams:
|
31
|
+
Enabled: false
|
32
|
+
|
33
|
+
StringLiterals:
|
34
|
+
EnforcedStyle: double_quotes
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- vendor/**/**
|
4
|
+
- bin/**
|
5
|
+
- gratitude.gemspec
|
6
|
+
|
7
|
+
CollectionMethods:
|
8
|
+
# Mapping from undesired method to desired_method
|
9
|
+
# e.g. to use `detect` over `find`:
|
10
|
+
#
|
11
|
+
# CollectionMethods:
|
12
|
+
# PreferredMethods:
|
13
|
+
# find: detect
|
14
|
+
PreferredMethods:
|
15
|
+
map: 'collect'
|
16
|
+
map!: 'collect!'
|
17
|
+
reduce: 'inject'
|
18
|
+
find: 'detect'
|
19
|
+
find_all: 'select'
|
20
|
+
|
21
|
+
Documentation:
|
22
|
+
Enabled: false
|
23
|
+
|
24
|
+
MethodLength:
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
SignalException:
|
28
|
+
Enabled: false
|
29
|
+
|
30
|
+
SingleLineBlockParams:
|
31
|
+
Enabled: false
|
32
|
+
|
33
|
+
StringLiterals:
|
34
|
+
EnforcedStyle: double_quotes
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
### 0.1.0 (
|
2
|
-
*
|
1
|
+
### 0.1.0 (May 16, 2014)
|
2
|
+
* Add custom errors for authentication issues, incorrect usernames and tip update errors.
|
3
3
|
|
4
4
|
### 0.0.12 (March 30, 2014)
|
5
5
|
* Add support for Chart API endpoint
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
Contributing to Gratitude
|
2
|
+
=====================
|
3
|
+
|
4
|
+
If you'd like to contribute to Gratitude, you're encouraged to submit [pull requests](https://github.com/JohnKellyFerguson/gratitude/pulls), [propose features and discuss issues](https://github.com/JohnKellyFerguson/gratitude/issues).
|
5
|
+
|
6
|
+
#### Fork the Project
|
7
|
+
|
8
|
+
Fork the [project on Github](https://github.com/JohnKellyFerguson/gratitude) and check out your copy.
|
9
|
+
|
10
|
+
```
|
11
|
+
git clone https://github.com/contributor/gratitude.git
|
12
|
+
cd gratitude
|
13
|
+
git remote add upstream https://github.com/JohnKellyFerguson/gratitude.git
|
14
|
+
```
|
15
|
+
|
16
|
+
#### Create a Topic Branch
|
17
|
+
|
18
|
+
Make sure your fork is up-to-date and create a topic branch for your feature or bug fix.
|
19
|
+
|
20
|
+
```
|
21
|
+
git checkout master
|
22
|
+
git pull upstream master
|
23
|
+
git checkout -b my-feature-branch
|
24
|
+
```
|
25
|
+
|
26
|
+
#### Bundle Install and Test
|
27
|
+
|
28
|
+
Ensure that you can build the project and run tests.
|
29
|
+
|
30
|
+
```
|
31
|
+
bundle install
|
32
|
+
bundle exec rake
|
33
|
+
```
|
34
|
+
|
35
|
+
#### Write Tests
|
36
|
+
|
37
|
+
Try to write a test that reproduces the problem you're trying to fix or describes a feature that you want to build. Add to [spec/gratitude](spec/gratitude).
|
38
|
+
|
39
|
+
We definitely appreciate pull requests that highlight or reproduce a problem, even without a fix.
|
40
|
+
|
41
|
+
#### Write Code
|
42
|
+
|
43
|
+
Implement your feature or bug fix.
|
44
|
+
|
45
|
+
Ruby style is enforced with [Rubocop](https://github.com/bbatsov/rubocop), run `bundle exec rubocop` and fix any style issues highlighted.
|
46
|
+
|
47
|
+
Make sure that `bundle exec rake` completes without errors.
|
48
|
+
|
49
|
+
#### Write Documentation
|
50
|
+
|
51
|
+
Document any external behavior in the [README](README.md).
|
52
|
+
|
53
|
+
#### Commit Changes
|
54
|
+
|
55
|
+
Make sure git knows your name and email address:
|
56
|
+
|
57
|
+
```
|
58
|
+
git config --global user.name "Your Name"
|
59
|
+
git config --global user.email "contributor@example.com"
|
60
|
+
```
|
61
|
+
|
62
|
+
Writing good commit logs is important. A commit log should describe what changed and why.
|
63
|
+
|
64
|
+
```
|
65
|
+
git add ...
|
66
|
+
git commit
|
67
|
+
```
|
68
|
+
|
69
|
+
#### Push
|
70
|
+
|
71
|
+
```
|
72
|
+
git push origin my-feature-branch
|
73
|
+
```
|
74
|
+
|
75
|
+
#### Make a Pull Request
|
76
|
+
|
77
|
+
Go to [Gratitude's Github Project Page](https://github.com/contributor/gratitude) and select your feature branch. Click the 'Pull Request' button and fill out the form. Pull requests are usually reviewed within a few days.
|
78
|
+
|
79
|
+
#### Rebase
|
80
|
+
|
81
|
+
If you've been working on a change for a while, rebase with upstream/master.
|
82
|
+
|
83
|
+
```
|
84
|
+
git fetch upstream
|
85
|
+
git rebase upstream/master
|
86
|
+
git push origin my-feature-branch -f
|
87
|
+
```
|
88
|
+
|
89
|
+
|
90
|
+
#### Check on Your Pull Request
|
91
|
+
|
92
|
+
Go back to your pull request after a few minutes and check to see whether everything passed on Travis-CI. Everything should look green, otherwise fix any remaining issues.
|
93
|
+
|
94
|
+
|
95
|
+
#### Thank You
|
96
|
+
|
97
|
+
Your contributions are greatly appreciated. Thanks for helping out!
|
data/Gemfile
CHANGED
@@ -3,16 +3,21 @@ source "https://rubygems.org"
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
group :development do
|
6
|
-
gem
|
7
|
-
gem
|
8
|
-
gem
|
9
|
-
gem "guard-
|
6
|
+
gem "jazz_hands", github: "nixme/jazz_hands", branch: "bring-your-own-debugger"
|
7
|
+
gem "pry-byebug"
|
8
|
+
gem "pry-coolline"
|
9
|
+
gem "guard-rubocop", require: false
|
10
|
+
gem "guard-rspec", require: false
|
10
11
|
gem "terminal-notifier-guard", require: false
|
11
12
|
end
|
12
13
|
|
14
|
+
group :development, :test do
|
15
|
+
gem "rubocop"
|
16
|
+
end
|
17
|
+
|
13
18
|
group :test do
|
14
|
-
gem "rspec",
|
19
|
+
gem "rspec", "~> 3.0.0.beta2"
|
15
20
|
gem "webmock"
|
16
21
|
gem "vcr"
|
17
|
-
gem
|
22
|
+
gem "coveralls", require: false
|
18
23
|
end
|
data/Guardfile
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -1,28 +1,30 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require "rubygems"
|
4
|
+
require "bundler/gem_tasks"
|
3
5
|
|
4
6
|
Bundler.setup :default, :development
|
5
7
|
|
6
|
-
require
|
7
|
-
require
|
8
|
+
require "rspec/core"
|
9
|
+
require "rspec/core/rake_task"
|
8
10
|
|
9
11
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
10
12
|
spec.pattern = FileList["spec/**/*_spec.rb"]
|
11
13
|
end
|
12
14
|
|
13
|
-
task :
|
15
|
+
task default: :spec
|
14
16
|
|
15
17
|
task :console do
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
18
|
+
require "irb"
|
19
|
+
require "irb/completion"
|
20
|
+
require "gratitude"
|
19
21
|
ARGV.clear
|
20
22
|
IRB.start
|
21
23
|
end
|
22
24
|
|
23
25
|
task :pry do
|
24
|
-
require
|
25
|
-
require
|
26
|
+
require "pry"
|
27
|
+
require "gratitude"
|
26
28
|
ARGV.clear
|
27
29
|
Pry.start
|
28
30
|
end
|
data/gratitude.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "gratitude/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "gratitude"
|
8
8
|
spec.version = Gratitude::VERSION
|
9
9
|
spec.authors = ["John Kelly Ferguson"]
|
10
10
|
spec.email = ["hello@johnkellyferguson.com"]
|
11
|
-
spec.description = %q
|
12
|
-
spec.summary = %q
|
11
|
+
spec.description = %q(A simple Ruby wrapper for the Gittip API.)
|
12
|
+
spec.summary = %q(A simple Ruby wrapper for the Gittip API.)
|
13
13
|
spec.homepage = "https://github.com/JohnKellyFerguson/gratitude"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
data/lib/gratitude/chart.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Gratitude
|
2
4
|
class Chart
|
3
5
|
extend Connection
|
@@ -34,14 +36,12 @@ module Gratitude
|
|
34
36
|
all.sort_by { |chart| chart.date }.reverse
|
35
37
|
end
|
36
38
|
|
37
|
-
|
38
|
-
|
39
|
-
def self.get_charts_from_gittip
|
40
|
-
faraday.get('/about/charts.json').body.to_a
|
39
|
+
def self.charts_from_gittip
|
40
|
+
faraday.get("/about/charts.json").body.to_a
|
41
41
|
end
|
42
42
|
|
43
43
|
def self.collect_charts
|
44
|
-
|
44
|
+
charts_from_gittip.each do |chart_hash|
|
45
45
|
Chart.new(chart_hash)
|
46
46
|
end
|
47
47
|
end
|
data/lib/gratitude/client.rb
CHANGED
data/lib/gratitude/connection.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Gratitude
|
2
4
|
module Connection
|
3
5
|
def faraday
|
4
|
-
@faraday ||= Faraday.new(:
|
5
|
-
faraday.response :json, :
|
6
|
+
@faraday ||= Faraday.new(url: "https://www.gittip.com/") do |faraday|
|
7
|
+
faraday.response :json, content_type: /\bjson$/
|
6
8
|
faraday.adapter Faraday.default_adapter
|
7
9
|
end
|
8
10
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Gratitude
|
4
|
+
class UsernameNotFoundError < StandardError
|
5
|
+
def initialize(username)
|
6
|
+
super(
|
7
|
+
"The requested username, '#{username}', could not be found."\
|
8
|
+
"Please note that Gittip API requests are case sensitive.")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class AuthenticationError < StandardError
|
13
|
+
def initialize
|
14
|
+
super(
|
15
|
+
"The supplied username and api_key could not properly authenticate "\
|
16
|
+
"with Gittip.")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class TipUpdateError < StandardError
|
21
|
+
def initialize(usernames)
|
22
|
+
combined_usernames = usernames.join(", ")
|
23
|
+
super(
|
24
|
+
"There was an error updating the tip(s) for the following user(s): "\
|
25
|
+
"#{combined_usernames}.")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/gratitude/payday.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Gratitude
|
2
4
|
class Payday
|
3
5
|
extend Connection
|
4
6
|
PAYDAYS = []
|
5
7
|
|
6
8
|
attr_reader :ach_fees_volume, :ach_volume, :charge_fees_volume,
|
7
|
-
:charge_volume, :number_of_ach_credits,
|
8
|
-
:
|
9
|
-
:
|
9
|
+
:charge_volume, :number_of_ach_credits,
|
10
|
+
:number_of_active_users, :number_of_failing_credit_cards,
|
11
|
+
:number_of_missing_credit_cards, :number_of_charges,
|
12
|
+
:number_of_participants, :number_of_tippers,
|
10
13
|
:number_of_transfers, :transfer_volume, :transfer_end_time,
|
11
14
|
:transfer_start_time
|
12
15
|
|
@@ -39,7 +42,9 @@ module Gratitude
|
|
39
42
|
@number_of_tippers = options["ntippers"]
|
40
43
|
@number_of_transfers = options["ntransfers"]
|
41
44
|
@transfer_volume = options["transfer_volume"]
|
42
|
-
|
45
|
+
if options["ts_end"]
|
46
|
+
@transfer_end_time = DateTime.parse(options["ts_end"])
|
47
|
+
end
|
43
48
|
if options["ts_start"]
|
44
49
|
@transfer_start_time = DateTime.parse(options["ts_start"])
|
45
50
|
end
|
@@ -64,17 +69,14 @@ module Gratitude
|
|
64
69
|
all.sort_by { |p| p.ts_end }.reverse
|
65
70
|
end
|
66
71
|
|
67
|
-
|
68
|
-
|
69
|
-
def self.get_paydays_from_gittip
|
70
|
-
faraday.get('/about/paydays.json').body.to_a
|
72
|
+
def self.paydays_from_gittip
|
73
|
+
faraday.get("/about/paydays.json").body.to_a
|
71
74
|
end
|
72
75
|
|
73
76
|
def self.collect_paydays
|
74
|
-
|
77
|
+
paydays_from_gittip.each do |payday_hash|
|
75
78
|
Payday.new(payday_hash)
|
76
79
|
end
|
77
80
|
end
|
78
|
-
|
79
81
|
end # Payday
|
80
82
|
end # Gratitude
|
data/lib/gratitude/profile.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Gratitude
|
2
4
|
class Profile
|
3
5
|
include Connection
|
@@ -100,11 +102,12 @@ module Gratitude
|
|
100
102
|
|
101
103
|
def response
|
102
104
|
@response ||= faraday.get("/#{username}/public.json")
|
105
|
+
raise UsernameNotFoundError, username if @response.status == 406
|
106
|
+
@response
|
103
107
|
end
|
104
108
|
|
105
109
|
def response_body
|
106
110
|
@response_body ||= response.body
|
107
111
|
end
|
108
|
-
|
109
112
|
end # Profile
|
110
113
|
end # Gratitude
|
data/lib/gratitude/statistics.rb
CHANGED
@@ -1,25 +1,27 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Gratitude
|
2
4
|
class Statistics
|
3
5
|
include Connection
|
4
6
|
|
5
7
|
class << self
|
6
|
-
|
8
|
+
alias_method :current, :new
|
7
9
|
end
|
8
10
|
|
9
11
|
def average_tip_amount
|
10
12
|
response_body["average_tip"]
|
11
13
|
end
|
12
|
-
|
14
|
+
alias_method :average_tip, :average_tip_amount
|
13
15
|
|
14
16
|
def average_number_of_tippees
|
15
17
|
response_body["average_tippees"]
|
16
18
|
end
|
17
|
-
|
19
|
+
alias_method :average_tippees, :average_number_of_tippees
|
18
20
|
|
19
21
|
def amount_in_escrow
|
20
22
|
response_body["escrow"]
|
21
23
|
end
|
22
|
-
|
24
|
+
alias_method :escrow, :amount_in_escrow
|
23
25
|
|
24
26
|
def last_thursday
|
25
27
|
response_body["last_thursday"]
|
@@ -28,33 +30,33 @@ module Gratitude
|
|
28
30
|
def number_of_ach_credits
|
29
31
|
response_body["nach"].to_i
|
30
32
|
end
|
31
|
-
|
32
|
-
|
33
|
+
alias_method :nach, :number_of_ach_credits
|
34
|
+
alias_method :number_of_achs, :number_of_ach_credits
|
33
35
|
|
34
36
|
def number_of_active_users
|
35
37
|
response_body["nactive"]
|
36
38
|
end
|
37
|
-
|
39
|
+
alias_method :nactive, :number_of_active_users
|
38
40
|
|
39
41
|
def number_of_credit_cards
|
40
42
|
response_body["ncc"]
|
41
43
|
end
|
42
|
-
|
44
|
+
alias_method :ncc, :number_of_credit_cards
|
43
45
|
|
44
46
|
def number_of_givers
|
45
47
|
response_body["ngivers"]
|
46
48
|
end
|
47
|
-
|
49
|
+
alias_method :ngivers, :number_of_givers
|
48
50
|
|
49
51
|
def number_who_give_and_receive
|
50
52
|
response_body["noverlap"]
|
51
53
|
end
|
52
|
-
|
54
|
+
alias_method :noverlap, :number_who_give_and_receive
|
53
55
|
|
54
56
|
def number_of_receivers
|
55
57
|
response_body["nreceivers"]
|
56
58
|
end
|
57
|
-
|
59
|
+
alias_method :nreceivers, :number_of_receivers
|
58
60
|
|
59
61
|
def other_people
|
60
62
|
response_body["other_people"]
|
@@ -63,12 +65,12 @@ module Gratitude
|
|
63
65
|
def percentage_of_users_with_credit_cards
|
64
66
|
response_body["pcc"].strip
|
65
67
|
end
|
66
|
-
|
68
|
+
alias_method :pcc, :percentage_of_users_with_credit_cards
|
67
69
|
|
68
70
|
def punctuation
|
69
71
|
response_body["punc"]
|
70
72
|
end
|
71
|
-
|
73
|
+
alias_method :punc, :punctuation
|
72
74
|
|
73
75
|
def statements
|
74
76
|
response_body["statements"]
|
@@ -85,12 +87,12 @@ module Gratitude
|
|
85
87
|
def number_of_tips
|
86
88
|
response_body["tip_n"]
|
87
89
|
end
|
88
|
-
|
90
|
+
alias_method :tip_n, :number_of_tips
|
89
91
|
|
90
92
|
def value_of_total_backed_tips
|
91
93
|
response_body["total_backed_tips"]
|
92
94
|
end
|
93
|
-
|
95
|
+
alias_method :total_backed_tips, :value_of_total_backed_tips
|
94
96
|
|
95
97
|
def transfer_volume
|
96
98
|
response_body["transfer_volume"]
|
@@ -99,7 +101,7 @@ module Gratitude
|
|
99
101
|
private
|
100
102
|
|
101
103
|
def response
|
102
|
-
@response ||= faraday.get(
|
104
|
+
@response ||= faraday.get("/about/stats.json")
|
103
105
|
end
|
104
106
|
|
105
107
|
def response_body
|
data/lib/gratitude/tips.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Gratitude
|
2
4
|
class Client
|
3
5
|
module Tips
|
4
|
-
|
5
6
|
def current_tips
|
6
|
-
|
7
|
+
begin
|
8
|
+
response = faraday.get(tips_url)
|
9
|
+
rescue Faraday::Error::ParsingError
|
10
|
+
raise AuthenticationError
|
11
|
+
end
|
12
|
+
response.body
|
7
13
|
end
|
8
14
|
|
9
15
|
def current_tips_total
|
@@ -11,24 +17,35 @@ module Gratitude
|
|
11
17
|
end
|
12
18
|
|
13
19
|
def update_tips(array_of_hashes_with_usernames_and_amounts)
|
14
|
-
|
15
|
-
payload_for(request, array_of_hashes_with_usernames_and_amounts)
|
16
|
-
end.body
|
20
|
+
post_tips_to_gittip(array_of_hashes_with_usernames_and_amounts)
|
17
21
|
end
|
18
22
|
|
19
23
|
def update_tips_and_prune(array_of_hashes_with_usernames_and_amounts)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end.body
|
24
|
+
post_tips_to_gittip(
|
25
|
+
array_of_hashes_with_usernames_and_amounts, prune: true
|
26
|
+
)
|
24
27
|
end
|
25
28
|
|
26
|
-
|
29
|
+
private
|
27
30
|
|
28
31
|
def tips_url
|
29
32
|
"/#{username}/tips.json"
|
30
33
|
end
|
31
34
|
|
35
|
+
def post_tips_to_gittip(array_of_hashes, options = {})
|
36
|
+
response = faraday_post_response(array_of_hashes, options)
|
37
|
+
return_response_body_or_raise_update_error(response)
|
38
|
+
end
|
39
|
+
|
40
|
+
def faraday_post_response(array_of_hashes, options = {})
|
41
|
+
faraday.post do |request|
|
42
|
+
payload_for(request, array_of_hashes)
|
43
|
+
request.params = { also_prune: "true" } if options[:prune] == true
|
44
|
+
end
|
45
|
+
rescue
|
46
|
+
raise AuthenticationError
|
47
|
+
end
|
48
|
+
|
32
49
|
def payload_for(request, array_of_hashes)
|
33
50
|
request.url(tips_url)
|
34
51
|
request.body = prepared_tips_array(array_of_hashes).to_json
|
@@ -50,6 +67,21 @@ module Gratitude
|
|
50
67
|
}
|
51
68
|
end
|
52
69
|
|
70
|
+
def return_response_body_or_raise_update_error(response)
|
71
|
+
if usernames_with_errors(response.body).size > 0
|
72
|
+
raise TipUpdateError, usernames_with_errors(response.body)
|
73
|
+
else
|
74
|
+
response.body
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def usernames_with_errors(response_body)
|
79
|
+
response_body.each_with_object([]) do |user_tip_response, array|
|
80
|
+
if user_tip_response.key?("error")
|
81
|
+
array << user_tip_response["username"]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
53
85
|
end # Tips
|
54
86
|
end # Client
|
55
87
|
end # Gratitude
|