nov-smartfm 0.4.0 → 0.4.1

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.
Files changed (41) hide show
  1. data/ChangeLog +5 -1
  2. data/README +3 -10
  3. data/lib/smartfm.rb +3 -2
  4. data/lib/smartfm/core/version.rb +1 -1
  5. data/lib/smartfm/models.rb +7 -0
  6. data/lib/smartfm/{model → models}/base.rb +2 -1
  7. data/lib/smartfm/{model → models}/item.rb +18 -86
  8. data/lib/smartfm/models/like.rb +20 -0
  9. data/lib/smartfm/{model → models}/list.rb +35 -64
  10. data/lib/smartfm/models/notification.rb +26 -0
  11. data/lib/smartfm/models/sentence.rb +70 -0
  12. data/lib/smartfm/{model → models}/user.rb +54 -16
  13. data/lib/smartfm/modules.rb +4 -0
  14. data/lib/smartfm/modules/acts_as_likable.rb +16 -0
  15. data/lib/smartfm/modules/media_support.rb +37 -0
  16. data/lib/smartfm/modules/private_content.rb +25 -0
  17. data/lib/smartfm/modules/public_content.rb +51 -0
  18. data/lib/smartfm/rest_clients.rb +9 -0
  19. data/lib/smartfm/{rest_client → rest_clients}/base.rb +0 -0
  20. data/lib/smartfm/rest_clients/item.rb +17 -0
  21. data/lib/smartfm/rest_clients/like.rb +7 -0
  22. data/lib/smartfm/rest_clients/list.rb +18 -0
  23. data/lib/smartfm/rest_clients/notification.rb +8 -0
  24. data/lib/smartfm/rest_clients/sentence.rb +14 -0
  25. data/lib/smartfm/rest_clients/user.rb +20 -0
  26. data/spec/smartfm/model/base_spec.rb +5 -3
  27. data/spec/smartfm/model/item_spec.rb +9 -0
  28. data/spec/smartfm/model/like_spec.rb +11 -0
  29. data/spec/smartfm/model/list_spec.rb +39 -3
  30. data/spec/smartfm/model/notification_spec.rb +7 -0
  31. data/spec/smartfm/model/user_spec.rb +18 -0
  32. data/spec/smartfm/rest_client/like_spec.rb +7 -0
  33. data/spec/smartfm/rest_client/notification_spec.rb +7 -0
  34. metadata +30 -16
  35. data/lib/smartfm/model.rb +0 -5
  36. data/lib/smartfm/model/sentence.rb +0 -118
  37. data/lib/smartfm/rest_client.rb +0 -8
  38. data/lib/smartfm/rest_client/item.rb +0 -14
  39. data/lib/smartfm/rest_client/list.rb +0 -15
  40. data/lib/smartfm/rest_client/sentence.rb +0 -12
  41. data/lib/smartfm/rest_client/user.rb +0 -14
data/ChangeLog CHANGED
@@ -40,4 +40,8 @@
40
40
  == 0.3.1
41
41
 
42
42
  * add sessions API support
43
- * fixed extract API bugs
43
+ * fixed extract API bugs
44
+
45
+ == 0.4.0
46
+
47
+ * OAuth DELETE calls works fine now.
data/README CHANGED
@@ -7,8 +7,8 @@
7
7
  This rubygem is a wrapper of smart.fm API.
8
8
  You can get pure-ruby example at examples/pure_ruby.rb.
9
9
  http://github.com/nov/smartfm/tree/master/examples/pure_ruby.rb
10
-
11
- It shows all API calls you can use with this gem.
10
+
11
+ It shows almost all API calls you can use with this gem.
12
12
 
13
13
  == Installation
14
14
 
@@ -26,15 +26,8 @@
26
26
 
27
27
  == Features/Problems
28
28
 
29
- Test! Test!! Test!!!
30
-
31
- Create/Add/Delete APIs are not implemented.
32
- They will be implemented in a few weeks.
33
-
34
- smart.fm OAuth is still pre-alpha.
35
-
36
29
  == Synopsis
37
-
30
+
38
31
  See examples and smart.fm Developers, please.
