clienteer 1.4.0 → 1.4.1
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/.gitignore +3 -3
- data/Gemfile +1 -0
- data/lib/clienteer.rb +10 -3
- data/lib/clienteer/digesters/ideal_protein_cross_reference.rb +6 -4
- data/lib/clienteer/digesters/phase_creation.rb +0 -2
- data/lib/clienteer/ingester.rb +1 -0
- data/lib/clienteer/ingesters/mindbody.rb +12 -4
- data/lib/clienteer/ingesters/yaml_file.rb +23 -0
- data/lib/clienteer/outgesters/maliero.rb +0 -3
- data/lib/clienteer/railtie.rb +11 -0
- data/lib/clienteer/sanitizer.rb +1 -0
- data/lib/clienteer/sanitizers/address.rb +9 -5
- data/lib/clienteer/sanitizers/name.rb +10 -3
- data/lib/clienteer/sanitizers/nil_finder.rb +7 -2
- data/lib/clienteer/version.rb +1 -1
- data/rakelib/ideal_protein.rake +7 -3
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 909d6a39576f9b6be0b0d3b101c1fd4a4b3a651e
|
4
|
+
data.tar.gz: 02daeaa0c4c2107f00cec10cff1f4b3461505849
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fa588c1a9c4ea2ea0a3573ff77e5626b5425977351474d50792b6c61673882cbebb494fbbbd131043df70d41195239cff5f45200b275c6403d309fbbc49a81c
|
7
|
+
data.tar.gz: 2d391670aaf41b5677cb53f173539a4a8d100a11aaf14302b3dede29908f4c44218ab38301b51d8addb6580cbad2bd24fb6d70ccee46bedb7290731121250c51
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/lib/clienteer.rb
CHANGED
@@ -2,12 +2,17 @@ require "clienteer/version"
|
|
2
2
|
require "clienteer/ingester"
|
3
3
|
require "clienteer/outgester"
|
4
4
|
require "clienteer/digester"
|
5
|
+
require "clienteer/sanitizer"
|
5
6
|
|
6
7
|
require "kiba"
|
7
8
|
require "mindbody-api"
|
9
|
+
require "json"
|
8
10
|
|
9
11
|
require 'clienteer/railtie' if defined?(Rails)
|
10
12
|
|
13
|
+
require 'dotenv'
|
14
|
+
Dotenv.load
|
15
|
+
|
11
16
|
module Clienteer
|
12
17
|
|
13
18
|
::MindBody.configure do |config|
|
@@ -18,20 +23,22 @@ module Clienteer
|
|
18
23
|
end
|
19
24
|
|
20
25
|
def self.call
|
21
|
-
$count = 0
|
22
26
|
$skipped_people = []
|
23
27
|
job_definition = Kiba.parse do
|
24
28
|
source Ingester::Mindbody
|
29
|
+
transform Sanitizer::NilFinder
|
30
|
+
transform Sanitizer::Name
|
25
31
|
transform Digester::IdealProteinCrossReference
|
26
32
|
transform Digester::AddressCreation
|
33
|
+
transform Sanitizer::Address
|
27
34
|
transform Digester::PhaseCreation
|
28
35
|
destination Outgester::Maliero
|
29
36
|
end
|
30
37
|
|
31
38
|
Kiba.run job_definition
|
32
39
|
|
33
|
-
File.open("data/skipped_people", "a+") do |f|
|
34
|
-
f.write $skipped_people
|
40
|
+
File.open("data/skipped_people.yaml", "a+") do |f|
|
41
|
+
f.write YAML.dump $skipped_people
|
35
42
|
end
|
36
43
|
|
37
44
|
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
require "pry"
|
1
|
+
|
3
2
|
module Clienteer
|
4
3
|
module Digester
|
5
4
|
class IdealProteinCrossReference
|
@@ -16,7 +15,11 @@ module Clienteer
|
|
16
15
|
|
17
16
|
def process(row)
|
18
17
|
person = find_ideal_protein_client(row)
|
19
|
-
|
18
|
+
if person.nil?
|
19
|
+
row[:reason] = "ideal protein subscription not found"
|
20
|
+
$skipped_people << row
|
21
|
+
return nil
|
22
|
+
end
|
20
23
|
row.tap do |r|
|
21
24
|
r["ideal_subscription_id"] = person["ideal_subscription_id"].to_i
|
22
25
|
r["phase"] = person["phase"].to_i
|
@@ -53,7 +56,6 @@ module Clienteer
|
|
53
56
|
# text << "Should I skip this person or not?".magenta.bold
|
54
57
|
# print text.join("\n")
|
55
58
|
# bool = IO.gets.chomp!.include?("y")
|
56
|
-
$skipped_people << row[:raw].id
|
57
59
|
nil
|
58
60
|
end
|
59
61
|
|
data/lib/clienteer/ingester.rb
CHANGED
@@ -2,10 +2,6 @@ require 'ruby-progressbar'
|
|
2
2
|
module Clienteer
|
3
3
|
module Ingester
|
4
4
|
class Mindbody
|
5
|
-
def initialize
|
6
|
-
$progressbar = ProgressBar.create total: 2059, format: '%a %bᗧ%i %p%% %t', progress_mark: ' ', remainder_mark: '・'
|
7
|
-
@clients = get_clients
|
8
|
-
end
|
9
5
|
|
10
6
|
def self.get_clients
|
11
7
|
hash = {"Username" => ENV["MINDBODY_USERNAME"], "Password" => ENV["MINDBODY_PASSWORD"], "SiteIDs" => {"int" => ENV["MINDBODY_SITE_IDS"]}}
|
@@ -13,8 +9,20 @@ module Clienteer
|
|
13
9
|
alpha.result[:clients]
|
14
10
|
end
|
15
11
|
|
12
|
+
def self.to_file
|
13
|
+
File.open('data/mindbody.yml', 'w') do |file|
|
14
|
+
file.write(YAML.dump(Mindbody.get_clients))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
$progressbar = ProgressBar.create total: 2059, format: '%a %bᗧ%i %p%% %t', progress_mark: ' ', remainder_mark: '・'
|
20
|
+
@clients = Mindbody.get_clients
|
21
|
+
end
|
22
|
+
|
16
23
|
def each
|
17
24
|
@clients.each do |c|
|
25
|
+
$progressbar.increment
|
18
26
|
object = {raw: c}
|
19
27
|
yield object
|
20
28
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'ruby-progressbar'
|
2
|
+
module Clienteer
|
3
|
+
module Ingester
|
4
|
+
class YAMLFile
|
5
|
+
|
6
|
+
def self.get_clients
|
7
|
+
YAML.load_file("data/mindbody.yaml")
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@clients = YAMLFile.get_clients
|
12
|
+
$progressbar = ProgressBar.create total: @clients.length, format: '%a %bᗧ%i %p%% %t', progress_mark: ' ', remainder_mark: '・'
|
13
|
+
end
|
14
|
+
|
15
|
+
def each
|
16
|
+
@clients.each do |c|
|
17
|
+
$progressbar.increment
|
18
|
+
yield c
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -6,7 +6,6 @@ module Clienteer
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def write(row)
|
9
|
-
$progressbar.increment
|
10
9
|
@clients << new_client(row)
|
11
10
|
end
|
12
11
|
|
@@ -33,8 +32,6 @@ module Clienteer
|
|
33
32
|
end
|
34
33
|
|
35
34
|
def close
|
36
|
-
$stderr.puts "\n\n\nHELLO\n\n\n\n"
|
37
|
-
binding.pry
|
38
35
|
Client.transaction do
|
39
36
|
success = @clients.map(&:save)
|
40
37
|
unless success.all?
|
data/lib/clienteer/sanitizer.rb
CHANGED
@@ -4,13 +4,17 @@ module Clienteer
|
|
4
4
|
class Address
|
5
5
|
|
6
6
|
def process(row)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
if valid_zip_code? row["address"]
|
8
|
+
clean_state row["address"]
|
9
|
+
return row
|
10
|
+
else
|
11
|
+
row[:reason] = "zip code invalid"
|
12
|
+
$skipped_people << row
|
13
|
+
return nil
|
14
|
+
end
|
11
15
|
end
|
12
16
|
|
13
|
-
def
|
17
|
+
def valid_zip_code?(address)
|
14
18
|
address.zip_code.match /\A\d{5}(-\d{4})?\Z/
|
15
19
|
end
|
16
20
|
|
@@ -5,11 +5,18 @@ module Clienteer
|
|
5
5
|
|
6
6
|
def process(row)
|
7
7
|
names = [row[:raw].first_name, row[:raw].last_name]
|
8
|
-
names.
|
8
|
+
names = names.compact.split(" ") if names.compact.length == 1
|
9
|
+
if names.all? {|n| proper? n }
|
10
|
+
return row
|
11
|
+
else
|
12
|
+
row[:reason] = "names not valid"
|
13
|
+
$skipped_people << row
|
14
|
+
return nil
|
15
|
+
end
|
9
16
|
end
|
10
17
|
|
11
|
-
def
|
12
|
-
return
|
18
|
+
def proper?(name)
|
19
|
+
return false if name.match /\d/
|
13
20
|
end
|
14
21
|
end
|
15
22
|
end
|
@@ -6,8 +6,13 @@ module Clienteer
|
|
6
6
|
def process(row)
|
7
7
|
raw = row[:raw]
|
8
8
|
attrs = [row, raw, raw.first_name, raw.last_name, raw.email]
|
9
|
-
|
10
|
-
|
9
|
+
if contains_nils? attrs
|
10
|
+
row[:reason] = "contains nils"
|
11
|
+
$skipped_people << row
|
12
|
+
return nil
|
13
|
+
else
|
14
|
+
return row
|
15
|
+
end
|
11
16
|
end
|
12
17
|
|
13
18
|
def contains_nils?(attrs)
|
data/lib/clienteer/version.rb
CHANGED
data/rakelib/ideal_protein.rake
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
require 'json'
|
3
|
+
|
4
|
+
require 'dotenv/tasks'
|
5
|
+
|
3
6
|
module IdealProtein
|
4
7
|
class Clean
|
5
8
|
EDIT_URL_REGEX = /\/clinic\/(\d+)\/dieter\/(\d+)\/edit/.freeze
|
@@ -45,7 +48,7 @@ module IdealProtein
|
|
45
48
|
end
|
46
49
|
|
47
50
|
def make_request(url: )
|
48
|
-
buffer = open(url, "Cookie" =>
|
51
|
+
buffer = open(url, "Cookie" => LOGIN_COOKIES).read
|
49
52
|
JSON.parse(buffer)
|
50
53
|
end
|
51
54
|
|
@@ -56,12 +59,13 @@ module IdealProtein
|
|
56
59
|
end
|
57
60
|
end
|
58
61
|
|
62
|
+
|
59
63
|
namespace "ideal_protein" do
|
60
64
|
|
61
65
|
task :default => :clean
|
62
66
|
|
63
67
|
desc "Cleans Ideal Protein client information"
|
64
|
-
task :clean do
|
68
|
+
task :clean => :dotenv do
|
65
69
|
json = IdealProtein::Clean.cleaned_data
|
66
70
|
Dir.mkdir "data" unless Dir.exists? "data"
|
67
71
|
File.open("data/ideal_protein.clean.json", "w+") do |f|
|
@@ -70,7 +74,7 @@ namespace "ideal_protein" do
|
|
70
74
|
end
|
71
75
|
|
72
76
|
desc "Updates Ideal Protein client information"
|
73
|
-
task :update do
|
77
|
+
task :update => :dotenv do
|
74
78
|
json = IdealProtein::Update.get_clients
|
75
79
|
Dir.mkdir "data" unless Dir.exists? "data"
|
76
80
|
File.open("data/ideal_protein.json", "w+") do |f|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clienteer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Metcalfe
|
@@ -133,8 +133,10 @@ files:
|
|
133
133
|
- lib/clienteer/digesters/phase_creation.rb
|
134
134
|
- lib/clienteer/ingester.rb
|
135
135
|
- lib/clienteer/ingesters/mindbody.rb
|
136
|
+
- lib/clienteer/ingesters/yaml_file.rb
|
136
137
|
- lib/clienteer/outgester.rb
|
137
138
|
- lib/clienteer/outgesters/maliero.rb
|
139
|
+
- lib/clienteer/railtie.rb
|
138
140
|
- lib/clienteer/sanitizer.rb
|
139
141
|
- lib/clienteer/sanitizers/address.rb
|
140
142
|
- lib/clienteer/sanitizers/name.rb
|