clienteer 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|