39
32
  smart.fm Developers (http://developer.smart.fm)
40
33
 
data/lib/smartfm.rb CHANGED
@@ -10,7 +10,8 @@ require 'json'
10
10
 
11
11
  require 'ext/hash'
12
12
  require 'smartfm/core'
13
- require 'smartfm/rest_client'
14
- require 'smartfm/model'
13
+ require 'smartfm/rest_clients'
14
+ require 'smartfm/modules'
15
+ require 'smartfm/models'
15
16
 
16
17
  Smartfm::Config.init
@@ -1,7 +1,7 @@
1
1
  module Smartfm::Version
2
2
  MAJOR = 0
3
3
  MINOR = 4
4
- REVISION = 0
4
+ REVISION = 1
5
5
  class << self
6
6
  def to_version
7
7
  "#{MAJOR}.#{MINOR}.#{REVISION}"
@@ -0,0 +1,7 @@
1
+ require 'smartfm/models/base'
2
+ require 'smartfm/models/user'
3
+ require 'smartfm/models/list'
4
+ require 'smartfm/models/item'
5
+ require 'smartfm/models/sentence'
6
+ require 'smartfm/models/like'
7
+ require 'smartfm/models/notification'
@@ -1,9 +1,10 @@
1
1
  class Smartfm::Base
2
2
 
3
3
  def self.attributes; self::ATTRIBUTES end
4
-
5
4
  def attributes; self.class.attributes end
6
5
 
6
+ protected
7
+
7
8
  def self.deserialize(hash, params = {})
8
9
  return nil if hash.nil?
9
10
 
@@ -1,9 +1,16 @@
1
1
  class Smartfm::Item < Smartfm::Base
2
- ATTRIBUTES = [:sentences, :responses, :cue, :id, :list]
3
- READONLY_ATTRIBUTES = [:sentences, :responses, :cue, :id]
2
+ ATTRIBUTES = [:sentences, :responses, :cue, :id, :list, :user]
3
+ READONLY_ATTRIBUTES = [:sentences, :responses, :cue, :id, :user]
4
4
  attr_accessor *(ATTRIBUTES - READONLY_ATTRIBUTES)
5
5
  attr_reader *READONLY_ATTRIBUTES
6
6
 
7
+ include Smartfm::PublicContent
8
+ include Smartfm::MediaSupport
9
+ include Smartfm::ActsAsLikable
10
+
11
+ def self.rest_client; Smartfm::RestClient::Item; end
12
+ def rest_client; self.class.rest_client; end
13
+
7
14
  class Response < Smartfm::Base
8
15
  ATTRIBUTES = [:text, :text_with_character, :type, :language]
9
16
  READONLY_ATTRIBUTES = [:type]
@@ -34,99 +41,24 @@ class Smartfm::Item < Smartfm::Base
34
41
  end
35
42
  end
36
43
 
37
- def self.recent(params = {})
38
- hash = Smartfm::RestClient::Item.recent(params)
39
- self.deserialize(hash) || []
40
- end
41
-
42
- def self.find(item_id, params = {})
43
- params[:id] = item_id
44
- hash = Smartfm::RestClient::Item.find(params)
45
- self.deserialize(hash)
46
- end
47
-
48
- def self.matching(keyword, params = {})
49
- params[:keyword] = keyword
50
- hash = Smartfm::RestClient::Item.matching(params)
51
- self.deserialize(hash) || []
52
- end
53
-
54
- def self.extract(text, params = {})
55
- params[:text] = text
56
- hash = Smartfm::RestClient::Item.extract(params)
57
- if params[:words_only] == false
58
- self.deserialize(hash) || []
59
- else
60
- hash
61
- end
62
- end
63
-
64
- def self.create(auth, params = {})
65
- self.new(params).save(auth)
66
- end
67
-
68
44
  def initialize(params = {})
69
45
  params[:responses] = [params[:response]] if params[:response]
70
46
  @id = params[:id].to_i
71
47
  @list = params[:list]
72
- @cue = self.deserialize(params[:cue], :as => Smartfm::Item::Cue)
48
+ @cue = self.deserialize(params[:cue], :as => Smartfm::Item::Cue)
73
49
  @responses = self.deserialize(params[:responses], :as => Smartfm::Item::Response)
74
50
  @sentences = self.deserialize(params[:sentences], :as => Smartfm::Sentence)
51
+ @user = self.deserialize(params[:user], :as => Smartfm::User)
75
52
  end
76
53
 
77
- def save(auth)
78
- begin
79
- item_id = Smartfm::RestClient::Item.create(auth, self.to_post_data)
80
- rescue
81
- return false
82
- end
83
- Smartfm::Item.find(item_id)
84
- end
85
-
86
- def add_image(auth, params)
87
- post_params = if params.is_a?(String)
88
- { 'image[url]' => params }
89
- else
90
- image_params = {
91
- 'image[url]' => params[:url],
92
- 'image[list_id]' => params[:list_id]
93
- }
94
- if params[:attribution]
95
- attribution_params = {
96
- 'attribution[media_entity]' => params[:attribution][:media_entity],
97
- 'attribution[author]' => params[:attribution][:media_entity],
98
- 'attribution[author_url]' => params[:attribution][:media_entity],
99
- 'attribution[attribution_license_id]' => params[:attribution][:media_entity]
100
- }
101
- image_params.merge(attribution_params)
102
- else
103
- image_params
104
- end
105
- end
106
- Smartfm::RestClient::Item.add_image(auth, post_params.merge(:id => self.id))
107
- end
108
-
109
- def add_sound(auth, params)
110
- post_params = if params.is_a?(String)
111
- { 'sound[url]' => params }
54
+ def self.extract(text, params = {})
55
+ params[:text] = text
56
+ hash = self.rest_client.extract(params)
57
+ if params[:words_only] == false
58
+ self.deserialize(hash) || []
112
59
  else
113
- sound_params = {
114
- 'sound[url]' => params[:url],
115
- 'sound[list_id]' => params[:list_id]
116
- }
117
- if params[:attribution]
118
- attribution_params = {
119
- 'attribution[media_entity]' => params[:attribution][:media_entity],
120
- 'attribution[author]' => params[:attribution][:media_entity],
121
- 'attribution[author_url]' => params[:attribution][:media_entity],
122
- 'attribution[attribution_license_id]' => params[:attribution][:media_entity]
123
- }
124
- sound_params.merge(attribution_params)
125
- else
126
- sound_params
127
- end
60
+ hash
128
61
  end
129
- Smartfm::RestClient::Item.add_sound(auth, post_params.merge(:id => self.id))
130
62
  end
131
63
 
132
64
  def add_tags(auth, *tags)
@@ -139,7 +71,7 @@ class Smartfm::Item < Smartfm::Base
139
71
  post_params["semantic_tags[#{idx}][disambiguation]"] = tag[:disambiguation]
140
72
  end
141
73
  end
142
- Smartfm::RestClient::Item.add_tags(auth, post_params.merge(:id => self.id))
74
+ self.rest_client.add_tags(auth, post_params.merge(:id => self.id))
143
75
  end
144
76
 
145
77
  protected
@@ -0,0 +1,20 @@
1
+ class Smartfm::Like < Smartfm::Base
2
+ ATTRIBUTES = [:id, :type, :title, :description, :href, :favorite, :user]
3
+ attr_reader *ATTRIBUTES
4
+
5
+ include Smartfm::PrivateContent
6
+
7
+ def self.rest_client; Smartfm::RestClient::Like; end
8
+ def rest_client; self.class.rest_client; end
9
+
10
+ def initialize(params)
11
+ @id = params[:id]
12
+ @type = params[:user]
13
+ @title = params[:title]
14
+ @description = params[:description]
15
+ @href = params[:href]
16
+ @favorite = params[:favorite]
17
+ @user = self.deserialize(params[:user], :as => Smartfm::User)
18
+ end
19
+
20
+ end
@@ -1,49 +1,37 @@
1
1
  class Smartfm::List < Smartfm::Base
2
2
  ATTRIBUTES = [:id, :title, :description, :icon, :square_icon, :item_count, :user_count, :iknow, :dictation, :brainspeed,
3
- :language, :translation_language, :list_type, :transcript, :embed,
4
- :tags, :media_entry, :author, :author_id, :author_url, :attribution_license_id,
5
- :items, :sentences]
6
- READONLY_ATTRIBUTES = [:id, :icon, :item_count, :user_count, :iknow, :dictation, :brainspeed]
3
+ :language, :translation_language, :list_type, :transcript, :embed, :tags, :media_entry,
4
+ :attribution_license_id, :items, :sentences, :user]
5
+ READONLY_ATTRIBUTES = [:id, :icon, :item_count, :user_count, :iknow, :dictation, :brainspeed, :user]
7
6
  attr_accessor *(ATTRIBUTES - READONLY_ATTRIBUTES)
8
7
  attr_reader *READONLY_ATTRIBUTES
9
8
 
9
+ include Smartfm::PublicContent
10
+ include Smartfm::ActsAsLikable
11
+
12
+ def self.rest_client; Smartfm::RestClient::List; end
13
+ def rest_client; self.class.rest_client; end
14
+
10
15
  class Application < Smartfm::Base
