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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8441af948319eba21de55ceba77423ce5fc6e74
4
- data.tar.gz: c9d5194af632e69a92b918e55f05a984e6f9850e
3
+ metadata.gz: 909d6a39576f9b6be0b0d3b101c1fd4a4b3a651e
4
+ data.tar.gz: 02daeaa0c4c2107f00cec10cff1f4b3461505849
5
5
  SHA512:
6
- metadata.gz: e8f38276a74a226fc4dd2b4892afd6a3c80a9758680ba39536ece93421e1a949537da756f67cb1349bf812a0e8e4fdbfc8b385e9467552451f784669cd289254
7
- data.tar.gz: 62cfa6a37779933d3f7cac7231fc7bebdca257915dad90043f57bcc5eef2bf6002e51fb1c93d73408a6d2aba4993956f6664af1ed89fa988daf8bc2e50ce4263
6
+ metadata.gz: 3fa588c1a9c4ea2ea0a3573ff77e5626b5425977351474d50792b6c61673882cbebb494fbbbd131043df70d41195239cff5f45200b275c6403d309fbbc49a81c
7
+ data.tar.gz: 2d391670aaf41b5677cb53f173539a4a8d100a11aaf14302b3dede29908f4c44218ab38301b51d8addb6580cbad2bd24fb6d70ccee46bedb7290731121250c51
data/.gitignore CHANGED
@@ -8,8 +8,8 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
 
11
- data/ideal_protein.json
12
-
13
- data/ideal_protein.clean.json
11
+ /data/
14
12
 
15
13
  *.gem
14
+
15
+ .env
data/Gemfile CHANGED
@@ -4,3 +4,4 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  gem "mindbody-api", git: "https://github.com/wingrunr21/mindbody-api.git"
7
+ gem 'dotenv-rails'
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.join(",")
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
- require "json"
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
- return nil if person.nil?
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
 
@@ -6,8 +6,6 @@ module Clienteer
6
6
  end
7
7
 
8
8
  def process(row)
9
- $count += 1
10
- binding.pry unless $count >= 20
11
9
  row["phase"] = Phase.where(number: row["phase"]).first
12
10
  row
13
11
  end
@@ -1,4 +1,5 @@
1
1
  require_relative "ingesters/mindbody"
2
+ require_relative "ingesters/yaml_file"
2
3
 
3
4
  module Clienteer
4
5
  module Ingester
@@ -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?
@@ -0,0 +1,11 @@
1
+
2
+ module Clienteer
3
+ class Railtie < Rails::Railtie
4
+ rake_tasks do
5
+ desc "Runs clienteer"
6
+ task :clienteer => :environment do
7
+ Clienteer.call
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,6 @@
1
1
  require_relative "sanitizers/nil_finder"
2
2
  require_relative "sanitizers/address"
3
+ require_relative "sanitizers/name"
3
4
 
4
5
  module Clienteer
5
6
  module Sanitizer
@@ -4,13 +4,17 @@ module Clienteer
4
4
  class Address
5
5
 
6
6
  def process(row)
7
- address = row["address"]
8
- return nil unless check_zip_code address
9
- clean_state address
10
- row
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 check_zip_code(address)
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.any?(&:not_proper?) ? nil : row
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 not_proper?(name)
12
- return true if name.match /\d/
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
- return nil if contains_nils? attrs
10
- row
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)
@@ -1,3 +1,3 @@
1
1
  module Clienteer
2
- VERSION = "1.4.0"
2
+ VERSION = "1.4.1"
3
3
  end
@@ -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" => COOKIES).read
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.0
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