* Get a job created that can create a webhook subscription for a twitch user login
* Remove ngork url
* Refactor add store the access token in the cache
* Get a controller stood up to recieve the webhooks. Now they just need to be processed
* Get User columns added and got webhook controller bones working
* Update the webhook job to use the User
* Add a way for the User to input their Twitch User Name. Plus a linter fix
* Delay webhook registration when profile is updated
* Don't add _ in username
* Use String columns
* Quick fix and add some more requests specs
* Specs for the webhook job
* Get a show page Twitch Live Streams. Just a straight embed of the Twitch Everything Embed UI. Works surprisingly well responsively, and works on all screen sizes
* Fix Gemfile.lock from merge issues
* Add support for expired tokens and add spec
* Add secrets to webhook registration and clean up spec to remove token logic
* Verify webhook secret and spec it
* Add rake task to enqueue webhook registration for all Users. This can be used from Heroku Scheduler
* Update the lease seconds to be for 5 days
* Actually lets do 7 so we can refresh twice a week and try to make sure that we can always miss one
* Hijack the existing Twitch logo instead of making a duplicate one
* Remove comment and replace with log line
* Remove some white space
* Log to Airbrake when webhook errors occur
* Move to passing in an id instead of User object
* Extract logic from Job to Service object
* Capitilize in the view
* Move out of models and into services
* Remove letover stub
* Remove one usage of Faraday
* Use HTTParty for all the HTTP here
The char "-" in regexp defaults a a separator for a range of character, for example: "a-z", Ruby is smart enough to understand "-_" is no range but it does emit a warning, by properly escaping the char "-" we ensure that no warning or issues can arise in the future.
* Improve Gist Link Regex
While working with the gist liquid tag, I noticed that valid gist links
were resulting in errors. After looking at `gist_tag.rb`, I noticed
that for a link to be considered valid the gist-id had to be exactly 32
characters which is not always true.
I changed the regex so links with a gist-id of at least one character and
at most 32 characters is considered valid. I decided to continue with
the 32 characters that had previously been used as the upper bound. I
also made a change so links with a github username that starts or ends
with hypens or contains consecutive hypens are considered invalid. The
aforementioned change was based on the validation message from the
create new GitHub account form.
* Change gist_link to gist_links in spec file for Gist tag
* Specs for FuctionCaller
* Fix accepting nil values from AWS lambda
* Specs for the black_box #2524
* Spec for BlackBox#comment_quality_score
* Remove vcr cassette usage from the CouponGenerator spec
* Initial classified listings work
* More work on tags
* Additional work finalizing stripe and getting the listings page along
* Finalize-ish listings 🤞
* Add tracking and missing specs for DigestMailer
* Add tracking and missing specs for MembershipMailer
* Add tracking and missing specs for NotifyMailer
* Add tracking and missing specs for ScholarshipMailer
* Remove deprecated analytics role
* Make anchor tag a bit more readable
* Add OrganizationMembership table and model
* Add organization_membership associations
* Add unique indices for user_id and org_id
* Wrap update and create calls in transactions
* Remove specs of deprecated analytics_beta_tester
* Add ability to embed Medium URL as liquid tag
- Added new liquid tag - "{% medium https://medium.com}"
- Added a scraper - `MediumArticleRetrievalService` which crawls the
given Medium URL for informations needed for the liquid tag
* Add Medium logo in rendered liquid tag
* be able to sort dashboard articles (#1837)
* remember to escape order clause is arel (#1837)
* add back in missing character for created_at (#1837)
* use case statement to avoid threat of injection (#1837)
* write specs to ensure sorting works for dashboard articles (#1837)
* add publish sort options, refactor sort options into articles helper (#1837)
* refactor to use model scope (#1837)
* Move estimating user language logic to a service object
* Call a service from a User#estimate_default_language!
* ActiveJob for estimating default user language
* Call ActiveJob from the User#estimate_default_language
* Handle nil user email when estimating default language
* Switch user.estimate_default_language_without_delay! to estimate_default_language! in specs
* allow codesandbox to accept runonclick
- runonclick=1 lets the user load the codesandbox when they decide
- added runonclick tests to spec
* documentation to editor_guide
* Use better description for test
* Test for new profile_updated_at touches
* Touch profile_updated_at when removing an auth
* Touch profile_updated_at when authing w/ new social username
* add moderation email list columns
* automate tag moderator mailing list
* reorder logic for tag mod list
* add community mod list
* remove trusted privileges when reverting a user to a regular member
* automatically make tag mods community mods
* fix merge conflicts
* add community view
* make methods less complex based on code climate sugggestion
* add specs
* refactor tag moderator module
* fix spec
* Add specs for single article functionality
* Add single article functionality
* Use article_id instead of single_article_id
* Add published: true when querying for one article
* Use article_id in specs oops
* Set users email to nil instead of blank
* Remove uniqueness validation duplication for users
* Fix organization following test in case the name contains quotes
* Add tech support role
* Add tech support permission method
* Enabled /delayed_job for tech support users
* Fix typo oops
* Add tests for tech support viewing /delayed_job
* Fix typo again...
* Rename tech role to tech admin
* Switch from deprecated honeycomb-rails to honeycomb-beeline
* Improve error handling, tests and add refactoring
* Fix multiple fetching test and add one more
The test wasn't actually testing the correct behavior, because the class
by default force fetches. It worked because it wasn't reloading the user
from the database.
* Test that Honeycomb's client is doing its thing
* Use some defensive programming to avoid any possible problem during shutdown
* Fix typo
* Use the new API to add fields to the current measured event
* Use default instrumentation and add user info to event
* Replace user.email with user.username, less personal data around
* Use mocking instead of calling Honeycomb.init
* Freeze time before traveling
* Remove a flaky test dependent on rand