11
- ATTRIBUTES = [:application, :list_id, :lang]
16
+ ATTRIBUTES = [:application, :available, :progress, :list_id, :lang]
12
17
  attr_reader *ATTRIBUTES
13
18
 
14
19
  def initialize(params = {})
15
- @application = params[:application]
16
- @list_id = params[:list_id]
17
- @lang = params[:lang]
18
- end
19
- def url
20
- "http://smart.fm/flash?swf=#{self.name}&course_id=#{self.list_id}&lang=#{self.lang}"
20
+ @application = case
21
+ when params[:iknow] then :iknow
22
+ when params[:dictation] then :dictation
23
+ when params[:brainspeed] then :brainspeed
24
+ end
25
+ @available = params[self.application][:available]
26
+ @progress = params[self.application][:progress]
27
+ @href = params[self.application][:href]
28
+ @list_id = params[:list_id]
29
+ @lang = params[:lang]
21
30
  end
22
- end
23
-
24
- def self.recent(params = {})
25
- hash = Smartfm::RestClient::List.recent(params)
26
- self.deserialize(hash) || []
27
- end
28
-
29
- def self.find(list_id, params = {})
30
- params[:id] = list_id
31
- hash = Smartfm::RestClient::List.find(params)
32
- self.deserialize(hash)
33
- end
34
-
35
- def self.matching(keyword, params = {})
36
- params[:keyword] = keyword
37
- hash = Smartfm::RestClient::List.matching(params)
38
- self.deserialize(hash) || []
39
- end
40
-
41
- def self.create(auth, params = {})
42
- self.new(params).save(auth)
43
- end
44
31
 
45
- def self.delete(list_id)
46
- self.find(list_id).delete
32
+ def available?
33
+ self.available
34
+ end
47
35
  end
48
36
 
49
37
  def initialize(params = {})
@@ -56,55 +44,39 @@ class Smartfm::List < Smartfm::Base
56
44
  @user_count = (params[:user_count].to_i rescue nil)
57
45
  @language = params[:language]
58
46
  @translation_language = params[:translation_language]
59
- if @list_id and @translation_language
47
+ if @id and @translation_language
60
48
  common_settings = {:list_id => @id, :lang => @translation_language}
61
- @iknow = Application.new(common_settings.merge(:application => 'iknow')) if params[:iknow]
62
- @dictation = Application.new(common_settings.merge(:application => 'dictation')) if params[:dictation]
63
- @brainspeed = Application.new(common_settings.merge(:application => 'brainspeed')) if params[:brainspeed]
49
+ @iknow = Application.new(common_settings.merge(:iknow => params[:iknow]))
50
+ @dictation = Application.new(common_settings.merge(:dictation => params[:dictation]))
51
+ @brainspeed = Application.new(common_settings.merge(:brainspeed => params[:brainspeed]))
64
52
  end
65
- @author = params[:author] # display_name or username
66
- @author_id = params[:author_id] # username
67
- @author_url = params[:author_url]
68
53
  @list_type = params[:list_type] # for list creation
69
54
  @transcript = params[:transcript] # for list creation
70
55
  @embed = params[:embed] # for list creation
71
56
  @tags = params[:tags] # for list creation
72
57
  @media_entry = params[:media_entry] # for list creation
73
58
  @attribution_license_id = params[:attribution_license_id] # for list creation
74
- @items = self.deserialize(params[:items], :as => Smartfm::Item)
75
- @sentences = self.deserialize(params[:sentences], :as => Smartfm::Sentence)
59
+ @items = self.deserialize(params[:items], :as => Smartfm::Item)
60
+ @sentences = self.deserialize(params[:sentences], :as => Smartfm::Sentence)
61
+ @user = self.deserialize(params[:user], :as => Smartfm::User)
76
62
  end
77
63
 
78
64
  def items(params = {})
79
- hash = Smartfm::RestClient::List.items(params.merge(:id => self.id))
65
+ hash = self.rest_client.items(params.merge(:id => self.id))
80
66
  self.deserialize(hash, :as => Smartfm::Item) || []
81
67
  end
82
68
 
83
69
  def sentences(params = {})
84
- hash = Smartfm::RestClient::List.sentences(params.merge(:id => self.id))
70
+ hash = self.rest_client.sentences(params.merge(:id => self.id))
85
71
  self.deserialize(hash, :as => Smartfm::Sentence) || []
86
72
  end
87
73
 
88
- def save(auth)
89
- begin
90
- list_id = Smartfm::RestClient::List.create(auth, self.to_post_data)
91
- rescue
92
- return false
93
- end
94
- Smartfm::List.find(list_id)
95
- end
96
-
97
- def delete(auth)
98
- Smartfm::RestClient::List.delete(auth, {:id => self.id})
99
- end
100
- alias_method :destroy, :delete
101
-
102
74
  def add_item(auth, item)
103
- Smartfm::RestClient::List.add_item(auth, {:list_id => self.id, :id => item.id})
75
+ self.rest_client.add_item(auth, {:id => self.id, :item_id => item.id})
104
76
  end
105
77
 
106
78
  def delete_item(auth, item)
107
- Smartfm::RestClient::List.delete_item(auth, {:list_id => self.id, :id => item.id})
79
+ self.rest_client.delete_item(auth, {:id => self.id, :item_id => item.id})
108
80
  end
109
81
 
110
82
  protected
@@ -121,8 +93,7 @@ class Smartfm::List < Smartfm::Base
121
93
  if self.list_type
122
94
  post_data['list[type]'] = self.list_type
123
95
  end
124
- [ :transcript, :embed, :tags, :media_entry,
125
- :author, :author_url, :attribution_license_id ].each do |key|
96
+ [:transcript, :embed, :tags, :media_entry, :author, :author_url, :attribution_license_id ].each do |key|
126
97
  if self.send("#{key}")
127
98
  post_data["list[#{key}]"] = self.send("#{key}")
128
99
  end
