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 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