nov-iknow 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +14 -30
- data/Rakefile +4 -3
- data/examples/iknow_on_rails/app/controllers/application.rb +15 -0
- data/examples/iknow_on_rails/app/controllers/iknow_oauth_controller.rb +24 -0
- data/examples/iknow_on_rails/app/controllers/users_controller.rb +10 -0
- data/examples/iknow_on_rails/app/helpers/application_helper.rb +3 -0
- data/examples/iknow_on_rails/app/helpers/iknow_oauth_helper.rb +3 -0
- data/examples/iknow_on_rails/app/helpers/users_helper.rb +2 -0
- data/examples/iknow_on_rails/app/models/iknow_oauth_token.rb +37 -0
- data/examples/iknow_on_rails/config/boot.rb +109 -0
- data/examples/iknow_on_rails/config/environment.rb +76 -0
- data/examples/iknow_on_rails/config/environments/development.rb +17 -0
- data/examples/iknow_on_rails/config/environments/production.rb +22 -0
- data/examples/iknow_on_rails/config/environments/test.rb +22 -0
- data/examples/iknow_on_rails/config/initializers/inflections.rb +10 -0
- data/examples/iknow_on_rails/config/initializers/mime_types.rb +5 -0
- data/examples/iknow_on_rails/config/initializers/new_rails_defaults.rb +17 -0
- data/examples/iknow_on_rails/config/routes.rb +44 -0
- data/examples/iknow_on_rails/db/migrate/20081017012212_create_iknow_oauth_tokens.rb +15 -0
- data/examples/iknow_on_rails/db/schema.rb +23 -0
- data/examples/iknow_on_rails/lib/iknow_oauth_system.rb +26 -0
- data/examples/iknow_on_rails/public/dispatch.rb +10 -0
- data/examples/iknow_on_rails/test/functional/iknow_oauth_controller_test.rb +7 -0
- data/examples/iknow_on_rails/test/functional/users_controller_test.rb +8 -0
- data/examples/iknow_on_rails/test/test_helper.rb +38 -0
- data/examples/iknow_on_rails/test/unit/iknow_oauth_token_test.rb +7 -0
- data/examples/pure_ruby.rb +8 -3
- data/generators/iknow/USAGE +12 -0
- data/generators/iknow/iknow_generator.rb +22 -0
- data/generators/iknow/templates/iknow_oauth_controller.rb +24 -0
- data/generators/iknow/templates/iknow_oauth_controller_test.rb +7 -0
- data/generators/iknow/templates/iknow_oauth_helper.rb +3 -0
- data/generators/iknow/templates/iknow_oauth_system.rb +26 -0
- data/generators/iknow/templates/iknow_oauth_token.rb +37 -0
- data/generators/iknow/templates/iknow_oauth_token_test.rb +7 -0
- data/generators/iknow/templates/iknow_oauth_tokens_migration.rb +15 -0
- data/generators/iknow/templates/index.rhtml +4 -0
- data/generators/iknow_oauth/USAGE +12 -0
- data/generators/iknow_oauth/iknow_oauth_generator.rb +22 -0
- data/generators/iknow_oauth/templates/iknow_oauth_controller.rb +24 -0
- data/generators/iknow_oauth/templates/iknow_oauth_controller_test.rb +7 -0
- data/generators/iknow_oauth/templates/iknow_oauth_helper.rb +3 -0
- data/generators/iknow_oauth/templates/iknow_oauth_system.rb +26 -0
- data/generators/iknow_oauth/templates/iknow_oauth_token.rb +37 -0
- data/generators/iknow_oauth/templates/iknow_oauth_token_test.rb +7 -0
- data/generators/iknow_oauth/templates/iknow_oauth_tokens_migration.rb +15 -0
- data/generators/iknow_oauth/templates/index.rhtml +4 -0
- data/lib/iknow/core/config.rb +26 -10
- data/lib/iknow/core/version.rb +1 -1
- data/lib/iknow/model/base.rb +9 -2
- data/lib/iknow/model/item.rb +3 -3
- data/lib/iknow/model/list.rb +4 -10
- data/lib/iknow/model/sentence.rb +6 -6
- data/lib/iknow/model/user.rb +31 -28
- data/lib/iknow/rest_client/base.rb +13 -27
- metadata +69 -3
data/examples/pure_ruby.rb
CHANGED
@@ -2,8 +2,9 @@ require 'rubygems'
|
|
2
2
|
require 'iknow'
|
3
3
|
|
4
4
|
Iknow::Config.init do |conf|
|
5
|
-
conf.api_key
|
6
|
-
conf.
|
5
|
+
conf.api_key = 'yarpp3tnrk77qx9vwwjnpt42'
|
6
|
+
conf.oauth_consumer_key = ''
|
7
|
+
conf.oauth_consumer_secret = ''
|
7
8
|
end
|
8
9
|
|
9
10
|
please_get_api_key =<<EOS
|
@@ -16,7 +17,11 @@ iKnow! Developers (http://developer.iknow.co.jp/)
|
|
16
17
|
Thanks!
|
17
18
|
EOS
|
18
19
|
|
19
|
-
|
20
|
+
if Iknow::Config.api_key == ''# or
|
21
|
+
# Iknow::Config.oauth_consumer_key == '' or
|
22
|
+
# Iknow::Config.oauth_consumer_secret == ''
|
23
|
+
raise ArgumentError.new(please_get_api_key)
|
24
|
+
end
|
20
25
|
|
21
26
|
## User API
|
22
27
|
@user = Iknow::User.find('matake')
|
@@ -0,0 +1,12 @@
|
|
1
|
+
NAME
|
2
|
+
iknow_oauth - creates a functional iknow oauth consumer
|
3
|
+
|
4
|
+
SYNOPSIS
|
5
|
+
nothing
|
6
|
+
|
7
|
+
Description:
|
8
|
+
Generates a model, controller, helper, view and library for making a OAuth consumer of iKnow! API.
|
9
|
+
No arguments are needed.
|
10
|
+
|
11
|
+
Example:
|
12
|
+
./script/generate iknow_oauth
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rails_generator/base'
|
2
|
+
|
3
|
+
class IknowGenerator < Rails::Generator::Base
|
4
|
+
def manifest
|
5
|
+
record do |m|
|
6
|
+
m.class_collisions 'IknowOauthController', 'IknowOauthControllerTest', 'IknowOauthHelper',
|
7
|
+
'IknowOauthSystem', 'IknowOauthToken', 'IknowOauthTokenTest'
|
8
|
+
|
9
|
+
m.migration_template 'iknow_oauth_tokens_migration.rb', 'db/migrate', :migration_file_name => 'create_iknow_oauth_tokens'
|
10
|
+
|
11
|
+
m.template 'iknow_oauth_controller.rb', File.join('app/controllers', 'iknow_oauth_controller.rb' )
|
12
|
+
m.template 'iknow_oauth_controller_test.rb', File.join('test/functional', 'iknow_oauth_controller_test.rb')
|
13
|
+
m.template 'iknow_oauth_helper.rb', File.join('app/helpers', 'iknow_oauth_helper.rb' )
|
14
|
+
m.template 'iknow_oauth_system.rb', File.join('lib', 'iknow_oauth_system.rb' )
|
15
|
+
m.template 'iknow_oauth_token.rb', File.join('app/models', 'iknow_oauth_token.rb' )
|
16
|
+
m.template 'iknow_oauth_token_test.rb', File.join('test/unit', 'iknow_oauth_token_test.rb' )
|
17
|
+
|
18
|
+
m.directory File.join('app/views', 'iknow_oauth')
|
19
|
+
m.template 'index.rhtml', File.join('app/views', 'iknow_oauth', 'index.rhtml')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class IknowOauthController < ApplicationController
|
2
|
+
|
3
|
+
def index; end
|
4
|
+
|
5
|
+
def new_request
|
6
|
+
request_token = IknowOauthToken.new_request_token
|
7
|
+
|
8
|
+
session[:iknow_username] = params[:iknow_username]
|
9
|
+
session[:request_token] = request_token
|
10
|
+
session[:redirect_url_after_auth] = params[:redirect_url_after_auth] || request.referer
|
11
|
+
|
12
|
+
if request_token
|
13
|
+
redirect_to(request_token.authorize_url)
|
14
|
+
else
|
15
|
+
raise RuntimeError.new("Failed to get a iKnow! Request Token")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def callback
|
20
|
+
AuthToken.establish_auth_token(session[:iknow_username], session[:request_token])
|
21
|
+
redirect_to(session[:redirect_url_after_auth])
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module IknowOauthSystem
|
2
|
+
|
3
|
+
protected
|
4
|
+
|
5
|
+
def require_iknow_oauth
|
6
|
+
unless iknow_username_exists?
|
7
|
+
redirect_to(:controller => 'iknow_oauth', :action => 'index')
|
8
|
+
return false
|
9
|
+
end
|
10
|
+
|
11
|
+
iknow_oauth_token = IknowOauthToken.find_by_username(session[:iknow_username])
|
12
|
+
unless iknow_oauth_token
|
13
|
+
redirect_to(:controller => 'iknow_oauth', :action => 'new_request')
|
14
|
+
return false
|
15
|
+
end
|
16
|
+
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def iknow_username_exists?
|
23
|
+
!session[:iknow_username].blank?
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'oauth/consumer'
|
2
|
+
|
3
|
+
class IknowOauthToken < ActiveRecord::Base
|
4
|
+
|
5
|
+
def self.consumer
|
6
|
+
@@consumer ||= OAuth::Consumer.new(
|
7
|
+
Iknow::Config.oauth_consumer_key,
|
8
|
+
Iknow::Config.oauth_consumer_secret,
|
9
|
+
:site => Iknow::Config.iknow_api_base_url,
|
10
|
+
:authorize_url => "#{Iknow::Config.iknow_base_url}/oauth/authorize"
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.new_request_token
|
15
|
+
begin
|
16
|
+
self.consumer.get_request_token
|
17
|
+
rescue Exception => e
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.establish_auth_token(iknow_username, request_token)
|
23
|
+
access_token = request_token.get_access_token
|
24
|
+
|
25
|
+
auth_token = IknowAuthToken.new
|
26
|
+
auth_token.username = iknow_username
|
27
|
+
auth_token.token = access_token.token
|
28
|
+
auth_token.secret = access_token.secret
|
29
|
+
auth_token.save!
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_access_token
|
33
|
+
OAuth::AccessToken.new(self.class.consumer, self.token, self.secret)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateIknowOauthTokens < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :iknow_oauth_tokens do |t|
|
4
|
+
t.column :iknow_username, :string, :null => false
|
5
|
+
t.column :token, :string, :unique => true
|
6
|
+
t.column :secret, :string
|
7
|
+
end
|
8
|
+
add_index :iknow_oauth_tokens, :token, :unique => true
|
9
|
+
add_index :iknow_oauth_tokens, :iknow_username
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
drop_table :iknow_oauth_tokens
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
NAME
|
2
|
+
iknow_oauth - creates a functional iknow oauth consumer
|
3
|
+
|
4
|
+
SYNOPSIS
|
5
|
+
nothing
|
6
|
+
|
7
|
+
Description:
|
8
|
+
Generates a model, controller, helper, view and library for making a OAuth consumer of iKnow! API.
|
9
|
+
No arguments are needed.
|
10
|
+
|
11
|
+
Example:
|
12
|
+
./script/generate iknow_oauth
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rails_generator/base'
|
2
|
+
|
3
|
+
class IknowOauthGenerator < Rails::Generator::Base
|
4
|
+
def manifest
|
5
|
+
record do |m|
|
6
|
+
m.class_collisions 'IknowOauthController', 'IknowOauthControllerTest', 'IknowOauthHelper',
|
7
|
+
'IknowOauthSystem', 'IknowOauthToken', 'IknowOauthTokenTest'
|
8
|
+
|
9
|
+
m.migration_template 'iknow_oauth_tokens_migration.rb', 'db/migrate', :migration_file_name => 'create_iknow_oauth_tokens'
|
10
|
+
|
11
|
+
m.template 'iknow_oauth_controller.rb', File.join('app/controllers', 'iknow_oauth_controller.rb' )
|
12
|
+
m.template 'iknow_oauth_controller_test.rb', File.join('test/functional', 'iknow_oauth_controller_test.rb')
|
13
|
+
m.template 'iknow_oauth_helper.rb', File.join('app/helpers', 'iknow_oauth_helper.rb' )
|
14
|
+
m.template 'iknow_oauth_system.rb', File.join('lib', 'iknow_oauth_system.rb' )
|
15
|
+
m.template 'iknow_oauth_token.rb', File.join('app/models', 'iknow_oauth_token.rb' )
|
16
|
+
m.template 'iknow_oauth_token_test.rb', File.join('test/unit', 'iknow_oauth_token_test.rb' )
|
17
|
+
|
18
|
+
m.directory File.join('app/views', 'iknow_oauth')
|
19
|
+
m.template 'index.rhtml', File.join('app/views', 'iknow_oauth', 'index.rhtml')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class IknowOauthController < ApplicationController
|
2
|
+
|
3
|
+
def index; end
|
4
|
+
|
5
|
+
def new_request
|
6
|
+
request_token = IknowOauthToken.new_request_token
|
7
|
+
|
8
|
+
session[:iknow_username] = params[:iknow_username]
|
9
|
+
session[:request_token] = request_token
|
10
|
+
session[:redirect_url_after_auth] = params[:redirect_url_after_auth] || request.referer
|
11
|
+
|
12
|
+
if request_token
|
13
|
+
redirect_to(request_token.authorize_url)
|
14
|
+
else
|
15
|
+
raise RuntimeError.new("Failed to get a iKnow! Request Token")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def callback
|
20
|
+
AuthToken.establish_auth_token(session[:iknow_username], session[:request_token])
|
21
|
+
redirect_to(session[:redirect_url_after_auth])
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module IknowOauthSystem
|
2
|
+
|
3
|
+
protected
|
4
|
+
|
5
|
+
def require_iknow_oauth
|
6
|
+
unless iknow_username_exists?
|
7
|
+
redirect_to(:controller => 'iknow_oauth', :action => 'index')
|
8
|
+
return false
|
9
|
+
end
|
10
|
+
|
11
|
+
iknow_oauth_token = IknowOauthToken.find_by_username(session[:iknow_username])
|
12
|
+
unless iknow_oauth_token
|
13
|
+
redirect_to(:controller => 'iknow_oauth', :action => 'new_request')
|
14
|
+
return false
|
15
|
+
end
|
16
|
+
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def iknow_username_exists?
|
23
|
+
!session[:iknow_username].blank?
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'oauth/consumer'
|
2
|
+
|
3
|
+
class IknowOauthToken < ActiveRecord::Base
|
4
|
+
|
5
|
+
def self.consumer
|
6
|
+
@@consumer ||= OAuth::Consumer.new(
|
7
|
+
Iknow::Config.oauth_consumer_key,
|
8
|
+
Iknow::Config.oauth_consumer_secret,
|
9
|
+
:site => Iknow::Config.iknow_api_base_url,
|
10
|
+
:authorize_url => "#{Iknow::Config.iknow_base_url}/oauth/authorize"
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.new_request_token
|
15
|
+
begin
|
16
|
+
self.consumer.get_request_token
|
17
|
+
rescue Exception => e
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.establish_auth_token(iknow_username, request_token)
|
23
|
+
access_token = request_token.get_access_token
|
24
|
+
|
25
|
+
auth_token = IknowAuthToken.new
|
26
|
+
auth_token.username = iknow_username
|
27
|
+
auth_token.token = access_token.token
|
28
|
+
auth_token.secret = access_token.secret
|
29
|
+
auth_token.save!
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_access_token
|
33
|
+
OAuth::AccessToken.new(self.class.consumer, self.token, self.secret)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateIknowOauthTokens < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :iknow_oauth_tokens do |t|
|
4
|
+
t.column :iknow_username, :string, :null => false
|
5
|
+
t.column :token, :string, :unique => true
|
6
|
+
t.column :secret, :string
|
7
|
+
end
|
8
|
+
add_index :iknow_oauth_tokens, :token, :unique => true
|
9
|
+
add_index :iknow_oauth_tokens, :iknow_username
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
drop_table :iknow_oauth_tokens
|
14
|
+
end
|
15
|
+
end
|
data/lib/iknow/core/config.rb
CHANGED
@@ -2,19 +2,26 @@ require 'singleton'
|
|
2
2
|
|
3
3
|
class Iknow::Config
|
4
4
|
include Singleton
|
5
|
-
attr_accessor :protocol, :host, :port, :
|
5
|
+
attr_accessor :protocol, :host, :port, :api_protocol, :api_host, :api_port,
|
6
|
+
:api_key, :oauth_consumer_key, :oauth_consumer_secret,
|
7
|
+
:user_agent, :application_name, :application_version, :application_url, :source
|
6
8
|
|
7
9
|
def self.init(&block)
|
8
10
|
conf = Iknow::Config.instance
|
9
|
-
{ :protocol
|
10
|
-
:host
|
11
|
-
:port
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
11
|
+
{ :protocol => 'http',
|
12
|
+
:host => 'www.iknow.co.jp',
|
13
|
+
:port => 80,
|
14
|
+
:api_protocol => 'http',
|
15
|
+
:api_host => 'api.iknow.co.jp',
|
16
|
+
:api_port => 80,
|
17
|
+
:api_key => '',
|
18
|
+
:oauth_consumer_key => '',
|
19
|
+
:oauth_consumer_secret => '',
|
20
|
+
:user_agent => 'default',
|
21
|
+
:application_name => 'A rubygem for iKnow! API',
|
22
|
+
:application_version => Iknow::Version.to_version,
|
23
|
+
:application_url => 'http://github.com/nov/iknow_oauth_generator',
|
24
|
+
:source => 'iknow'
|
18
25
|
}.each do |key, value| conf.send("#{key}=", value) end
|
19
26
|
yield conf if block_given?
|
20
27
|
conf
|
@@ -25,4 +32,13 @@ class Iknow::Config
|
|
25
32
|
"#{self.protocol}://#{self.host}#{port}"
|
26
33
|
end
|
27
34
|
|
35
|
+
def iknow_api_base_url
|
36
|
+
port = self.api_port==80 ? nil : ":#{self.api_port}"
|
37
|
+
"#{self.api_protocol}://#{self.api_host}#{port}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.method_missing(method, *args)
|
41
|
+
self.instance.send(method, *args)
|
42
|
+
end
|
43
|
+
|
28
44
|
end
|
data/lib/iknow/core/version.rb
CHANGED
data/lib/iknow/model/base.rb
CHANGED
@@ -1,12 +1,19 @@
|
|
1
1
|
class Iknow::Base
|
2
|
-
|
2
|
+
|
3
3
|
def self.attributes; self::ATTRIBUTES end
|
4
|
+
|
4
5
|
def attributes; self.class.attributes end
|
5
6
|
|
6
7
|
def self.deserialize(response, params = {})
|
8
|
+
return nil if response.is_a?(Hash) and
|
9
|
+
!response['error'].blank? and
|
10
|
+
response['error']['code'].to_i == 404
|
11
|
+
|
7
12
|
klass = params[:as] ? params[:as] : self
|
8
|
-
response.is_a?(Array) ? response.inject([]) { |results, params| results << klass.new(params) } :
|
13
|
+
response.is_a?(Array) ? response.inject([]) { |results, params| results << klass.new(params) } :
|
14
|
+
klass.new(response)
|
9
15
|
end
|
16
|
+
|
10
17
|
def deserialize(response, params = {})
|
11
18
|
self.class.deserialize(response, params)
|
12
19
|
end
|
data/lib/iknow/model/item.rb
CHANGED
@@ -26,19 +26,19 @@ class Iknow::Item < Iknow::Base
|
|
26
26
|
|
27
27
|
def self.recent(params = {})
|
28
28
|
response = Iknow::RestClient::Item.recent(params)
|
29
|
-
self.deserialize(response)
|
29
|
+
self.deserialize(response) || []
|
30
30
|
end
|
31
31
|
|
32
32
|
def self.matching(keyword, params = {})
|
33
33
|
params[:keyword] = keyword
|
34
34
|
response = Iknow::RestClient::Item.matching(params)
|
35
|
-
self.deserialize(response)
|
35
|
+
self.deserialize(response) || []
|
36
36
|
end
|
37
37
|
|
38
38
|
def self.extract(text, params = {})
|
39
39
|
params[:text] = text
|
40
40
|
response = Iknow::RestClient::Item.extract(params)
|
41
|
-
self.deserialize(response)
|
41
|
+
self.deserialize(response) || []
|
42
42
|
end
|
43
43
|
|
44
44
|
def initialize(params = {})
|
data/lib/iknow/model/list.rb
CHANGED
@@ -8,13 +8,13 @@ class Iknow::List < Iknow::Base
|
|
8
8
|
|
9
9
|
def self.recent(params = {})
|
10
10
|
response = Iknow::RestClient::List.recent(params)
|
11
|
-
self.deserialize(response)
|
11
|
+
self.deserialize(response) || []
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.matching(keyword, params = {})
|
15
15
|
params[:keyword] = keyword
|
16
16
|
response = Iknow::RestClient::List.matching(params)
|
17
|
-
self.deserialize(response)
|
17
|
+
self.deserialize(response) || []
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.create(params = {})
|
@@ -30,19 +30,13 @@ class Iknow::List < Iknow::Base
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def items(params = {})
|
33
|
-
return @items if @items
|
34
|
-
|
35
33
|
response = Iknow::RestClient::List.items(params.merge(:id => self.list_id))
|
36
|
-
|
37
|
-
@items
|
34
|
+
self.deserialize(response, :as => Iknow::Item) || []
|
38
35
|
end
|
39
36
|
|
40
37
|
def sentences(params = {})
|
41
|
-
return @sentences if @sentences
|
42
|
-
|
43
38
|
response = Iknow::RestClient::List.sentences(params.merge(:id => self.list_id))
|
44
|
-
|
45
|
-
@sentences
|
39
|
+
self.deserialize(response, :as => Iknow::Sentence) || []
|
46
40
|
end
|
47
41
|
|
48
42
|
def save!
|
data/lib/iknow/model/sentence.rb
CHANGED
@@ -3,22 +3,22 @@ class Iknow::Sentence < Iknow::Base
|
|
3
3
|
WRITABLE_ATTRIBUTES = [:sound, :image]
|
4
4
|
attr_accessor *WRITABLE_ATTRIBUTES
|
5
5
|
attr_reader *(ATTRIBUTES - WRITABLE_ATTRIBUTES)
|
6
|
-
|
6
|
+
|
7
7
|
def self.recent(params = {})
|
8
8
|
response = Iknow::RestClient::Sentence.recent(params)
|
9
|
-
self.deserialize(response)
|
9
|
+
self.deserialize(response) || []
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def self.matching(keyword, params = {})
|
13
13
|
params[:keyword] = keyword
|
14
14
|
response = Iknow::RestClient::Sentence.matching(params)
|
15
|
-
self.deserialize(response)
|
15
|
+
self.deserialize(response) || []
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def initialize(params = {})
|
19
19
|
@sound = params['sound']
|
20
20
|
@image = params['image']
|
21
21
|
@text = params['text']
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
end
|
data/lib/iknow/model/user.rb
CHANGED
@@ -2,7 +2,7 @@ class Iknow::User < Iknow::Base
|
|
2
2
|
ATTRIBUTES = [:username, :profile]
|
3
3
|
attr_reader *ATTRIBUTES
|
4
4
|
|
5
|
-
class Profile < Iknow::
|
5
|
+
class Profile < Iknow::Base
|
6
6
|
ATTRIBUTES = [:name, :gender, :birthday, :description, :blog_url, :profile_url, :foaf_url, :icon_url]
|
7
7
|
attr_reader *ATTRIBUTES
|
8
8
|
|
@@ -18,22 +18,33 @@ class Iknow::User < Iknow::Base
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
class
|
22
|
-
ATTRIBUTES = [:
|
21
|
+
class Study < Iknow::Base
|
22
|
+
ATTRIBUTES = [:today, :results]
|
23
23
|
attr_reader *ATTRIBUTES
|
24
24
|
|
25
|
+
class Result < Iknow::Base
|
26
|
+
ATTRIBUTES = [:timestamp, :seconds, :totals, :seen, :completed, :date]
|
27
|
+
attr_reader *ATTRIBUTES
|
28
|
+
|
29
|
+
def initialize(params = {})
|
30
|
+
@timestamp = (params['timestamp'].to_i rescue nil)
|
31
|
+
@seconds = (params['seconds'].to_i rescue nil)
|
32
|
+
@totals = {
|
33
|
+
:seconds => (params['totals']['seconds'].to_i rescue nil),
|
34
|
+
:seen => (params['totals']['seen'].to_i rescue nil),
|
35
|
+
:completed => (params['totals']['completed'].to_i rescue nil)
|
36
|
+
}
|
37
|
+
@seen = (params['seen'].to_i rescue nil)
|
38
|
+
@completed = (params['completed'].to_i rescue nil)
|
39
|
+
@date = (Date.parse(params['date']) rescue nil)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
25
43
|
def initialize(params = {})
|
26
|
-
@
|
27
|
-
@
|
28
|
-
@totals = {
|
29
|
-
:seconds => (params['totals']['seconds'].to_i rescue nil),
|
30
|
-
:seen => (params['totals']['seen'].to_i rescue nil),
|
31
|
-
:completed => (params['totals']['completed'].to_i rescue nil)
|
32
|
-
}
|
33
|
-
@seen = (params['seen'].to_i rescue nil)
|
34
|
-
@completed = (params['completed'].to_i rescue nil)
|
35
|
-
@date = (Date.parse(params['date']) rescue nil)
|
44
|
+
@today = (Date.parse(params['today']) rescue nil)
|
45
|
+
@results = self.deserialize(params['study_results'], :as => Iknow::User::Study::Result)
|
36
46
|
end
|
47
|
+
|
37
48
|
end
|
38
49
|
|
39
50
|
def self.find(username)
|
@@ -44,7 +55,7 @@ class Iknow::User < Iknow::Base
|
|
44
55
|
def self.matching(keyword, params = {})
|
45
56
|
params[:keyword] = keyword
|
46
57
|
response = Iknow::RestClient::User.matching(params)
|
47
|
-
self.deserialize(response)
|
58
|
+
self.deserialize(response) || []
|
48
59
|
end
|
49
60
|
|
50
61
|
def initialize(params)
|
@@ -53,32 +64,24 @@ class Iknow::User < Iknow::Base
|
|
53
64
|
end
|
54
65
|
|
55
66
|
def items(params = {})
|
56
|
-
return @items if @items
|
57
|
-
|
58
67
|
response = Iknow::RestClient::User.items(params.merge(:username => self.username))
|
59
|
-
self.deserialize(response, :as => Iknow::Item)
|
68
|
+
self.deserialize(response, :as => Iknow::Item) || []
|
60
69
|
end
|
61
70
|
|
62
71
|
def lists(params = {})
|
63
|
-
return @lists if @lists
|
64
|
-
|
65
72
|
response = Iknow::RestClient::User.lists(params.merge(:username => self.username))
|
66
|
-
self.deserialize(response, :as => Iknow::List)
|
73
|
+
self.deserialize(response, :as => Iknow::List) || []
|
67
74
|
end
|
68
75
|
|
69
76
|
def friends(params = {})
|
70
|
-
return @friends if @friends
|
71
|
-
|
72
77
|
response = Iknow::RestClient::User.friends(params.merge(:username => self.username))
|
73
|
-
self.deserialize(response)
|
78
|
+
self.deserialize(response) || []
|
74
79
|
end
|
75
80
|
|
76
|
-
def
|
77
|
-
|
78
|
-
|
79
|
-
params[:application] ||= :iknow
|
81
|
+
def study(params = {})
|
82
|
+
params[:application] ||= 'iknow'
|
80
83
|
response = Iknow::RestClient::User.study_results(params.merge(:username => self.username))
|
81
|
-
self.deserialize(response, :as => Iknow::User::
|
84
|
+
self.deserialize(response, :as => Iknow::User::Study)
|
82
85
|
end
|
83
86
|
|
84
87
|
end
|