@@ -0,0 +1,26 @@
1
+ class Smartfm::Notification < Smartfm::Base
2
+ ATTRIBUTES = [:type, :message, :recipient, :sender, :context]
3
+ READONLY_ATTRIBUTES = [:type, :recipient, :sender, :context]
4
+ attr_accessor *(ATTRIBUTES - READONLY_ATTRIBUTES)
5
+ attr_reader *READONLY_ATTRIBUTES
6
+
7
+ include Smartfm::PrivateContent
8
+
9
+ def self.rest_client; Smartfm::RestClient::Notification; end
10
+ def rest_client; self.class.rest_client; end
11
+
12
+ def initialize(params)
13
+ @type = params[:type]
14
+ @message = params[:message]
15
+ @recipient = params[:recipient]
16
+ @sender = params[:sender]
17
+ @context = params[:context]
18
+ end
19
+
20
+ private
21
+
22
+ def to_post_data
23
+ {:message => self.message}
24
+ end
25
+
26
+ end
@@ -0,0 +1,70 @@
1
+ class Smartfm::Sentence < Smartfm::Base
2
+ ATTRIBUTES = [:sound, :image, :square_image, :text, :language, :id, :transliterations, :translations, :item, :list, :user]
3
+ READONLY_ATTRIBUTES = [:id, :user]
4
+ attr_accessor *(ATTRIBUTES - READONLY_ATTRIBUTES)
5
+ attr_reader *READONLY_ATTRIBUTES
6
+
7
+ include Smartfm::PublicContent
8
+ include Smartfm::MediaSupport
9
+ include Smartfm::ActsAsLikable
10
+
11
+ def self.rest_client; Smartfm::RestClient::Sentence; end
12
+ def rest_client; self.class.rest_client; end
13
+
14
+ def initialize(params = {})
15
+ params[:translations] = [params[:translation]] if params[:translation]
16
+ params[:transliterations] = [params[:transliteration]] if params[:transliteration]
17
+ @id = params[:id]
18
+ @item = params[:item]
19
+ @list = params[:list]
20
+ @sound = params[:sound]
21
+ @image = params[:image]
22
+ @square_image = params[:square_image]
23
+ @text = params[:text]
24
+ @language = params[:language]
25
+ @transliterations = params[:transliterations]
26
+ @translations = self.deserialize(params[:translations], :as => Smartfm::Sentence)
27
+ @user = self.deserialize(params[:user], :as => Smartfm::User)
28
+ end
29
+
30
+ protected
31
+
32
+ def to_post_data
33
+ self.validate
34
+ post_data = {
35
+ 'item_id' => self.item.id,
36
+ 'sentence[text]' => self.text
37
+ }
38
+ # Optional attributes
39
+ if self.list
40
+ post_data['sentence[list_id]'] = self.list.id
41
+ end
42
+ [:language, :transliteration].each do |key|
43
+ if self.send("#{key}")
44
+ post_data["sentence[#{key}]"] = self.send("#{key}")
45
+ end
46
+ end
47
+ if self.translation
48
+ [:text, :language, :transliteration].each do |key|
49
+ if self.translation.send("#{key}")
50
+ post_data["translation[#{key}]"] = self.translation.send("#{key}")
51
+ end
52
+ end
53
+ end
54
+ post_data
55
+ end
56
+
57
+ def validate
58
+ raise ArgumentError.new("Item is required.") unless self.item
59
+ raise ArgumentError.new("Sentence text is required.") if self.text.nil? or self.text.empty?
60
+ end
61
+
62
+ def translation
63
+ self.translations.first rescue nil
64
+ end
65
+
66
+ def transliteration
67
+ self.transliterations.first rescue nil
68
+ end
69
+
70
+ end
@@ -2,6 +2,9 @@ class Smartfm::User < Smartfm::Base
2
2
  ATTRIBUTES = [:username, :profile]
3
3
  attr_reader *ATTRIBUTES
4
4
 
5
+ def self.rest_client; Smartfm::RestClient::User; end
6
+ def rest_client; self.class.rest_client; end
7
+
5
8
  class Profile < Smartfm::Base
6
9
  ATTRIBUTES = [:name, :gender, :birthday, :description, :blog_url, :profile_url, :foaf_url, :icon_url]
7
10
  attr_reader *ATTRIBUTES
@@ -58,54 +61,89 @@ class Smartfm::User < Smartfm::Base
58
61
  @results = self.deserialize(params[:study_results], :as => Smartfm::User::Study::Result)
59
62
  @total_summary = self.deserialize(params[:total_summary], :as => Smartfm::User::Study::TotalSummary)
60
63
  end
64
+ end
61
65
 
66
+ def initialize(params)
67
+ @profile = Profile.new(params[:profile])
68
+ @username = params[:username]
62
69
  end
63
70
 
64
71
  def self.find(username, params = {})
65
72
  params[:username] = username
66
- hash = Smartfm::RestClient::User.find(params)
73
+ hash = self.rest_client.find(params)
67
74
  self.deserialize(hash)
68
75
  end
69
76
 
70
77
  def self.matching(keyword, params = {})
71
78
  params[:keyword] = keyword
72
- hash = Smartfm::RestClient::User.matching(params)
79
+ hash = self.rest_client.matching(params)
73
80
  self.deserialize(hash) || []
74
81
  end
75
82
 
76
- def self.username(auth)
77
- Smartfm::RestClient::User.username(auth, {})
83
+ def self.current(auth, params = {})
84
+ self.rest_client.current(auth, params)
78
85
  end
79
86
 
80
- def initialize(params)
81
- @profile = Profile.new(params[:profile])
82
- @username = params[:username]
87
+ def self.friends(auth, params = {})
88
+ self.rest_client.friends_of_current(auth, params)
89
+ end
90
+
91
+ def self.followers(auth, params = {})
92
+ self.rest_client.followers_of_current(auth, params)
93
+ end
94
+
95
+ def friends(params = {})
96
+ hash = self.rest_client.friends(params.merge(:username => self.username))
97
+ self.deserialize(hash) || []
98
+ end
99
+
100
+ def followers(params = {})
101
+ hash = self.rest_client.followers(params.merge(:username => self.username))
102
+ self.deserialize(hash) || []
103
+ end
104
+
105
+ def friends_of_current(auth, params = {})
106
+ hash = self.rest_client.friends_of_current(auth, params)
107
+ self.deserialize(hash) || []
108
+ end
109
+
110
+ def followers_of_current(auth, params = {})
111
+ hash = self.rest_client.followers_of_current(auth, params)
112
+ self.deserialize(hash) || []
113
+ end
114
+
115
+ def follow!(auth, params = {})
116
+ self.rest_client.follow!(auth, params.merge(:username => self.username))
117
+ end
118
+
119
+ def unfollow!(auth, params = {})
120
+ self.rest_client.unfollow!(auth, params.merge(:username => self.username))
83
121
  end
84
122
 
85
123
  def items(params = {})
86
- hash = Smartfm::RestClient::User.items(params.merge(:username => self.username))
124
+ hash = self.rest_client.items(params.merge(:username => self.username))
87
125
  self.deserialize(hash, :as => Smartfm::Item) || []
