little 0.0.4 → 0.0.5

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.
@@ -0,0 +1,74 @@
1
+ module Little
2
+ # add, delete and retrieve likes by user or assets
3
+ class Asset
4
+ # votes for an asset
5
+ # @param [String] user the user who likes the asset
6
+ # @param [String] asset the asset being liked
7
+ # @param [int] type the type of asset
8
+ # params [symbol] up_or_down either :up or :down
9
+ def self.vote(user, asset, type, up_or_down)
10
+ Little.post(:assets, {:user => user, :asset => asset, :type => type, :vote => up_or_down == :up}, [:user, :asset, :type], 'vote')
11
+ end
12
+
13
+ # generates a signature for voting on an asset (useful when using the javascript library)
14
+ def self.sign_vote(user, asset, type)
15
+ Little.sign(:assets, {:user => user, :asset => asset, :type => type})
16
+ end
17
+
18
+ # rates an asset
19
+ # @param [String] user the user who likes the asset
20
+ # @param [String] asset the asset being liked
21
+ # @param [int] type the type of asset
22
+ # params [int] rating the rating
23
+ def self.rate(user, asset, type, rating)
24
+ Little.post(:assets, {:user => user, :asset => asset, :type => type, :rate => rating}, [:user, :asset, :type], 'rate')
25
+ end
26
+
27
+ # generates a signature for rating an asset (useful when using the javascript library)
28
+ def self.sign_rate(user, asset, type)
29
+ Little.sign(:assets, {:user => user, :asset => asset, :type => type})
30
+ end
31
+
32
+ # does the user like the asset
33
+ def self.user_asset(user, asset, type)
34
+ Little.get(:assets, {:user => user, :asset => asset, :type => type})
35
+ end
36
+
37
+ # gets all the user's assets
38
+ # params [bool] vote true or false to get assets voted for or against, or nil to get all
39
+ # params [bool] rated_only true or false to get assets the user rated, or nil to get all
40
+ def self.for_user(user, page, records, vote = nil, rated_only = nil)
41
+ Little.get(:assets, {:user => user, :page => page, :records => records, :vote => vote, :rate => rated_only})
42
+ end
43
+
44
+ # gets the number of assets the user likes
45
+ def self.for_user_count(user, vote = nil, rated_only = nil)
46
+ Little.get(:assets, {:user => user, :count => true, :vote => vote, :rate => rated_only})
47
+ end
48
+
49
+ # gets all the users who like an asset
50
+ def self.for_asset(asset, type, page, records, vote = nil, rated_only = nil)
51
+ Little.get(:assets, {:asset => asset, :type => type, :page => page, :records => records, :vote => vote, :rate => rated_only})
52
+ end
53
+
54
+ # gets the number of users who like an asset
55
+ def self.for_asset_count(asset, type, vote = nil, rated_only = nil)
56
+ Little.get(:assets, {:asset => asset, :type => type, :count => true, :vote => vote, :rate => rated_only})
57
+ end
58
+
59
+ # gets the assets liked by type, ordered by number of likes (desc)
60
+ def self.highest_rated(type, page, records)
61
+ Little.get(:assets, {:type => type, :page => page, :records => records}, nil, 'by_rate')
62
+ end
63
+
64
+ # gets the assets liked by type, ordered by number of likes (desc)
65
+ def self.most_votes(type, page, records)
66
+ Little.get(:assets, {:type => type, :page => page, :records => records}, nil, 'by_vote')
67
+ end
68
+
69
+ # gets the number of assets for a type
70
+ def self.count_by_type(type)
71
+ Little.get(:assets, {:type => type}, nil, 'count')
72
+ end
73
+ end
74
+ end
data/lib/little/sender.rb CHANGED
@@ -11,20 +11,20 @@ module Little
11
11
  @configuration = configuration
12
12
  end
13
13
 
