uzuuzu-core 0.0.10 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.10
1
+ 0.0.12
@@ -21,6 +21,8 @@ module UzuUzu
21
21
  attr_accessor :helpers
22
22
  #
23
23
  attr_accessor :views
24
+ #
25
+ attr_accessor :servicies
24
26
 
25
27
  #
26
28
  #
@@ -46,6 +48,7 @@ module UzuUzu
46
48
  @environments = Environments.new(@config_file)
47
49
  ::UzuUzu.apps[@name] = self
48
50
  yield self if block_given?
51
+ ::Thread.current[:application] = nil
49
52
  end # initialize
50
53
 
51
54
  def self.controllers
@@ -95,6 +98,14 @@ module UzuUzu
95
98
  def views
96
99
  @views ||= self.class.views.clone
97
100
  end
101
+
102
+ def self.services
103
+ @@services ||= []
104
+ end
105
+
106
+ def services
107
+ @services ||= self.class.services.clone
108
+ end
98
109
 
99
110
  #
100
111
  #
@@ -0,0 +1,87 @@
1
+ # coding: utf-8
2
+
3
+ require 'openid'
4
+ require 'openid/store/filesystem'
5
+ require 'openid/extensions/pape'
6
+ require 'openid/extensions/sreg'
7
+ require 'openid/store/memcache'
8
+
9
+ module UzuUzu
10
+ module Controller
11
+ #
12
+ #
13
+ #
14
+ class Openid
15
+ include ::UzuUzuCms::Helper::Controller
16
+
17
+ # need params['domain']
18
+ def index
19
+ if session[:openid_domain].blank? or session[:openid_entry].blank?
20
+ openid_begin
21
+ elsif session[:openid_domain] and session[:openid_entry]
22
+ openid_complete
23
+ else
24
+ response.redirect request.referrer || "/"
25
+ end
26
+ end
27
+
28
+ def openid_begin
29
+ domain = request.params['domain']
30
+ response.redirect request.referrer || "/" if domain.to_s.empty?
31
+ session[:openid_domain] = domain
32
+ session[:openid_entry] = request.referrer || "/"
33
+
34
+ openid_request = openid_consumer.begin(domain)
35
+
36
+ papereq = ::OpenID::PAPE::Request.new
37
+ papereq.add_policy_uri(::OpenID::PAPE::AUTH_PHISHING_RESISTANT)
38
+ papereq.max_auth_age = 2*60*60
39
+ openid_request.add_extension(papereq)
40
+
41
+ sregreq = ::OpenID::SReg::Request.new
42
+ sregreq.request_fields(['fullname', 'nickname', 'dob', 'email',
43
+ 'gender', 'postcode', 'country', 'language',
44
+ 'timezone'])
45
+ openid_request.add_extension(sregreq)
46
+ openid_request.return_to_args['did_pape'] = 'y'
47
+
48
+ root = helper.root_uri
49
+ return_to = "#{helper.root_uri}#{helper.r(:openid_complete)}"
50
+ immediate = false
51
+
52
+ if openid_request.send_redirect?(root, return_to, immediate)
53
+ redirect_url = openid_request.redirect_url(root, return_to, immediate)
54
+ response.redirect redirect_url
55
+ else
56
+ # what the hell is @form_text ?
57
+ end
58
+ rescue ::OpenID::OpenIDError => ex
59
+ response.server_error
60
+ end
61
+
62
+ def openid_complete
63
+ openid_response = openid_consumer.complete(request.params, request.url)
64
+
65
+ case openid_response.status
66
+ when ::OpenID::Consumer::FAILURE
67
+ when ::OpenID::Consumer::SUCCESS
68
+ # Backwards compatibility
69
+ session[:openid_identity] = openid_response.identity_url
70
+ session[:openid_sreg] = ::OpenID::SReg::Response.from_success_response(openid_response)
71
+ end
72
+ openid_entry = session[:openid_entry]
73
+ session.delete(:openid_entry)
74
+ response.redirect openid_entry
75
+ end
76
+
77
+
78
+ private
79
+
80
+ # use memcache
81
+ def openid_consumer
82
+ _memcache = ::OpenID::Store::Memcache.new(memcache)
83
+ ::OpenID::Consumer.new(session, _memcache)
84
+ end
85
+ end # Openid
86
+ end # Controller
87
+ end # UzuUzu
@@ -0,0 +1,66 @@
1
+ # coding: utf-8
2
+ require 'oauth'
3
+
4
+ module UzuUzuCms
5
+ module Controller
6
+ module Login
7
+ class Twitter
8
+ include ::UzuUzuCms::Helper::Controller
9
+
10
+ def index
11
+ @config = Environments.current.config['twitter']
12
+ response.server_error if @config.blank?
13
+ if session[:login_user_id]
14
+ redirect request.referrer || '/'
15
+ end
16
+ if session[:twitter_request_token].blank? || session[:twitter_request_token_secret].blank?
17
+ request_token(name)
18
+ end
19
+ access_token
20
+ response.redirect session[:referer] || '/'
21
+ end # index
22
+
23
+ private
24
+ def request_token
25
+ session[:referer] = request.referrer || '/'
26
+ twitter_consumer = OAuth::Consumer.new(@config['consumer_key'], @config['consumer_secret'], :site => "http://twitter.com")
27
+ unless twitter_consumer
28
+ response.server_error
29
+ end
30
+
31
+ request_token = twitter_consumer.get_request_token
32
+ session[:twitter_request_token] = request_token.token
33
+ session[:twitter_request_token_secret] = request_token.secret
34
+
35
+ response.redirect request_token.authorize_url
36
+ end
37
+
38
+ def access_token
39
+ twitter_consumer = OAuth::Consumer.new(@config['consumer_key'], @config['consumer_secret'], :site => "http://twitter.com")
40
+ unless twitter_consumer
41
+ response.server_error
42
+ end
43
+ request_token = OAuth::RequestToken.new(
44
+ twitter,
45
+ session[:twitter_request_token],
46
+ session[:twitter_request_token_secret]
47
+ )
48
+ access_token = request_token.get_access_token(
49
+ {},
50
+ :oauth_token => request.params[:oauth_token],
51
+ :oauth_verifier => request.params[:oauth_verifier]
52
+ )
53
+ session[:twitter_access_token] = access_token.token
54
+ session[:twitter_access_token_secret] = access_token.secret
55
+ session.delete(:twitter_request_token)
56
+ session.delete(:twitter_request_token_secret)
57
+
58
+ session[:twitter_user_id] = access_token.params[:user_id]
59
+ session[:login_user_id] = access_token.params[:screen_name]
60
+ session[:login_name] = access_token.params[:screen_name]
61
+ session[:login_domain] = 'twitter'
62
+ end
63
+ end # Oauth
64
+ end # Login
65
+ end # Controller
66
+ end # UzuUzuCms
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+
3
+ module UzuUzuCms
4
+ module Controller
5
+ module Logout
6
+ class Index
7
+ include ::UzuUzuCms::Helper::Controller
8
+
9
+ def index
10
+ session.delete(:openid_identity)
11
+ session.delete(:openid_sreg)
12
+ session.delete(:openid_domain)
13
+ session.delete(:openid_entry)
14
+ session.delete(:twitter_user_id)
15
+ session.delete(:twitter_access_token)
16
+ session.delete(:twitter_access_token_secret)
17
+ session.delete(:login_user_id)
18
+ session.delete(:login_name)
19
+ session.delete(:login_domain)
20
+ session.clear
21
+ end
22
+ end # Index
23
+ end # Logout
24
+ end # Controller
25
+ end # UzuUzuCms
@@ -9,16 +9,14 @@ module UzuUzu
9
9
  #
