Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
larsburgess committed Dec 22, 2011
0 parents commit 1d75bf4
Show file tree
Hide file tree
Showing 14 changed files with 500 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
coverage
log

*.rdb
33 changes: 33 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
source 'http://rubygems.org'

gem 'rhoconnect', '3.0.6'
gem 'aws-s3'

# Helps with some of the limitations of green threads, not needed in ruby 1.9.x
gem 'SystemTimer', '~> 1.2.3', :platforms => :ruby_18

platforms :jruby do
gem 'jdbc-sqlite3', ">= 3.7.2"
gem 'dbi', ">= 0.4.5"
gem 'dbd-jdbc', ">= 0.1.4"
gem 'jruby-openssl', ">= 0.7.4"
gem 'warbler'
end

gem 'sqlite3', ">= 1.3.3", :platforms => [:ruby, :mswin, :mingw]

# For jruby trinidad JRuby web server is used
gem 'trinidad', :platforms => :jruby

group :development do
# By default to run application thin web server is used
gem 'thin', :platforms => [:ruby, :mswin, :mingw]
gem 'rhomobile-debug', ">= 1.0.2"
end

group :test do
gem 'rack-test', '>= 0.5.3', :require => "rack/test"
gem 'rspec', '~> 2.6.0'
gem 'rcov', '>= 0.9.8'
gem 'rhomobile-debug', ">= 1.0.2"
end
93 changes: 93 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
GEM
remote: http://rubygems.org/
specs:
SystemTimer (1.2.3)
aws-s3 (0.6.2)
builder
mime-types
xml-simple
builder (3.0.0)
daemons (1.1.4)
diff-lcs (1.1.3)
eventmachine (0.12.10)
extlib (0.9.15)
highline (1.6.5)
json (1.5.4)
mime-types (1.17.2)
multi_json (1.0.3)
rack (1.3.5)
rack-protection (1.1.4)
rack
rack-test (0.6.1)
rack (>= 1.0)
rake (0.9.2.2)
rcov (0.9.11)
redis (2.2.2)
redis-namespace (1.0.3)
redis (< 3.0.0)
resque (1.19.0)
multi_json (~> 1.0)
redis-namespace (~> 1.0.2)
sinatra (>= 0.9.2)
vegas (~> 0.1.2)
rest-client (1.6.7)
mime-types (>= 1.16)
rhoconnect (3.0.6)
bundler (~> 1.0)
json (~> 1.5.0)
rake (~> 0.9.2)
redis (>= 2.2.0)
resque (~> 1.19.0)
rest-client (~> 1.6.1)
rubyzip (~> 0.9.4)
sinatra (~> 1.3)
templater (~> 1.0.0)
uuidtools (>= 2.1.1)
rhomobile-debug (1.0.5)
rspec (2.6.0)
rspec-core (~> 2.6.0)
rspec-expectations (~> 2.6.0)
rspec-mocks (~> 2.6.0)
rspec-core (2.6.4)
rspec-expectations (2.6.0)
diff-lcs (~> 1.1.2)
rspec-mocks (2.6.0)
rubyzip (0.9.4)
sinatra (1.3.1)
rack (~> 1.3, >= 1.3.4)
rack-protection (~> 1.1, >= 1.1.2)
tilt (~> 1.3, >= 1.3.3)
sqlite3 (1.3.4)
templater (1.0.0)
diff-lcs (>= 1.1.2)
extlib (>= 0.9.5)
highline (>= 1.4.0)
thin (1.2.11)
daemons (>= 1.0.9)
eventmachine (>= 0.12.6)
rack (>= 1.0.0)
tilt (1.3.3)
uuidtools (2.1.2)
vegas (0.1.8)
rack (>= 1.0.0)
xml-simple (1.1.1)

PLATFORMS
ruby

DEPENDENCIES
SystemTimer (~> 1.2.3)
aws-s3
dbd-jdbc (>= 0.1.4)
dbi (>= 0.4.5)
jdbc-sqlite3 (>= 3.7.2)
jruby-openssl (>= 0.7.4)
rack-test (>= 0.5.3)
rcov (>= 0.9.8)
rhoconnect (= 3.0.6)
rhomobile-debug (>= 1.0.2)
rspec (~> 2.6.0)
sqlite3 (>= 1.3.3)
thin
trinidad
warbler
22 changes: 22 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
require 'rubygems'
require 'bundler/setup'

begin
require 'vendor/rhoconnect/lib/rhoconnect/tasks'
require 'vendor/rhoconnect/lib/rhoconnect'
rescue LoadError
require 'rhoconnect/tasks'
require 'rhoconnect'
end

ROOT_PATH = File.expand_path(File.dirname(__FILE__))

begin
require 'resque/tasks'
task "resque:setup" do
require 'application'
end
rescue LoadError
puts "Resque not available. Install it with: "
puts "gem install resque\n\n"
end
20 changes: 20 additions & 0 deletions application.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class Application < Rhoconnect::Base
class << self
def authenticate(login,password,session)
true
end