14
- def get_request(resource, data, signature_keys)
15
- query_request(:get, resource, data, signature_keys)
14
+ def get_request(resource, data, signature_keys, url)
15
+ query_request(:get, resource, data, signature_keys, url)
16
16
  end
17
17
 
18
- def delete_request(resource, data, signature_keys)
19
- query_request(:delete, resource, data, signature_keys)
18
+ def delete_request(resource, data, signature_keys, url)
19
+ query_request(:delete, resource, data, signature_keys, url)
20
20
  end
21
21
 
22
- def post_request(resource, data, signature_keys)
23
- form_request(:post, resource, data, signature_keys)
22
+ def post_request(resource, data, signature_keys, url)
23
+ form_request(:post, resource, data, signature_keys, url)
24
24
  end
25
25
 
26
- def put_request(resource, data, signature_keys)
27
- form_request(:put, resource, data, signature_keys)
26
+ def put_request(resource, data, signature_keys, url)
27
+ form_request(:put, resource, data, signature_keys, url)
28
28
  end
29
29
 
30
30
  private
@@ -47,22 +47,27 @@ module Little
47
47
  URI.encode_www_form(data)
48
48
  end
49
49
 
50
- def query_request(method, resource, data, signature_keys)
50
+ def query_request(method, resource, data, signature_keys, url)
51
51
  response = nil
52
52
  begin
53
53
  http = create_http(resource, data, signature_keys)
54
- response = http.send(method, "#{BASE_URL}#{resource}?#{url_encode(data)}", HEADERS)
54
+ full_url = "#{BASE_URL}#{resource}"
55
+ full_url += "/#{url}" unless url.nil?
56
+ full_url += "?#{url_encode(data)}"
57
+ response = http.send(method, full_url, HEADERS)
55
58
  rescue => e
56
59
  raise Little::Error.new(-1, e)
57
60
  end
58
61
  handle_response(response) unless response.nil?
59
62
  end
60
63
 
61
- def form_request(method, resource, data, signature_keys)
64
+ def form_request(method, resource, data, signature_keys, url)
62
65
  response = nil
63
66
  begin
64
67
  http = create_http(resource, data, signature_keys)
65
- response = http.send(method, BASE_URL + resource.to_s, url_encode(data), HEADERS)
68
+ full_url = "#{BASE_URL}#{resource}"
69
+ full_url += "/#{url}" unless url.nil?
70
+ response = http.send(method, full_url, url_encode(data), HEADERS)
66
71
  rescue => e
67
72
  raise Little::Error.new(-2, e)
68
73
  end
data/lib/little/tag.rb CHANGED
@@ -10,12 +10,12 @@ module Little
10
10
  def self.add(user, asset, type, share, data = nil)
11
11
  d = {:user => user, :asset => asset, :share => share, :type => type}
12
12
  d[:data] = data if data
13
- Little.post(:tags, d, [:user])
13
+ Little.post(:tags, d, [:user, :asset, :type])
14
14
  end
15
15
 
16
16
  # generates a signature for adding a tag (useful when using the javascript library)
17
- def self.sign_add(user)
18
- Little.sign(:tags, {:user => user})
17
+ def self.sign_add(user, asset, type)
18
+ Little.sign(:tags, {:user => user, :asset => asset, :type => type})
19
19
  end
20
20
 
21
21
  # removes a tag for a user to an asset
@@ -42,46 +42,46 @@ module Little
42
42
  end
43
43
 
44
44
  # gets all the tags for a user
45
- def self.user_tags(user, page, records, shared_only = true)
45
+ def self.for_user(user, page, records, shared_only = true)
46
46
  data = {:user => user, :page => page, :records => records}
47
47
  Little.get(:tags, data, shared_only ? nil : [:user])
48
48
  end
49
49
 
50
50
  # gets all the assets liked for a user for a specific asset