88
126
  end
89
127
 
90
128
  def lists(params = {})
91
- hash = Smartfm::RestClient::User.lists(params.merge(:username => self.username))
129
+ hash = self.rest_client.lists(params.merge(:username => self.username))
92
130
  self.deserialize(hash, :as => Smartfm::List) || []
93
131
  end
94
132
 
95
- def friends(params = {})
96
- hash = Smartfm::RestClient::User.friends(params.merge(:username => self.username))
97
- self.deserialize(hash) || []
133
+ def likes(params = {})
134
+ hash = self.rest_client.likes(params.merge(:username => self.username))
135
+ self.deserialize(hash, :as => Smartfm::Like) || []
98
136
  end
99
137
 
100
- def followers(params = {})
101
- hash = Smartfm::RestClient::User.followers(params.merge(:username => self.username))
102
- self.deserialize(hash) || []
138
+ def notifications(params = {})
139
+ hash = self.rest_client.notifications(params.merge(:username => self.username))
140
+ self.deserialize(hash, :as => Smartfm::Notification) || []
103
141
  end
104
142
 
105
143
  def study(params = {})
106
144
  params[:application] ||= 'iknow'
107
145
  return nil unless ['iknow', 'dictation', 'brainspeed', ].include?(params[:application])
108
- hash = Smartfm::RestClient::User.study_results(params.merge(:username => self.username))
146
+ hash = self.rest_client.study_results(params.merge(:username => self.username))
109
147
  self.deserialize(hash, :as => Smartfm::User::Study)
110
148
  end
111
149
 
@@ -0,0 +1,4 @@
1
+ require 'smartfm/modules/acts_as_likable'
2
+ require 'smartfm/modules/private_content'
3
+ require 'smartfm/modules/public_content'
4
+ require 'smartfm/modules/media_support'
@@ -0,0 +1,16 @@
1
+ module Smartfm::ActsAsLikable
2
+
3
+ def likes(params = {})
4
+ hash = self.rest_client.likes(params.merge(:id => self.id))
5
+ self.deserialize(hash, :as => Smartfm::Like) || []
6
+ end
7
+
8
+ def like!(auth, params)
9
+ self.rest_client.like!(auth, params.merge(:id => self.id))
10
+ end
11
+
12
+ def unlike!(auth, params)
13
+ self.rest_client.unlike!(auth, params.merge(:id => self.id))
14
+ end
15
+
16
+ end
@@ -0,0 +1,37 @@
1
+ module Smartfm::MediaSupport
2
+
3
+ def attribution_params(attr_params)
4
+ return {} unless attr_params
5
+ {
6
+ 'attribution[medias_entity]' => attr_params[:media_entity],
7
+ 'attribution[author]' => attr_params[:author],
8
+ 'attribution[author_url]' => attr_params[:author_url],
9
+ 'attributions[attribution_license_id]' => attr_params[:attribution_license_id]
10
+ }
11
+ end
12
+
13
+ def add_image(auth, params)
14
+ post_params = if params.is_a?(String)
15
+ {'image[url]' => params}
16
+ else
17
+ {
18
+ 'image[url]' => params[:url],
19
+ 'image[list_id]' => params[:list_id]
20
+ }.merge(attribution_params(params[:attribution]))
21
+ end
22
+ self.rest_client.add_image(auth, post_params.merge(:id => self.id))
23
+ end
24
+
25
+ def add_sound(auth, params)
26
+ post_params = if params.is_a?(String)
27
+ {'sound[url]' => params}
28
+ else
29
+ {
30
+ 'sound[url]' => params[:url],
31
+ 'sound[list_id]' => params[:list_id]
32
+ }.merge(attribution_params(params[:attribution]))
33
+ end
34
+ self.rest_client.add_sound(auth, post_params.merge(:id => self.id))
35
+ end
36
+
37
+ end
@@ -0,0 +1,25 @@
1
+ module Smartfm::PrivateContent
2
+
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ base.send(:include, InstanceMethods)
6
+ end
7
+
8
+ module ClassMethods
9
+ def of_current(auth, params = {})
10
+ hash = self.rest_client.of_current(auth, params)
11
+ self.deserialize(hash) || []
12
+ end
13
+
14
+ def create(auth, params = {})
15
+ self.new(params).save
16
+ end
17
+ end
18
+
19
+ module InstanceMethods
20
+ def save(auth)
21
+ self.rest_client.create(auth, self.to_post_data)
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,51 @@
1
+ module Smartfm::PublicContent
2
+
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ base.send(:include, InstanceMethods)
6
+ end
7
+
8
+ module ClassMethods
9
+ def recent(params = {})
10
+ hash = self.rest_client.recent(params)
11
+ self.deserialize(hash) || []
12
+ end
13
+
14
+ def find(list_id, params = {})
15
+ params[:id] = list_id
16
+ hash = self.rest_client.find(params)
17
+ self.deserialize(hash)
18
+ end
19
+
20
+ def matching(keyword, params = {})
21
+ params[:keyword] = keyword
22
+ hash = self.rest_client.matching(params)
23
+ self.deserialize(hash) || []
24
+ end
25
+
26
+ def create(auth, params = {})
27
+ self.new(params).save(auth)
28
+ end
29
+
30
+ def delete(obj_id)
31
+ self.find(obj_id).delete
32
+ end
33
+ end
34
+
35
+ module InstanceMethods
36
+ def save(auth)
37
+ begin
38
+ obj_id = self.rest_client.create(auth, self.to_post_data)
39
+ rescue
40
+ return false
41
+ end
42
+ self.find(obj_id)
43
+ end
44
+
45
+ def delete(auth)
46
+ self.rest_client.delete(auth, {:id => self.id})
47
+ end
48
+ alias_method :destroy, :delete
49
+ end
50
+
51
+ end
@@ -0,0 +1,9 @@
1
+ module Smartfm::RestClient; end
2
+
3
+ require 'smartfm/rest_clients/base'
4
+ require 'smartfm/rest_clients/user'
5
+ require 'smartfm/rest_clients/list'
6
+ require 'smartfm/rest_clients/item'
7
+ require 'smartfm/rest_clients/sentence'
8
+ require 'smartfm/rest_clients/like'
9
+ require 'smartfm/rest_clients/notification'
File without changes
@@ -0,0 +1,17 @@
1
+ class Smartfm::RestClient::Item < Smartfm::RestClient::Base
2
+
3
+ ACTIONS = {
4
+ :recent => {:path => '/items' },
5
+ :find => {:path => '/items/__id__' },
6
+ :matching => {:path => '/items/matching/__keyword__'},
7
+ :extract => {:path => '/items/extract', },
8
+ :likes => {:path => '/items/__id__/likes' },
9
+ :create => {:path => '/items', :http_method => :post},
10
+ :add_image => {:path => '/items/__id__/images', :http_method => :post},
11
+ :add_sound => {:path => '/items/__id__/sounds', :http_method => :post},
12
+ :add_tags => {:path => '/items/__id__/tags', :http_method => :post},
13
+ :like! => {:path => '/items/__id__/likes', :http_method => :post},
14
+ :unlike! => {:path => '/items/__id__/likes', :http_method => :delete}
15
+ }
16
+
17
+ end
@@ -0,0 +1,7 @@
1
+ class Smartfm::RestClient::Like < Smartfm::RestClient::Base
2
+
3
+ ACTIONS = {
4
+ :of_current => {:path => '/likes'}
5
+ }
6
+
7
+ end
@@ -0,0 +1,18 @@
1
+ class Smartfm::RestClient::List < Smartfm::RestClient::Base
2
+
3
+ ACTIONS = {
4
+ :recent => {:path => '/lists' },
5
+ :find => {:path => '/lists/__id__' },
6
+ :items => {:path => '/lists/__id__/items' },
7
+ :sentences => {:path => '/lists/__id__/sentences' },
8
+ :matching => {:path => '/lists/matching/__keyword__'},
9
+ :likes => {:path => '/lists/__id__/likes' },
10
+ :create => {:path => '/lists', :http_method => :post},
11
+ :add_item => {:path => '/lists/__id__/items', :http_method => :post},
12
+ :like! => {:path => '/lists/__id__/likes', :http_method => :post},
13
+ :delete => {:path => '/lists/__id__', :http_method => :delete},
14
+ :delete_item => {:path => '/lists/__id__/items/__item_id__', :http_method => :delete},
15
+ :unlike! => {:path => '/lists/__id__/likes', :http_method => :delete}
16
+ }
17
+
18
+ end
@@ -0,0 +1,8 @@
1
+ class Smartfm::RestClient::Notification < Smartfm::RestClient::Base
2
+
3
+ ACTIONS = {
4
+ :of_current => {:path => '/notifications'},
5
+ :create => {:path => '/notifications', :http_method => :post},
6
+ }
7
+
8
+ end
@@ -0,0 +1,14 @@
1
+ class Smartfm::RestClient::Sentence < Smartfm::RestClient::Base
2
+
3
+ ACTIONS = {
4
+ :recent => {:path => '/sentences' },
5
+ :find => {:path => '/sentences/__id__' },
6
+ :matching => {:path => '/sentences/matching/__keyword__'},
7
+ :create => {:path => '/sentences', :http_method => :post},
8
+ :add_image => {:path => '/sentences/__id__/images', :http_method => :post},
9
+ :add_sound => {:path => '/sentences/__id__/sounds', :http_method => :post},
10
+ :like! => {:path => '/sentences/__id__/likes', :http_method => :post},
11
+ :unlike! => {:path => '/sentences/__id__/likes', :http_method => :delete}
12
+ }
13
+
14
+ end
@@ -0,0 +1,20 @@
1
+ class Smartfm::RestClient::User < Smartfm::RestClient::Base
2
+
3
+ ACTIONS = {
4
+ :current => {:path => '/users' },
5
+ :find => {:path => '/users/__username__' },
6
+ :lists => {:path => '/users/__username__/lists' },
7
+ :items => {:path => '/users/__username__/items' },
8
+ :friends => {:path => '/users/__username__/friends' },
9
+ :followers => {:path => '/users/__username__/followers' },
10
+ :friends_of_current => {:path => '/friends' },
11
+ :followers_of_current => {:path => '/followers' },
12
+ :likes => {:path => '/users/__username__/likes' },
13
+ :notifications => {:path => '/users/__username__/notifications'},
14
+ :matching => {:path => '/users/matching/__keyword__' },
15
+ :study_results => {:path => '/users/__username__/study_results/__application__'},
16
+ :follow! => {:path => '/users/__username__/friends', :http_method => :post},
17
+ :unfollow! => {:path => '/users/__username__/friends', :http_method => :delete}
18
+ }
19
+
20
+ end
@@ -10,9 +10,11 @@ subclasses.each do |klass|
10
10
  end
