little 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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