10
10
  DEFAULT_YAML = 'uzuuzu.yaml'
11
11
  #
12
- attr_accessor :logger
12
+ attr_accessor :flyweight
13
13
  #
14
- attr_accessor :datastore
14
+ attr_accessor :service_name
15
15
  #
16
- attr_accessor :kvs
16
+ attr_accessor :logger
17
17
  #
18
18
  attr_accessor :memcache
19
19
  #
20
- attr_accessor :mailer
21
- #
22
20
  attr_accessor :rack_session
23
21
  #
24
22
  attr_accessor :config
@@ -53,6 +51,7 @@ module UzuUzu
53
51
  return if map.blank?
54
52
  @config = map
55
53
  @lang = map['lang'] || 'ja'
54
+ @service_name = map['service']
56
55
  load_localize
57
56
  end
58
57
 
@@ -69,7 +68,17 @@ module UzuUzu
69
68
  end
70
69
  end
71
70
  end
71
+
72
+ def flyweight
73
+ @flyweight = {} if @flyweight.nil?
74
+ @flyweight
75
+ end
72
76
 
77
+ def config
78
+ return {} if @config.nil?
79
+ @config['config'] || {}
80
+ end
81
+
73
82
  def logger
74
83
  if @logger.nil?
75
84
  env = @config['logger'].clone unless @config.nil?
@@ -78,22 +87,6 @@ module UzuUzu
78
87
  @logger
79
88
  end
80
89
 