51
- def self.user_tags_for_asset(user, asset, type, page, records, shared_only = true)
51
+ def self.for_user_and_asset(user, asset, type, page, records, shared_only = true)
52
52
  data = {:user => user, :asset => asset, :type => type, :page => page, :records => records}
53
53
  Little.get(:tags, data, shared_only ? nil : [:user, :asset, :type])
54
54
  end
55
55
 
56
56
  # gets the number of tags for a user
57
- def self.user_tag_count(user, shared_only = true)
57
+ def self.for_user_count(user, shared_only = true)
58
58
  data = {:user => user, :count => true}
59
59
  Little.get(:tags, data, shared_only ? nil : [:user])
60
60
  end
61
61
 
62
62
  # gets all the of tags for a user for a specific asset
63
- def self.user_tag_for_asset_count(user, asset, type, shared_only = true)
63
+ def self.for_user_and_asset_count(user, asset, type, shared_only = true)
64
64
  data = {:user => user, :asset => asset, :type => type, :count => true}
65
65
  Little.get(:tags, data, shared_only ? nil : [:user, :asset, :type])
66
66
  end
67
67
 
68
68
  # generates a signature for getting a tags for a user (useful when using the javascript library)
69
- def self.sign_user_tags(user)
69
+ def self.sign_for_user(user)
70
70
  Little.sign(:tags, {:user => user})
71
71
  end
72
72
 
73
73
  # generates a signature for getting a for a user for a specific asset (useful when using the javascript library)
74
- def self.sign_user_tags_for_asset(user, asset, type)
74
+ def self.sign_for_user_and_asset(user, asset, type)
75
75
  Little.sign(:tags, {:user => user, :asset => asset, :type => type})
76
76
  end
77
77
 
78
78
  # gets all the shared tags for a specific asset
79
- def self.asset_tags(asset, type, page, records)
79
+ def self.for_asset(asset, type, page, records)
80
80
  Little.get(:tags, {:asset => asset, :type => type, :page => page, :records => records})
81
81
  end
82
82
 
83
83
  # gets the number of shared tags for a specific asset
84
- def self.asset_tag_count(asset, type)
84
+ def self.for_asset_count(asset, type)
85
85
  Little.get(:tags, {:asset => asset, :type => type, :count => true})
86
86
  end
87
87
  end
@@ -1,3 +1,3 @@
1
1
  module Little
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
data/lib/little.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'little/version'
2
2
  require 'little/error'
3
3
  require 'little/configuration'
4
- require 'little/like'
4
+ require 'little/asset'
5
5
  require 'little/tag'
6
6
  require 'little/attempt'
7
7
  require 'little/notification'
@@ -36,22 +36,25 @@ module Little #:nodoc
36
36
  end
37
37
 
38
38
  # Issues a POST request to the little.io service
39
- def post(resource, data, signature_keys)
40
- sender.post_request(resource, data, signature_keys)
39
+ # @param [String, Symbol] resource name of the resource (:tags, :likes, ...)
40
+ # @param [Hash] data data to send to the service
41
+ # @param [Array] signature_keys keys of the data used for signing (optional)
42
+ def post(resource, data, signature_keys, url = nil)
43
+ sender.post_request(resource, data, signature_keys, url)
41
44
  end
42
45
  # Issues a DELETE request to the little.io service
43
46
  # @param [String, Symbol] resource name of the resource (:tags, :likes, ...)
44
47
  # @param [Hash] data data to send to the service
45
48
  # @param [Array] signature_keys keys of the data used for signing (optional)
46
- def delete(resource, data, signature_keys)
47
- sender.delete_request(resource, data, signature_keys)
49
+ def delete(resource, data, signature_keys, url = nil)
50
+ sender.delete_request(resource, data, signature_keys, url)
48
51
  end
49
52
  # Issues a GET request to the little.io service
50
53
  # @param [String, Symbol] resource name of the resource (:tags, :likes, ...)
51
54
  # @param [Hash] data data to send to the service
52
55
  # @param [Array] signature_keys keys of the data used for signing (optional)
