uzuuzu-core 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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