81
- def datastore
82
- if @datastore.nil?
83
- env = @config['datastore'].clone unless @config.nil?
84
- @datastore = Wrapper::Wrapper.new('datastore', env || {}).wrapper
85
- end
86
- @datastore
87
- end
88
-
89
- def kvs
90
- if @kvs.nil?
91
- env = @config['kvs'].clone unless @config.nil?
92
- @kvs = Wrapper::Wrapper.new('kvs', env || {}).wrapper
93
- end
94
- @kvs
95
- end
96
-
97
90
  def memcache
98
91
  if @memcache.nil?
99
92
  env = @config['memcache'].clone unless @config.nil?
@@ -102,14 +95,6 @@ module UzuUzu
102
95
  end
103
96
  @memcache
104
97
  end
105
-
106
- def mailler
107
- if @mailer.nil?
108
- env = @config['mailer'].clone unless @config.nil?
109
- @mailer = Wrapper::Wrapper.new('mailer', env || {}).wrapper
110
- end
111
- @mailer
112
- end # mailler
113
98
 
114
99
  def rack_session
115
100
  if @rack_session.nil?
@@ -15,34 +15,6 @@ module UzuUzu
15
15
  def logger
16
16
  ::UzuUzu.logger
17
17
  end
18
-
19
- #
20
- #
21
- #
22
- def memcache
23
- ::UzuUzu.memcache
24
- end
25
-
26
- #
27
- #
28
- #
29
- def kvs
30
- ::UzuUzu.kvs
31
- end
32
-
33
- #
34
- #
35
- #
36
- def datastore
37
- ::UzuUzu.datastore
38
- end
39
-
40
- #
41
- #
42
- #
43
- def mailer
44
- ::UzuUzu.mailer
45
- end
46
18
 
47
19
  #
48
20
  #
@@ -79,20 +51,6 @@ module UzuUzu
79
51
  ::UzuUzu.helper
80
52
  end
81
53
 
82
- #
83
- #
84
- #
85
- def model
86
- ::UzuUzu.model
87
- end
88
-
89
- #
90
- #
91
- #
92
- def service
93
- ::UzuUzu.service
94
- end
95
-
96
54
  #
97
55
  #
98
56
  #
@@ -121,6 +79,13 @@ module UzuUzu
121
79
  request.session
122
80
  end
123
81
 
82
+ #
83
+ #
84
+ #
85
+ def service(name)
86
+ ::UzuUzu.service(name)
87
+ end
88
+
124
89
  #
125
90
  #
126
91
  #
@@ -46,6 +46,7 @@ module UzuUzu
46
46
  request.scheme == 'http' && request.port != 80
47
47
  abs_uri << ":#{request.port}"
48
48
  end
49
+ abs_uri << "#{request.env['SCRIPT_NAME']}"
49
50
  abs_uri
50
51
  end
51
52
  end
@@ -18,7 +18,10 @@ module UzuUzu
18
18
  address = env['address'] || address
19
19
  space = env['space'] || UzuUzu.application.name || space
20
20
  end
21
- ::FileUtils.mkdir_p(::File.dirname(address))
21
+ unless ::File.exists?(address)
22
+ ::FileUtils.mkdir_p(address)
23
+ end
24
+
22
25
  @db = LevelDB::DB.new("#{address}/#{space}")
23
26
  end
24
27
 
@@ -14,7 +14,7 @@ module UzuUzu
14
14
  @adapter = :memcache
15
15
  super(nil, env)
16
16
  @mutex = Mutex.new
17
- @pool = ::UzuUzu::Wrapper::Wrapper.new('memcache', env['env']).wrapper
17
+ @pool = ::UzuUzu::Wrapper::Wrapper.new('memcache', env['config']).wrapper
18
18
  end
19
19
 
20
20
  def app(app)
@@ -11,8 +11,10 @@ module UzuUzu
11
11
  service = AppsLoaded[::UzuUzu.current.name][id.to_sym]
12
12
  unless service
13
13
  require_base = self.name.gsub(/::/, '/').sub(/^UzuUzu/, 'uzuuzu').snake_case
14
- require "#{require_base}/#{::UzuUzu.datastore.adapter}/#{id.to_s.snake_case}"
15
- service = const_get("#{::UzuUzu.datastore.adapter.to_s.camel_case}").const_get("#{id}")
14
+ service_name = ::Environments.current.service_name || ''
15
+ service_name = "#{service_name}/" unless service_name.blank?
16
+ require "#{require_base}/#{service_name}#{id.to_s.snake_case}"
17
+ service = const_get("#{service_name.camel_case}").const_get("#{id}")
16
18
  service.apploaded if service.respond_to?(:apsploaded)
