Skip to content

Instantly share code, notes, and snippets.

View jfriedlaender's full-sized avatar

Joel Friedlaender jfriedlaender

View GitHub Profile
@jfriedlaender
jfriedlaender / hooks_controller.rb
Created April 23, 2011 04:37 — forked from ryansch/hooks_controller.rb
Rails 3 Controller for Chargify Webhooks
require 'digest/md5'
class Chargify::HooksController < ApplicationController
protect_from_forgery :except => :dispatch_handler
before_filter :verify, :only => :dispatch_handler
EVENTS = %w[ test signup_success signup_failure renewal_success renewal_failure payment_success payment_failure billing_date_change subscription_state_change subscription_product_change ].freeze
def dispatch_handler
event = params[:event]
@jfriedlaender
jfriedlaender / gist:1018597
Created June 10, 2011 10:29
Internationalize phone numbers
def self.internationalize_phone_number(number, country)
c = Country[Country.find_by_name(country)[0]]
if c
number = Phony.normalize(number)
number = "#{c.country_code}#{number}" unless number.starts_with?(c.country_code)
end
number = Phony.normalize(number)
number
end
@jfriedlaender
jfriedlaender / gist:1120165
Created August 2, 2011 13:22
add birth_day and birth_month fields to person model
rails generate migration add_birth_date_fields_to_users birth_day:integer birth_month:integer
desc "Updating birth dates from date of birth"
task :update_birth_date_fields => :environment do
puts "Updating birth dates from date of birth"
User.where('date_of_birth is not null').each do |u|
u.birth_month = u.date_of_birth.month
u.birth_day = u.date_of_birth.day
u.save
end
private
def update_birth_date_fields
if date_of_birth_changed?
self.birth_month = date_of_birth ? date_of_birth.month : nil
self.birth_day = date_of_birth ? date_of_birth.day : nil
end
end
before_save :update_birth_date_fields
private
def update_birth_date_fields
if date_of_birth_changed?
self.birth_month = date_of_birth ? date_of_birth.month : nil
self.birth_day = date_of_birth ? date_of_birth.day : nil
end
end
def subscription_state_change
begin
account = Account.find(@subscription.customer.reference)
account.subscription_state = @subscription.state
account.subscription_billing_date = @subscription.current_period_ends_at
account.save(:validate => false)
render :nothing => true, :status => 200
rescue Exception => e
notify_hoptoad(e) #If you use hoptoad...
render :nothing => true, :status => 422 and return
@jfriedlaender
jfriedlaender / gist:1273614
Created October 9, 2011 12:19
Lighten or darken a hexadecimal color (string)
# Amount should be a decimal between 0 and 1. Lower means darker
def darken_color(hex_color, amount=0.4)
hex_color = hex_color.gsub('#','')
rgb = hex_color.scan(/../).map {|color| color.hex}
rgb[0] = (rgb[0].to_i * amount).round
rgb[1] = (rgb[1].to_i * amount).round
rgb[2] = (rgb[2].to_i * amount).round
"#%02x%02x%02x" % rgb
end
@jfriedlaender
jfriedlaender / gist:1273620
Created October 9, 2011 12:21
Get contrasting color
def contrasting_text_color(hex_color)
color = hex_color.gsub('#','')
convert_to_brightness_value(color) > 382.5 ? darken_color(color) : lighten_color(color)
end
def convert_to_brightness_value(hex_color)
(hex_color.scan(/../).map {|color| color.hex}).sum
end
@jfriedlaender
jfriedlaender / gist:2879834
Created June 6, 2012 04:00
Chargify migrate preview
def plan_change_preview(new_plan_id)
api_url = "https://#{Chargify.subdomain}.chargify.com/subscriptions/#{subscription_id}/migrations/preview.json"
data = {:migration => {:product_handle => p_handle} }
response = HTTParty.post(api_url, :body => data.as_json, :basic_auth => {:username => Chargify.api_key, :password => 'X'})
response.parsed_response.first[1]
end