11
11
  end
12
12
 
13
- describe klass, '.find' do
14
- it "should return nil if NOT FOUND" do
15
- klass.find(-1).should be_nil
13
+ if klass.respond_to?(:recent)
14
+ describe klass, '.find' do
15
+ it "should return nil if NOT FOUND" do
16
+ klass.find(-1).should be_nil
17
+ end
16
18
  end
17
19
  end
18
20
 
@@ -39,3 +39,12 @@ describe Smartfm::Item, '#sentences' do
39
39
  end
40
40
  end
41
41
  end
42
+
43
+ describe Smartfm::Item, '#likes' do
44
+ it "should return a Array of Smartfm::Like" do
45
+ smart.likes.should be_a(Array)
46
+ smart.likes.each do |like|
47
+ like.should be_a(Smartfm::Like)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ matake_likes = Smartfm::User.find('matake').likes
4
+
5
+ describe Smartfm::Like do
6
+ it "should respond to attribute methods" do
7
+ Smartfm::Like::ATTRIBUTES.each do |attr|
8
+ matake_likes.first.should respond_to(attr)
9
+ end
10
+ end
11
+ end
@@ -1,7 +1,43 @@
1
1
  require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
2
 
3
- describe String do
4
- it "should respond to length" do
5
- "hoge".should respond_to(:length)
3
+ core_2000 = Smartfm::List.find(705)
4
+
5
+ describe Smartfm::List do
6
+ it "should respond to attribute methods" do
7
+ Smartfm::List::ATTRIBUTES.each do |attr|
8
+ core_2000.should respond_to(attr)
9
+ end
10
+ Smartfm::List::Application::ATTRIBUTES.each do |attr|
11
+ core_2000.iknow.should respond_to(attr)
12
+ core_2000.dictation.should respond_to(attr)
13
+ core_2000.brainspeed.should respond_to(attr)
14
+ end
15
+ end
16
+ end
17
+
18
+ describe Smartfm::List, '#items' do
19
+ it "should return a Array of Smartfm::Item" do
20
+ core_2000.items.should be_a(Array)
21
+ core_2000.items.each do |item|
22
+ item.should be_a(Smartfm::Item)
23
+ end
24
+ end
25
+ end
26
+
27
+ describe Smartfm::List, '#sentences' do
28
+ it "should return a Array of Smartfm::Sentence" do
29
+ core_2000.sentences.should be_a(Array)
30
+ core_2000.sentences.each do |sentence|
31
+ sentence.should be_a(Smartfm::Sentence)
32
+ end
33
+ end
34
+ end
35
+
36
+ describe Smartfm::List, '#likes' do
37
+ it "should return a Array of Smartfm::Like" do
38
+ core_2000.likes.should be_a(Array)
39
+ core_2000.likes.each do |like|
40
+ like.should be_a(Smartfm::Like)
41
+ end
6
42
  end
