Skip to content

Commit

Permalink
* lib/hoodwinkd/models.rb: methods to check for globs.
Browse files Browse the repository at this point in the history
 * lib/hoodwinkd/controllers.rb: use globs in the `setup` and `wink` calls.
 * lib/hoodwinkd/dial.rb: allow asterisks in the domain name.
 * lib/hoodwink.rb: load onslaught and dial by default.
 * bin/hoodwinkd: a+x.
  • Loading branch information
_why committed Oct 16, 2006
1 parent 65f2757 commit 98b5890
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 14 deletions.
5 changes: 0 additions & 5 deletions bin/hoodwinkd
Expand Up @@ -3,11 +3,6 @@ $: << File.expand_path("../../lib", __FILE__)
require 'rubygems'
require 'hoodwinkd'

# extensions to the core
require 'hoodwinkd/dial'
require 'hoodwinkd/onslaught'
require 'hoodwinkd/summaries'

Hoodwinkd.connect File.expand_path('../../config/database.yml', __FILE__)
Hoodwinkd.create
Hoodwinkd.serve
9 changes: 8 additions & 1 deletion lib/hoodwinkd.rb
Expand Up @@ -5,16 +5,23 @@
$:.unshift File.dirname(__FILE__)
Camping.goes :Hoodwinkd

DOMAIN = '[\w\-\.]+\.\w+'
DOMAIN = '[\w\-\*\.]+\.\w+'
STATIC = File.expand_path('../../static', __FILE__)
SALT = ""

require 'mimetypes_hash'

# the raw guts
require 'hoodwinkd/helpers'
require 'hoodwinkd/models'
require 'hoodwinkd/controllers'
require 'hoodwinkd/views'

# the niceties
require 'hoodwinkd/dial'
require 'hoodwinkd/onslaught'
require 'hoodwinkd/summaries'

module Hoodwinkd::UserSession
def service(*a)
if @state.user_id
Expand Down
13 changes: 6 additions & 7 deletions lib/hoodwinkd/controllers.rb
Expand Up @@ -11,13 +11,7 @@ def get(domain)

class Setup < R "/(#{DOMAIN})/setup"
def get(domain)
layers =
Site.find_by_sql [<<-END, domain]
SELECT l.name, l.fullpost_qvars, l.css, l.fullpost_xpath, l.fullpost_url_match,
s.domain, s.enabled, s.created_at
FROM hoodwinkd_sites s, hoodwinkd_layers l
WHERE s.domain = ? AND l.site_id = s.id
END
layers = Site.find_setup(domain)
output_json(layers) do |layer|
layer['fullpost_qvars'] = layer['fullpost_qvars'].to_s.split(/\s*,\s+/)
end
Expand Down Expand Up @@ -105,6 +99,11 @@ def post(domain, permalink)
@permalink = url_canonize(permalink, @env['QUERY_STRING'])
pass_in = decrypt( @user.security_token, @input.hoodwink_passc[32,32], @input.hoodwink_passc[0,32] )
if pass_in == decrypt( @user.security_token, @user.password )
layer = Site.find_setup(domain).first
if layer.domain != domain
site = AliasedSite.create(:creator_id => @user.id, :domain => domain, :linked_site => layer)
linklayer = Layer.create(:site => site, :name => '-')
end
@post = Post.find_by_sql([<<-END, domain, @permalink]).first
SELECT p.*, IFNULL(s.real_domain, s.domain) AS real_domain
FROM hoodwinkd_posts p, hoodwinkd_layers l, hoodwinkd_sites s
Expand Down
2 changes: 1 addition & 1 deletion lib/hoodwinkd/dial.rb
Expand Up @@ -6,7 +6,7 @@ def load(domain)
if @site.layers
@layer = @site.layers[0]
end
@layer ||= Layer.new
@layer ||= Layer.new(:name => 'Root')
end
def get(domain)
self.load(domain)
Expand Down
17 changes: 17 additions & 0 deletions lib/hoodwinkd/models.rb
Expand Up @@ -124,6 +124,23 @@ def self.latest(count)
GROUP BY s.id ORDER BY s.created_at DESC, s.id ASC LIMIT #{count.to_i}
}
end
def self.globs(domain)
parts = domain.split('.')
[domain] + (1..parts.length-1).map { |x| "*.#{parts[x..-1].join('.')}" }
end
def self.find_setup(domain)
layers = nil
globs(domain).each do |gdom|
layers =
Site.find_by_sql [<<-END, gdom]
SELECT s.*, l.name, l.fullpost_qvars, l.css, l.fullpost_xpath, l.fullpost_url_match
FROM hoodwinkd_sites s, hoodwinkd_layers l
WHERE s.domain = ? AND l.site_id = s.id AND l.fullpost_xpath IS NOT NULL
END
break unless layers.blank?
end
layers
end
end
class AliasedSite < Site; end
class LinkedSite < Site; end
Expand Down

0 comments on commit 98b5890

Please sign in to comment.