# Add hooks for application startup here
# Don't forget to call super at the end!
def initializer(path)
super
end

def store_blob(obj,field_name,blob)
obj['filename'] = blob[:filename]
super
end
end
end

Application.initializer(ROOT_PATH)
43 changes: 43 additions & 0 deletions config.ru
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env ruby
require 'rubygems'
require 'bundler'
Bundler.require

ROOT_PATH = File.expand_path(File.dirname(__FILE__))

if ENV['DEBUG'] == 'yes'
ENV['APP_TYPE'] = 'rhoconnect'
ENV['ROOT_PATH'] = ROOT_PATH
require 'debugger'
end

# Try to load vendor-ed rhoconnect, otherwise load the gem
begin
require 'vendor/rhoconnect/lib/rhoconnect/server'
require 'vendor/rhoconnect/lib/rhoconnect/console/server'
rescue LoadError
require 'rhoconnect/server'
require 'rhoconnect/console/server'
end

# By default, turn on the resque web console
require 'resque/server'


# Rhoconnect server flags
Rhoconnect::Server.disable :run
Rhoconnect::Server.disable :clean_trace
Rhoconnect::Server.enable :raise_errors
Rhoconnect::Server.set :secret, 'c700fa2474075a0d0549208004012f33f86e2d5d97962b9c53003d364eab1fe3e13c3faa32822228ff53e10bc0b0f22f8944f1ed32fce0528c0ee79c8027f47d'
Rhoconnect::Server.set :root, ROOT_PATH
Rhoconnect::Server.use Rack::Static, :urls => ["/data"], :root => Rhoconnect::Server.root

# Load our rhoconnect application
$:.unshift ROOT_PATH if RUBY_VERSION =~ /1.9/ # FIXME: see PT story #16682771
require 'application'

# Setup the url map
run Rack::URLMap.new \
"/" => Rhoconnect::Server.new,
"/resque" => Resque::Server.new, # If you don't want resque frontend, disable it here
"/console" => RhoconnectConsole::Server.new # If you don't want rhoconnect frontend, disable it here
1 change: 1 addition & 0 deletions settings/license.key
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
858fc60fadfde40273d0ac505906969318aa4931d1a2c4aeb24d98393c74379f60e226651601969874257f7f1fbda9b099ecd551a641519aa46819947fda0191
21 changes: 21 additions & 0 deletions settings/settings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
:sources:
BlobTest:
:poll_interval: 0
BlobTest_s:
:poll_interval: 0
Image:
:poll_interval: 0
Metadata:
:poll_interval: 0

:test:
:licensefile: settings/license.key
:syncserver: http://localhost:9292/application/
:redis: localhost:6379
:production:
:licensefile: settings/license.key
:syncserver: http://localhost:9292/application/
:development:
:licensefile: settings/license.key
:syncserver: http://localhost:9292/application/
:redis: localhost:6379
12 changes: 12 additions & 0 deletions sources/blob_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
require 'image_base'
class BlobTest < ImageBase
def initialize(source,credential)
AWS::S3::Base.establish_connection!(
:access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
:secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
)
@baseurl = 'http://s3.amazonaws.com/'
@bucket = 'rhodes-system-samples-images-auto'
super(source,credential)
end
end
12 changes: 12 additions & 0 deletions sources/blob_test_s.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
require 'image_base'
class BlobTest_s < ImageBase
def initialize(source,credential)
AWS::S3::Base.establish_connection!(
:access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
:secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
)
@baseurl = 'http://s3.amazonaws.com/'
@bucket = 'rhodes-system-samples-images-auto'
super(source,credential)
end
end
12 changes: 12 additions & 0 deletions sources/image.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
require 'image_base'
class Image < ImageBase
def initialize(source,credential)
AWS::S3::Base.establish_connection!(
:access_key_id => ENV['AMAZON_ACCESS_KEY_ID'],
:secret_access_key => ENV['AMAZON_SECRET_ACCESS_KEY']
)
@baseurl = 'http://s3.amazonaws.com/'
@bucket = 'rhodes-system-samples-images'
super(source,credential)
end
end
36 changes: 36 additions & 0 deletions sources/image_base.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
require 'aws/s3'

class ImageBase < SourceAdapter
include AWS::S3

def query(params=nil)
@result={}
Bucket.find(@bucket).objects.each do |entry|
new_item = {
'image_uri-rhoblob' => @baseurl+@bucket+'/'+File.basename(entry.key),
'name' => entry.key
}
puts "Found: #{new_item.inspect}"
@result[entry.key] = new_item
end
@result
end

def create(name_value_list)
puts "Creating: #{name_value_list.inspect}"
name = name_value_list["image_uri"]
basename = name_value_list["filename"]
S3Object.store(
basename,
open(name),
@bucket,
:access => :public_read
)
basename
end

def delete(name_value_list)
puts "Removing: #{name_value_list.inspect}"
S3Object.delete name_value_list['id'], @bucket
end
end
Loading

0 comments on commit 1d75bf4

Please sign in to comment.