7
43
  end
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ describe String do
4
+ it "should respond to length" do
5
+ "hoge".should respond_to(:length)
6
+ end
7
+ end
@@ -64,6 +64,24 @@ describe Smartfm::User, '#followers' do
64
64
  end
65
65
  end
66
66
 
67
+ describe Smartfm::User, '#likes' do
68
+ it "should return a Array of Smartfm::Like" do
69
+ matake.likes.should be_a(Array)
70
+ matake.likes.each do |like|
71
+ like.should be_a(Smartfm::Like)
72
+ end
73
+ end
74
+ end
75
+
76
+ describe Smartfm::User, '#notifications' do
77
+ it "should return a Array of Smartfm::Notification" do
78
+ matake.notifications.should be_a(Array)
79
+ matake.notifications.each do |notification|
80
+ notification.should be_a(Smartfm::Notification)
81
+ end
82
+ end
83
+ end
84
+
67
85
  describe Smartfm::User, '#study' do
68
86
  it "should return a instance of Smartfm::User::Study" do
69
87
  matake.study.should be_a(Smartfm::User::Study)
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ describe Smartfm::RestClient::User, '::ACTIONS' do
4
+ it "should be a Hash" do
5
+ Smartfm::RestClient::Like::ACTIONS.should be_a(Hash)
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ describe Smartfm::RestClient::User, '::ACTIONS' do
4
+ it "should be a Hash" do
5
+ Smartfm::RestClient::Notification::ACTIONS.should be_a(Hash)
6
+ end
7
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nov-smartfm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - nov
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-29 00:00:00 -07:00
12
+ date: 2009-04-30 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -57,13 +57,17 @@ files:
57
57
  - spec/smartfm/model
58
58
  - spec/smartfm/model/base_spec.rb
59
59
  - spec/smartfm/model/item_spec.rb
60
+ - spec/smartfm/model/like_spec.rb
60
61
  - spec/smartfm/model/list_spec.rb
62
+ - spec/smartfm/model/notification_spec.rb
61
63
  - spec/smartfm/model/sentence_spec.rb
62
64
  - spec/smartfm/model/user_spec.rb
63
65
  - spec/smartfm/rest_client
64
66
  - spec/smartfm/rest_client/base_spec.rb
65
67
  - spec/smartfm/rest_client/item_spec.rb
68
+ - spec/smartfm/rest_client/like_spec.rb
66
69
  - spec/smartfm/rest_client/list_spec.rb
70
+ - spec/smartfm/rest_client/notification_spec.rb
67
71
  - spec/smartfm/rest_client/sentence_spec.rb
68
72
  - spec/smartfm/rest_client/user_spec.rb
69
73
  - spec/spec_helper.rb
@@ -75,20 +79,30 @@ files:
75
79
  - lib/smartfm/core/config.rb
76
80
  - lib/smartfm/core/version.rb
77
81
  - lib/smartfm/core.rb
78
- - lib/smartfm/model
79
- - lib/smartfm/model/base.rb
80
- - lib/smartfm/model/item.rb
81
- - lib/smartfm/model/list.rb
82
- - lib/smartfm/model/sentence.rb
83
- - lib/smartfm/model/user.rb
84
- - lib/smartfm/model.rb
85
- - lib/smartfm/rest_client
86
- - lib/smartfm/rest_client/base.rb
87
- - lib/smartfm/rest_client/item.rb
88
- - lib/smartfm/rest_client/list.rb
89
- - lib/smartfm/rest_client/sentence.rb
90
- - lib/smartfm/rest_client/user.rb
91
- - lib/smartfm/rest_client.rb
82
+ - lib/smartfm/models
83
+ - lib/smartfm/models/base.rb
84
+ - lib/smartfm/models/item.rb
85
+ - lib/smartfm/models/like.rb
86
+ - lib/smartfm/models/list.rb
87
+ - lib/smartfm/models/notification.rb
88
+ - lib/smartfm/models/sentence.rb
89
+ - lib/smartfm/models/user.rb
90
+ - lib/smartfm/models.rb
91
+ - lib/smartfm/modules
92
+ - lib/smartfm/modules/acts_as_likable.rb
93
+ - lib/smartfm/modules/media_support.rb
94
+ - lib/smartfm/modules/private_content.rb
95
+ - lib/smartfm/modules/public_content.rb
96
+ - lib/smartfm/modules.rb
97
+ - lib/smartfm/rest_clients
98
+ - lib/smartfm/rest_clients/base.rb
99
+ - lib/smartfm/rest_clients/item.rb
100
+ - lib/smartfm/rest_clients/like.rb
101
+ - lib/smartfm/rest_clients/list.rb
102
+ - lib/smartfm/rest_clients/notification.rb
103
+ - lib/smartfm/rest_clients/sentence.rb
104
+ - lib/smartfm/rest_clients/user.rb
105
+ - lib/smartfm/rest_clients.rb
92
106
  - lib/smartfm.rb
93
107
  - examples/pure_ruby.rb
94
108
  has_rdoc: true