17
19
  AppsLoaded[::UzuUzu.current.name][id.to_sym] = service
18
20
  end
@@ -38,26 +38,11 @@ module UzuUzu
38
38
  Environments.current.logger
39
39
  end
40
40
 
41
- #
42
- def datastore
43
- Environments.current.datastore
44
- end
45
-
46
- #
47
- def kvs
48
- Environments.current.kvs
49
- end
50
-
51
41
  #
52
42
  def memcache
53
43
  Environments.current.memcache
54
44
  end
55
45
 
56
- #
57
- def mailer
58
- Environments.current.mailer
59
- end
60
-
61
46
  def localize
62
47
  Environments.current.localize
63
48
  end
@@ -78,12 +63,19 @@ module UzuUzu
78
63
  Response.current
79
64
  end
80
65
 
81
- def model
82
- Model
83
- end
84
-
85
66
  def service
86
- Service
67
+ _service = nil
68
+ Application.current.services.reverse.each do |service|
69
+ begin
70
+ _service = service.send(name)
71
+ rescue => e
72
+ logger.error "service not found : #{service.name}::#{name}"
73
+ logger.debug e
74
+ logger.debug e.backtrace
75
+ end
76
+ break if _service
77
+ end
78
+ _service
87
79
  end
88
80
 
89
81
  #
data/uzuuzu-core.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{uzuuzu-core}
8
- s.version = "0.0.10"
8
+ s.version = "0.0.12"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Takuya Kondo"]
12
- s.date = %q{2011-09-24}
12
+ s.date = %q{2011-12-14}
13
13
  s.description = %q{uzuuzu core library}