53
- def get(resource, data, signature_keys = nil)
54
- sender.get_request(resource, data, signature_keys)
56
+ def get(resource, data, signature_keys = nil, url = nil)
57
+ sender.get_request(resource, data, signature_keys, url)
55
58
  end
56
59
  end
57
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: little
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-30 00:00:00.000000000 Z
12
+ date: 2011-12-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
16
- requirement: &70251397271620 !ruby/object:Gem::Requirement
16
+ requirement: &70247362540800 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.2.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70251397271620
24
+ version_requirements: *70247362540800
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &70251397269580 !ruby/object:Gem::Requirement
27
+ requirement: &70247362539500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70251397269580
35
+ version_requirements: *70247362539500
36
36
  description:
37
37
  email:
38
38
  - help@little.io
@@ -40,10 +40,10 @@ executables: []
40
40
  extensions: []
41
41
  extra_rdoc_files: []
42
42
  files:
43
+ - lib/little/asset.rb
43
44
  - lib/little/attempt.rb
44
45
  - lib/little/configuration.rb
45
46
  - lib/little/error.rb
46
- - lib/little/like.rb
47
47
  - lib/little/notification.rb
48
48
  - lib/little/sender.rb
49
49
  - lib/little/tag.rb
data/lib/little/like.rb DELETED
@@ -1,66 +0,0 @@
1
- module Little
2
- # add, delete and retrieve likes by user or assets
3
- class Like
4
- # adds a like for a user to an asset
5
- # @param [String] user the user who likes the asset
6
- # @param [String] asset the asset being liked
7
- # @param [int] type the type of asset
8
- def self.add(user, asset, type)
9
- Little.post(:likes, {:user => user, :asset => asset, :type => type}, [:user])
10
- end
11
-
12
- # generates a signature for adding a like (useful when using the javascript library)
13
- def self.sign_add(user)
14
- Little.sign(:likes, {:user => user})
15
- end
16
-
17
- # removes a like for a user to an asset
18
- # @param [String] user the user who no longer likes the asset
19
- # @param [String] asset the asset being unliked
20
- # @param [int] type the type of asset
21
- def self.delete(user, asset, type)
22
- Little.delete(:likes, {:user => user, :asset => asset, :type => type}, [:user, :asset, :type])
23
- end
24
-
25
- # generates a signature for deleting a like (useful when using the javascript library)
26
- # @param [String] user the user who no longr likes the asset
27
- def self.sign_delete(user, asset, type)
28
- Little.sign(:likes, {:user => user, :asset => asset, :type => type})
29
- end
30
-
31
- # does the user like the asset
32
- def self.user_likes_asset(user, asset, type)
33
- Little.get(:likes, {:user => user, :asset => asset, :type => type})
34
- end
35
-
36
- # gets all the assets liked by the user
37
- def self.user_likes(user, page, records)
38
- Little.get(:likes, {:user => user, :page => page, :records => records})
39
- end
40
-
41
- # gets the number of assets the user likes
42
- def self.user_like_count(user)
43
- Little.get(:likes, {:user => user, :count => true})
44
- end
45
-
46
- # gets all the users who like an asset
47
- def self.asset_liked_by(asset, type, page, records)
48
- Little.get(:likes, {:asset => asset, :type => type, :page => page, :records => records})
49
- end
50
-
51
- # gets the number of users who like an asset
52
- def self.asset_like_count(asset, type)
53
- Little.get(:likes, {:asset => asset, :type => type, :count => true})
54
- end
55
-
56
- # gets the assets liked by type, ordered by number of likes (desc)
57
- def self.by_type(type, page, records)
58
- Little.get(:likes, {:type => type, :page => page, :records => records})
59
- end
60
-
61
- # gets the number of assets for a type
62
- def self.by_type_count(type)
63
- Little.get(:likes, {:type => type, :count => true})
64
- end
65
- end
66
- end