nov-iknow 0.0.1 → 0.0.2
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/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
|