data/lib/smartfm/model.rb DELETED
@@ -1,5 +0,0 @@
1
- require 'smartfm/model/base'
2
- require 'smartfm/model/user'
3
- require 'smartfm/model/list'
4
- require 'smartfm/model/item'
5
- require 'smartfm/model/sentence'
@@ -1,118 +0,0 @@
1
- class Smartfm::Sentence < Smartfm::Base
2
- ATTRIBUTES = [:sound, :image, :square_image, :text, :language, :id, :transliterations, :translations, :item, :list]
3
- READONLY_ATTRIBUTES = [:id]
4
- attr_accessor *(ATTRIBUTES - READONLY_ATTRIBUTES)
5
- attr_reader *READONLY_ATTRIBUTES
6
-
7
- def self.recent(params = {})
8
- hash = Smartfm::RestClient::Sentence.recent(params)
9
- self.deserialize(hash) || []
10
- end
11
-
12
- def self.find(sentence_id, params = {})
13
- params[:id] = sentence_id
14
- hash = Smartfm::RestClient::Sentence.find(params)
15
- self.deserialize(hash)
16
- end
17
-
18
- def self.matching(keyword, params = {})
19
- params[:keyword] = keyword
20
- hash = Smartfm::RestClient::Sentence.matching(params)
21
- self.deserialize(hash) || []
22
- end
23
-
24
- def self.create(auth, params = {})
25
- self.new(params).save(auth)
26
- end
27
-
28
- def initialize(params = {})
29
- params[:translations] = [params[:translation]] if params[:translation]
30
- params[:transliterations] = [params[:transliteration]] if params[:transliteration]
31
- @id = params[:id]
32
- @item = params[:item]
33
- @list = params[:list]
34
- @sound = params[:sound]
35
- @image = params[:image]
36
- @square_image = params[:square_image]
37
- @text = params[:text]
38
- @language = params[:language]
39
- @transliterations = params[:transliterations]
40
- @translations = self.deserialize(params[:translations], :as => Smartfm::Sentence)
41
- end
42
-
43
- def save(auth)
44
- begin
45
- sentence_id = Smartfm::RestClient::Sentence.create(auth, self.to_post_data)
46
- rescue
47
- return false
48
- end
49
- Smartfm::Sentence.find(sentence_id)
50
- end
51
-
52
- def add_image(auth, params)
53
- post_params = if params.is_a?(String)
54
- {'image[url]' => params}
55
- else
56
- {'image[url]' => params[:url], 'image[list_id]' => params[:list_id]}.merge(attribution_params(params[:attribution]))
57
- end
58
- Smartfm::RestClient::Sentence.add_image(auth, post_params.merge(:id => self.id))
59
- end
60
-
61
- def add_sound(auth, params)
62
- post_params = if params.is_a?(String)
63
- {'sound[url]' => params}
64
- else
65
- {'sound[url]' => params[:url], 'sound[list_id]' => params[:list_id]}.merge(attribution_params(params[:attribution]))
66
- end
67
- Smartfm::RestClient::Sentence.add_sound(auth, post_params.merge(:id => self.id))
68
- end
69
-
70
- protected
71
-
72
- def to_post_data
73
- self.validate
74
- post_data = {
75
- 'item_id' => self.item.id,
76
- 'sentence[text]' => self.text
77
- }
78
- # Optional attributes
79
- if self.list
80
- post_data['sentence[list_id]'] = self.list.id
81
- end
82
- [:language, :transliteration].each do |key|
83
- if self.send("#{key}")
84
- post_data["sentence[#{key}]"] = self.send("#{key}")
85
- end
86
- end
87
- if self.translation
88
- [:text, :language, :transliteration].each do |key|
89
- if self.translation.send("#{key}")
90
- post_data["translation[#{key}]"] = self.translation.send("#{key}")
91
- end
92
- end
93
- end
94
- post_data
95
- end
96
-
97
- def validate
98
- raise ArgumentError.new("Item is required.") unless self.item
99
- raise ArgumentError.new("Sentence text is required.") if self.text.nil? or self.text.empty?
100
- end
101
-
102
- def translation
103
- self.translations.first rescue nil
104
- end
105
-
106
- def transliteration
107
- self.transliterations.first rescue nil
108
- end
109
-
110
- def attribution_params(attr_params)
111
- return {} unless attr_params
112
- {'attribution[medias_entity]' => attr_params[:media_entity],
113
- 'attribution[author]' => attr_params[:author],
114
- 'attribution[author_url]' => attr_params[:author_url],
115
- 'attributions[attribution_license_id]' => attr_params[:attribution_license_id] }
116
- end
117
-
118
- end
@@ -1,8 +0,0 @@
1
- module Smartfm::RestClient
2
- end
3
-
4
- require 'smartfm/rest_client/base'
5
- require 'smartfm/rest_client/user'
6
- require 'smartfm/rest_client/list'
7
- require 'smartfm/rest_client/item'
8
- require 'smartfm/rest_client/sentence'
@@ -1,14 +0,0 @@
1
- class Smartfm::RestClient::Item < Smartfm::RestClient::Base
2
-
3
- ACTIONS = {
4
- :recent => { :path => '/items' },
5
- :find => { :path => '/items/__id__' },
6
- :matching => { :path => '/items/matching/__keyword__' },
7
- :extract => { :path => '/items/extract', },
8
- :create => { :path => '/items', :http_method => :post },
9
- :add_image => { :path => '/items/__id__/images', :http_method => :post },
10
- :add_sound => { :path => '/items/__id__/sounds', :http_method => :post },
11
- :add_tags => { :path => '/items/__id__/tags', :http_method => :post }
12
- }
13
-
14
- end
@@ -1,15 +0,0 @@
1
- class Smartfm::RestClient::List < Smartfm::RestClient::Base
2
-
3
- ACTIONS = {
4
- :recent => { :path => '/lists' },
5
- :find => { :path => '/lists/__id__' },
6
- :items => { :path => '/lists/__id__/items' },
7
- :sentences => { :path => '/lists/__id__/sentences' },
8
- :matching => { :path => '/lists/matching/__keyword__' },
9
- :create => { :path => '/lists', :http_method => :post },
10
- :delete => { :path => '/lists/__id__', :http_method => :delete },
11
- :add_item => { :path => '/lists/__list_id__/items', :http_method => :post },
12
- :delete_item => { :path => '/lists/__list_id__/items/__id__', :http_method => :delete }
13
- }
14
-
15
- end
@@ -1,12 +0,0 @@
1
- class Smartfm::RestClient::Sentence < Smartfm::RestClient::Base
2
-
3
- ACTIONS = {
4
- :recent => { :path => '/sentences' },
5
- :find => { :path => '/sentences/__id__' },
6
- :matching => { :path => '/sentences/matching/__keyword__' },
7
- :create => { :path => '/sentences', :http_method => :post },
8
- :add_image => { :path => '/sentences/__id__/images', :http_method => :post },
9
- :add_sound => { :path => '/sentences/__id__/sounds', :http_method => :post }
10
- }
11
-
12
- end
@@ -1,14 +0,0 @@
1
- class Smartfm::RestClient::User < Smartfm::RestClient::Base
2
-
3
- ACTIONS = {
4
- :find => { :path => '/users/__username__' },
5
- :lists => { :path => '/users/__username__/lists' },
6
- :items => { :path => '/users/__username__/items' },
7
- :friends => { :path => '/users/__username__/friends' },
8
- :followers => { :path => '/users/__username__/followers' },
9
- :study_results => { :path => '/users/__username__/study_results/__application__' },
10
- :matching => { :path => '/users/matching/__keyword__' },
11
- :username => { :path => '/sessions' }
12
- }
13
-
14
- end