14
14
  s.email = %q{takuya.v3v@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -29,11 +29,11 @@ Gem::Specification.new do |s|
29
29
  "lib/uzuuzu/application.rb",
30
30
  "lib/uzuuzu/controller.rb",
31
31
  "lib/uzuuzu/controller/error.rb",
32
+ "lib/uzuuzu/controller/login/openid.rb",
33
+ "lib/uzuuzu/controller/login/twitter.rb",
34
+ "lib/uzuuzu/controller/logout/index.rb",
32
35
  "lib/uzuuzu/controller/view/error/404.rhtml",
33
36
  "lib/uzuuzu/controller/view/error/500.rhtml",
34
- "lib/uzuuzu/datastore/activerecord.rb",
35
- "lib/uzuuzu/datastore/datamapper.rb",
36
- "lib/uzuuzu/datastore/sequel.rb",
37
37
  "lib/uzuuzu/environments.rb",
38
38
  "lib/uzuuzu/ext/object.rb",
39
39
  "lib/uzuuzu/helper.rb",
@@ -44,10 +44,6 @@ Gem::Specification.new do |s|
44
44
  "lib/uzuuzu/helper/renderer.rb",
45
45
  "lib/uzuuzu/helper/route.rb",
46
46
  "lib/uzuuzu/helper/xhtml.rb",
47
- "lib/uzuuzu/kvs/appengine.rb",
48
- "lib/uzuuzu/kvs/hbase.rb",
49
- "lib/uzuuzu/kvs/leveldb.rb",
50
- "lib/uzuuzu/kvs/mongo.rb",
51
47
  "lib/uzuuzu/lang/en.yaml",
52
48
  "lib/uzuuzu/lang/ja.yaml",
53
49
  "lib/uzuuzu/logger/appengine.rb",
@@ -55,16 +51,12 @@ Gem::Specification.new do |s|
55
51
  "lib/uzuuzu/logger/loggers.rb",
56
52
  "lib/uzuuzu/logger/stderr.rb",
57
53
  "lib/uzuuzu/logger/stdout.rb",
58
- "lib/uzuuzu/mailer/appengine.rb",
59
- "lib/uzuuzu/mailer/tmail.rb",
60
54
  "lib/uzuuzu/memcache/appengine.rb",
61
55
  "lib/uzuuzu/memcache/dalli.rb",
62
56
  "lib/uzuuzu/memcache/leveldb.rb",
63
57
  "lib/uzuuzu/memcache/memcached.rb",
64
- "lib/uzuuzu/model.rb",
65
58
  "lib/uzuuzu/rack_session/appengine.rb",
66
59
  "lib/uzuuzu/rack_session/cookie.rb",
67
- "lib/uzuuzu/rack_session/datastore.rb",
68
60
  "lib/uzuuzu/rack_session/memcache.rb",
69
61
  "lib/uzuuzu/request.rb",
70
62
  "lib/uzuuzu/response.rb",
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: uzuuzu-core
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.10
5
+ version: 0.0.12
6
6
  platform: ruby
7
7
  authors:
8
8
  - Takuya Kondo
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-09-24 00:00:00 +09:00
13
+ date: 2011-12-14 00:00:00 +09:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -134,11 +134,11 @@ files:
134
134
  - lib/uzuuzu/application.rb
135
135
  - lib/uzuuzu/controller.rb
136
136
  - lib/uzuuzu/controller/error.rb
137
+ - lib/uzuuzu/controller/login/openid.rb
138
+ - lib/uzuuzu/controller/login/twitter.rb
139
+ - lib/uzuuzu/controller/logout/index.rb
137
140
  - lib/uzuuzu/controller/view/error/404.rhtml
138
141
  - lib/uzuuzu/controller/view/error/500.rhtml
139
- - lib/uzuuzu/datastore/activerecord.rb
140
- - lib/uzuuzu/datastore/datamapper.rb
141
- - lib/uzuuzu/datastore/sequel.rb
142
142
  - lib/uzuuzu/environments.rb
143
143
  - lib/uzuuzu/ext/object.rb
144
144
  - lib/uzuuzu/helper.rb
@@ -149,10 +149,6 @@ files:
149
149
  - lib/uzuuzu/helper/renderer.rb
150
150
  - lib/uzuuzu/helper/route.rb
151
151
  - lib/uzuuzu/helper/xhtml.rb
152
- - lib/uzuuzu/kvs/appengine.rb
153
- - lib/uzuuzu/kvs/hbase.rb
154
- - lib/uzuuzu/kvs/leveldb.rb
155
- - lib/uzuuzu/kvs/mongo.rb
156
152
  - lib/uzuuzu/lang/en.yaml
157
153
  - lib/uzuuzu/lang/ja.yaml
158
154
  - lib/uzuuzu/logger/appengine.rb
@@ -160,16 +156,12 @@ files:
160
156
  - lib/uzuuzu/logger/loggers.rb
161
157
  - lib/uzuuzu/logger/stderr.rb
162
158
  - lib/uzuuzu/logger/stdout.rb
163
- - lib/uzuuzu/mailer/appengine.rb
164
- - lib/uzuuzu/mailer/tmail.rb
165
159
  - lib/uzuuzu/memcache/appengine.rb
166
160
  - lib/uzuuzu/memcache/dalli.rb
167
161
  - lib/uzuuzu/memcache/leveldb.rb
168
162
  - lib/uzuuzu/memcache/memcached.rb
169
- - lib/uzuuzu/model.rb
170
163
  - lib/uzuuzu/rack_session/appengine.rb
171
164
  - lib/uzuuzu/rack_session/cookie.rb
172
- - lib/uzuuzu/rack_session/datastore.rb
173
165
  - lib/uzuuzu/rack_session/memcache.rb
174
166
  - lib/uzuuzu/request.rb
175
167
  - lib/uzuuzu/response.rb
@@ -196,7 +188,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
196
188
  requirements:
197
189
  - - ">="
198
190
  - !ruby/object:Gem::Version
199
- hash: 3259301030999928627
191
+ hash: -441406385150429918
200
192
  segments:
201
193
  - 0
202
194
  version: "0"
@@ -1 +0,0 @@
1
- #TODO
@@ -1,222 +0,0 @@
1
- # coding: utf-8
2
- require 'dm-core'
3
-
4
- module UzuUzu
5
- module Datastore
6
- class Datamapper
7
- #
8
- attr_reader :adapter
9
- #
10
- attr_reader :repository
11
- #
12
- attr_reader :auto_upgrade
13
- #
14
- attr_reader :repositories
15
-
16
- #
17
- #
18
- #
19
- def initialize(env=nil)
20
- if env.nil?
21
- return
22
- end
23
- @adapter = :datamapper
24
-
25
- if env['auto_upgrade'] == 'true' || env['auto_upgrade'] = true
26
- @auto_upgrade = true
27
- end
28
-
29
- if env['repository'].nil?
30
- @repository = :uzuuzu
31
- else
32
- @repository = env['repository'].to_sym
33
- end
34
-
35
- @auto_upgrade = false
36
- if env['auto_upgrade']
37
- @auto_upgrade = true if env['auto_upgrade'] == 'true' || env['auto_upgrade'] == true
38
- end
39
-
40
- unless env['logger'].nil?
41
- DataMapper::logger = ::UzuUzu::Wrapper::Logger.new(env['logger']).logger
42
- end
43
-
44
- @repositories = [@repository]
45
- repositories_env = {}
46
- repos = env['repositories'] || {}
47
- if repos.nil?
48
- repos = {}
49
- end
50
-
51
- repos.each do |key, value|
52
- @repositories.push key.to_sym
53
- repositories_env[key.to_sym] = value.clone
54
- end
55
-
56
- if repositories_env[@repository].blank?
57
- repositories_env[@repository] = repositories_env[:default]
58
- elsif repositories_env[:default].blank?
59
- repositories_env[:default] = repositories_env[@repository]
60
- end
61
-
62
- repositories_env.each do |key, value|
63
- if value['adapter']
64
- DataMapper.setup(key, value)
65
- if value['logger']
66
- case(value['adapter'])
67
- when 'sqlite3'
68
- DataObjects::Sqlite3.logger = ::UzuUzu::Wrapper::Logger.new(value['logger']).logger
69
- when 'postgres'
70
- DataObjects::Postgres.logger = ::UzuUzu::Wrapper::Logger.new(value['logger']).logger
71
- when 'mysql'
72
- DataObjects::MySql.logger = ::UzuUzu::Wrapper::Logger.new(value['logger']).logger
73
- end
74
- end
75
- end
76
- end
77
- end # new
78
-
79
- #
80
- #
81
- #
82
- def repository(repository=nil, &b)
83
- repository ||= @repository
84
- if b
85
- DataMapper.repository(repository, &b)
86
- else
87
- DataMapper.repository(repository)
88
- end
89
- end
90
-
91
- #
92
- #
93
- #
94
- def transaction(repository=nil, *args, &b)
95
- tr = DataMapper::Transaction.new(*args)
96
- if b
97
- DataMapper.repository(repository) do
98
- b.call(tr)
99
- end
100
- end
101
- tr
102
- end
103
-
104
- #
105
- #
106
- #
107
- def auto_upgrade?
108
- if @auto_upgrade == true
109
- return true
110
- end
111
- false
112
- end
113
-
114
- def import_file(model, file, overwrite=false)
115
- unless ::File.file?(file)
116
- raise "UzuUzu fixture import error file not found : #{file}"
117
- end
118
- ext = ::File.extname(file)
119
- case(ext)
120
- when '.yml', '.yaml'
121
- import_yaml(model, ::YAML.load_file(file), overwrite)
122
- when '.xml'
123
- # TODO
124
- when '.json', '.js'
125
- # TODO
126
- when '.csv'
127
- begin
128
- require 'fastercsv'
129
- ::FasterCSV.foreach(file) do |row|
130
- import_csv(model, row, overwrite)
131
- end
132
- rescue
133
- require "csv"
134
- ::CSV.open(file) do |row|
135
- import_csv(model, row, overwrite)
136
- end
137
- end
138
- end
139
- nil
140
- end
141
-
142
- def import_yaml(model, yaml, overwrite=false)
143
- ::UzuUzu.logger.debug 'import yaml'
144
- transaction do |tr|
145
- tr.begin
146
- begin
147
- if yaml.kind_of?(Array)
148
- yaml.each do |map|
149
- ::UzuUzu.logger.debug "import #{map.inspect}"
150
- resource = model.first(:id => map[:id]) unless map[:id].nil?
151
- if resource.nil?
152
- resource = model.new(map)
153
- unless resource.valid?
154
- ::UzuUzu.logger.error resource.errors
155
- end
156
- resource.save
157
- elsif overwrite
158
- resource.update(map)
159
- unless resource.valid?
160
- ::UzuUzu.logger.error resource.errors
161
- end
162
- end
163
- end
164
- elsif yaml.kind_of?(Hash)
165
- ::UzuUzu.logger.debug "import #{yaml.inspect}"
166
- resource = model.first(:id => yaml[:id]) unless yaml[:id].nil?
167
- if resource.nil?
168
- resource = model.new(yaml)
169
- unless resource.valid?
170
- ::UzuUzu.logger.error resource.errors
171
- end
172
- resource.save
173
- elsif overwrite
174
- resource.update(yaml)
175
- unless resource.valid?
176
- ::UzuUzu.logger.error resource.errors
177
- end
178
- end
179
- else
180
- ::UzuUzu.logger.error "import type miss match #{yaml.inspect}"
181
- end
182
- ::UzuUzu.logger.debug 'imported yaml'
183
- tr.commit
184
- rescue => e
185
- tr.rollback
186
- raise e
187
- end
188
- end # transaction
189
- end # import_yaml
190
-
191
- def import_json(model, json, overwrite=false)
192
- # TODO
193
- end
194
-
195
- def import_xml(model, xml, overwrite=false)
196
- # TODO
197
- end
198
-
199
- def import_csv(model, csv, overwrite=false)
200
- transaction do |tr|
201
- tr.begin
202
- begin
203
- resource = model.first(:id => csv[0])
204
- csv.each_with_index do |culumn, index|
205
- if resource.nil? || overwrite
206
- resource ||= model.new
207
- resource.properties.each_with_index do |property, column_no|
208
- resource[property.name] = culumn if index = column_no
209
- end
210
- resource.save
211
- end
212
- end
213
- tr.commit
214
- rescue => e
215
- tr.rollback
216
- raise e
217
- end
218
- end
219
- end # import_csv
220
- end # Datamapper
221
- end # DataStore
222
- end # UzuUzu
File without changes
@@ -1,65 +0,0 @@
1
- # coding: utf-8
2
- # TODO
3
- require 'appengine-apis'
4
- require 'appengine-apis/datastore'
5
-
6
- module UzuUzu
7
- module Kvs
8
- #
9
- #
10
- #
11
- class Appengine
12
- #
13
- attr_reader :adapter
14
-
15
- #
16
- #
17
- #
18
- def initialize(env=nil)
19
- @adapter = :appengine
20
- @db = ::AppEngine::Detastore
21
- end
22
-
23
- #
24
- #
25
- #
26
- def space(name)
27
- @spaces[name] ||= Space.new(@db, name)
28
- end
29
-
30
- #
31
- #
32
- #
33
- class Space
34
- def initalize(db, space)
35
- @db = db
36
- @space = space
37
- @resource = @db
38
- end
39
-
40
- def get(id)
41
- query = Datastore::Query.new(space)
42
- query.iterator.first
43
- end
44
- alias :[] :get
45
-
46
- def put(id, entity)
47
-
48
- end
49
- alias :[]= :put
50
-
51
-
52
- def method_missing(action, *args)
53
- @resource.send(action, *args)
54
- end # method_missing
55
- end # Space
56
-
57
- #
58
- #
59
- #
60
- class Query
61
-
62
- end
63
- end # Appengine
64
- end # Kvs
65
- end # UzuUzu
@@ -1,2 +0,0 @@
1
- # coding: utf-8
2
- # TODO
@@ -1,73 +0,0 @@
1
- # coding: utf-8
2
- # TODO
3
- require 'leveldb'
4
-
5
- module UzuUzu
6
- module Kvs
7
- class Leveldb
8
- #
9
- attr_reader :adapter
10
-
11
- #
12
- #
13
- #
14
- def initialize(env=nil)
15
- @adapter = :leveldb
16
- @db = 'db'
17
- @spaces = {}
18
- unless env && env['address']
19
- @db = env['address']
20
- end
21
- ::FileUtils.mkdir_p(::File.dirname(address))
22
- end
23
-
24
- #
25
- #
26
- #
27
- def space(name)
28
- @spaces[name] ||= Space.new(@db, name)
29
- end
30
-
31
- #
32
- #
33
- #
34
- class Space
35
- def initalize(db, space)
36
- @db = db
37
- @space = space
38
- @resource = LevelDB::DB.new "#{@db}/#{@space}"
39
- end
40
-
41
- def get(entity)
42
- Marshal.load(@resource.get(Marshal.dump(key)))
43
- end
44
- alias :[] :get
45
-
46
- def put(id, entity)
47
- @resource.put(Marshal.dump(key), Marshal.dump(entity))
48
- end
49
- alias :[]= :put
50
-
51
- def find
52
-
53
- end
54
-
55
- def find_all
56
-
57
- end
58
-
59
- def collect
60
-
61
- end
62
-
63
- def sort
64
-
65
- end
66
-
67
- def method_missing(action, *args)
68
- @resource.send(action, *args)
69
- end # method_missing
70
- end # Space
71
- end # Leveldb
72
- end # Kvs
73
- end # UzuUzu
@@ -1,68 +0,0 @@
1
- # coding: utf-8
2
- # TODO
3
- require 'mongo'
4
-
5
- module UzuUzu
6
- module Kvs
7
- class Mongo
8
- #
9
- attr_reader :adapter
10
-
11
- #
12
- #
13
- #
14
- def initialize(env=nil)
15
- @adapter = :mongo
16
- @host = 'localhost'
17
- @port = 27017
18
- @db_name = 'uzuuzu'
19
- @spaces = {}
20
- if env
21
- @host = env['host'] || @host
22
- @port = env['port'] || @port
23
- @db_name = env['db'] || @db_name
24
- end
25
- @connection = Mongo::Connection.new(@host, @port)
26
- @db = @connection.db(@db_name)
27
- end
28
-
29
- #
30
- #
31
- #
32
- def space(name)
33
- @spaces[name] ||= Space.new(@db, name)
34
- end
35
-
36
- #
37
- #
38
- #
39
- class Space
40
- def initalize(db, space)
41
- @db = db
42
- @space = space
43
- @resource = @db[name]
44
- end
45
-
46
- def get(id)
47
-
48
- end
49
-
50
- def put(id, entity)
51
-
52
- end
53
-
54
- def find(params)
55
-
56
- end
57
-
58
- def find_all(params)
59
-
60
- end
61
-
62
- def method_missing(action, *args)
63
- @resource.send(action, *args)
64
- end # method_missing
65
- end # Space
66
- end # Mongo
67
- end # Kvs
68
- end # UzuUzu
@@ -1,27 +0,0 @@
1
- # coding: utf-8
2
- require 'appengine-apis'
3
- require 'appengine-apis/mail'
4
-
5
- module UzuUzu
6
- module Mailer
7
- #
8
- #
9
- #
10
- class Appengine
11
- #
12
- attr_reader :adapter
13
- #
14
- #
15
- #
16
- def initialize(env=nil, options={})
17
- @adapter = :appengine
18
- end # initialize
19
- #
20
- #
21
- #
22
- def send(to, subject, body, charset='iso-2022-jp')
23
- end # send
24
-
25
- end # Appengine
26
- end # Mailer
27
- end # UzuUzu
@@ -1,44 +0,0 @@
1
- # coding: utf-8
2
- require 'net/smtp'
3
- require 'tmail'
4
-
5
- module UzuUzu
6
- module Mailer
7
- #
8
- #
9
- #
10
- class Tmail
11
- #
12
- attr_reader :adapter
13
- #
14
- #
15
- #
16
- def initialize(env=nil, options={})
17
- @adapter = :tmail
18
- @from = env['address']
19
- end # initialize
20
-
21
- #
22
- #
23
- #
24
- def send(to, subject, body, charset='iso-2022-jp')
25
- mail = TMail::Mail.new
26
-
27
- mail.to = to
28
- mail.from = @from
29
- mail.reply_to = @from
30
- mail.subject = subject
31
- mail.body = body
32
- mail.date = Time.now
33
- mail.mime_version = '1.0'
34
- mail.set_content_type 'text', 'plain', {'charset' => charset}
35
- mail.write_back
36
-
37
- Net::SMTP.start(smtpserver) do |smtp|
38
- smtp.sendmail(mail.encoded, mail.from, to)
39
- end
40
- end # send
41
-
42
- end # Tmail
43
- end # Mailer
44
- end # UzuUzu
data/lib/uzuuzu/model.rb DELETED
@@ -1,49 +0,0 @@
1
- # coding: utf-8
2
-
3
- module UzuUzu
4
- module Model
5
- #
6
- AppsLoaded = {}
7
- #
8
- #
9
- #
10
- def const_missing(id)
11
- AppsLoaded[::UzuUzu.current.name] ||= {}
12
- model = AppsLoaded[::UzuUzu.current.name][id.to_sym]
13
- unless model
14
- require_base = self.name.gsub(/::/, '/').sub(/^UzuUzu/, 'uzuuzu').snake_case
15
- require "#{require_base}/#{::UzuUzu.datastore.adapter}/#{id.to_s.snake_case}"
16
- model = const_get("#{::UzuUzu.datastore.adapter.to_s.camel_case}").const_get("#{id}")
17
- model.apploaded if model.respond_to?(:apploaded)
18
- AppsLoaded[::UzuUzu.current.name][id.to_sym] = model
19
- end
20
- if model
21
- model
22
- else
23
- super(id)
24
- end
25
- rescue => e
26
- ::UzuUzu.logger.debug e
27
- ::UzuUzu.logger.debug e.backtrace
28
- super(id)
29
- end
30
-
31
- #
32
- #
33
- #
34
- def method_missing(id)
35
- model = self.const_missing(id.to_s.camel_case)
36
- if model
37
- model
38
- else
39
- super(id)
40
- end
41
- rescue => e
42
- ::UzuUzu.logger.debug e
43
- ::UzuUzu.logger.debug e.backtrace
44
- super(id)
45
- end
46
-
47
- extend self
48
- end # Model
49
- end # UzuUzu
@@ -1,22 +0,0 @@
1
- # coding: utf-8
2
-
3
- module UzuUzu
4
- module RackSession
5
- class Datastore
6
- #
7
- attr_reader :adapter
8
-
9
- #
10
- #
11
- #
12
- def initialize(env=nil)
13
- @adapter = :datastore
14
- end
15
-
16
- def app(app)
17
- # TODO
18
- app
19
- end
20
- end # Leveldb
21
- end # Kvs
22
- end # UzuUzu