sea-vax
change
commit 9de0aafcbc0e5e3f7dec3590fbf94eca6b93077c
author Alpha Chen <alpha@kejadlen.dev>
date
parent 1cc92ca4
diff --git a/sea-vax/.ruby-version b/sea-vax/.ruby-version
new file mode 100644
index 0000000..1effb00
--- /dev/null
+++ b/sea-vax/.ruby-version
@@ -0,0 +1 @@
+2.7
diff --git a/sea-vax/sea-vax.rb b/sea-vax/sea-vax.rb
new file mode 100755
index 0000000..861f111
--- /dev/null
+++ b/sea-vax/sea-vax.rb
@@ -0,0 +1,53 @@
+#!/usr/bin/env ruby
+
+require "bundler/inline"
+
+gemfile do
+  source "https://rubygems.org"
+  gem "capybara"
+  gem "pry"
+  gem "selenium-webdriver"
+end
+
+def suppress_warnings
+  original_verbosity = $VERBOSE
+  $VERBOSE = nil
+  yield
+  $VERBOSE = original_verbosity
+end
+
+require "capybara"
+Capybara.default_driver = :selenium
+
+require "selenium/webdriver"
+Selenium::WebDriver::Firefox::Binary.path = "/Applications/Firefox\ Developer\ Edition.app/Contents/MacOS/firefox"
+
+require "capybara/dsl"
+suppress_warnings do
+  include Capybara::DSL
+end
+
+logger = Logger.new(STDOUT)
+logger.level = Logger::INFO
+
+url = "https://seattle.signetic.com/home"
+suppress_warnings do
+  loop do
+    logger.info("Checking...")
+    visit url
+
+    break unless page.has_content?("No appointments available")
+
+    sleep 5*60
+  end
+end
+
+twilio_sid = ENV.fetch("TWILIO_SID")
+twilio_token = ENV.fetch("TWILIO_TOKEN")
+twilio_from = ENV.fetch("TWILIO_FROM")
+twilio_to = ENV.fetch("TWILIO_TO")
+`curl -X POST https://api.twilio.com/2010-04-01/Accounts/#{twilio_sid}/Messages.json \
+  --data-urlencode "Body=#{url}" \
+  --data-urlencode "From=+#{twilio_from}" \
+  --data-urlencode "To=+#{twilio_to}" \
+  -u $TWILIO_SID:$TWILIO_TOKEN`