disqussion 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- disqussion (0.0.2)
4
+ disqussion (0.0.4)
5
5
  faraday (~> 0.6.1)
6
6
  faraday_middleware (~> 0.6.3)
7
7
  hashie (~> 1.0.0)
@@ -12,7 +12,7 @@ GEM
12
12
  remote: http://rubygems.org/
13
13
  specs:
14
14
  ZenTest (4.5.0)
15
- addressable (2.2.5)
15
+ addressable (2.2.6)
16
16
  archive-tar-minitar (0.5.2)
17
17
  columnize (0.3.2)
18
18
  crack (0.1.8)
@@ -36,14 +36,14 @@ GEM
36
36
  rake (0.8.7)
37
37
  rash (0.3.0)
38
38
  hashie (~> 1.0.0)
39
- rspec (2.5.0)
40
- rspec-core (~> 2.5.0)
41
- rspec-expectations (~> 2.5.0)
42
- rspec-mocks (~> 2.5.0)
43
- rspec-core (2.5.2)
44
- rspec-expectations (2.5.0)
39
+ rspec (2.6.0)
40
+ rspec-core (~> 2.6.0)
41
+ rspec-expectations (~> 2.6.0)
42
+ rspec-mocks (~> 2.6.0)
43
+ rspec-core (2.6.0)
44
+ rspec-expectations (2.6.0)
45
45
  diff-lcs (~> 1.1.2)
46
- rspec-mocks (2.5.0)
46
+ rspec-mocks (2.6.0)
47
47
  ruby-debug-base19 (0.11.25)
48
48
  columnize (>= 0.3.1)
49
49
  linecache19 (>= 0.5.11)
@@ -56,12 +56,12 @@ GEM
56
56
  archive-tar-minitar (>= 0.5.2)
57
57
  simplecov (0.4.2)
58
58
  simplecov-html (~> 0.4.4)
59
- simplecov-html (0.4.4)
59
+ simplecov-html (0.4.5)
60
60
  syntax (1.0.0)
61
- webmock (1.6.2)
62
- addressable (>= 2.2.2)
61
+ webmock (1.6.4)
62
+ addressable (~> 2.2, > 2.2.5)
63
63
  crack (>= 0.1.7)
64
- yard (0.6.8)
64
+ yard (0.7.1)
65
65
 
66
66
  PLATFORMS
67
67
  ruby
data/HISTORY.mkd CHANGED
@@ -1,6 +1,10 @@
1
1
  HISTORY
2
2
  =======
3
3
 
4
+ 0.0.4 - May 19, 2011
5
+ ----------------------
6
+ * Added following features: Categories, Exports, Imports, Reports
7
+
4
8
  0.0.3 - May 18, 2011
5
9
  ----------------------
6
10
  * Added following missing features: Users#listActiveForums, Users#listForums, Users#listPosts, Users#unfollow, Forums#listMostLikedUsers, Forums#listUsers
data/README.mkd CHANGED
@@ -2,8 +2,6 @@ The Disqussion Ruby Gem
2
2
  ====================
3
3
  A Ruby wrapper for the Disqus API
4
4
 
5
- IMPORTANT: This gem is non-usable for production, beta version expected on May 9th 2011
6
-
7
5
  Installation
8
6
  ------------
9
7
  ``` sh
@@ -22,12 +20,14 @@ Continuous Integration
22
20
  ----------------------
23
21
  [![Build Status](http://travis-ci.org/jeremyvdw/disqussion.png)](http://travis-ci.org/jeremyvdw/disqussion)
24
22
 
25
- What's in 0.0.3?
23
+ What's in 0.0.4?
26
24
  ----------------
27
25
 
28
- Disqussion currently covers *only* stable Disqus API for: applications, forums, posts, reactions, threads and users features.
26
+ Disqussion currently covers *only* stable Disqus API features for: applications, categories, exports, forums, imports, posts, reactions, reports, threads and users.
27
+
28
+ Missing following features: blacklists and whitelists.
29
29
 
30
- The error classes are consistent with [Disqus's documented response codes](http://disqus.com/api/docs/errors/).
30
+ The error classes are consistent with [Disqus documented response codes](http://disqus.com/api/docs/errors/).
31
31
  Error details from Disqus API are encapsulated in HTTP response.
32
32
 
33
33
  <table>
@@ -1,4 +1,115 @@
1
1
  module Disqussion
2
2
  class Categories < Client
3
+ # Creates a new category.
4
+ # @accessibility: public key, secret key
5
+ # @methods: POST
6
+ # @format: json, jsonp
7
+ # @authenticated: false
8
+ # @limited: false
9
+ # @param forum [String] Looks up a forum by ID (aka short name)
10
+ # @param title [String] Maximum length of 50
11
+ # @param options [Hash] A customizable set of options.
12
+ # @option options [String] :default. Defaults to false.
13
+ # @return [Hashie::Rash] New category infos
14
+ # @example Creates a new category "My category" in forum "the88"
15
+ # Disqussion::Client.categories.create("the88", "My category")
16
+ # @see: http://disqus.com/api/3.0/categories/create.json
17
+ def create(*args)
18
+ options = args.last.is_a?(Hash) ? args.pop : {}
19
+ if args.size == 2
20
+ options.merge!(:forum => args[0], :title => args[1])
21
+ response = post('categories/create', options)
22
+ else
23
+ puts "#{Kernel.caller.first}: categories.create expects 2 arguments: forum, title"
24
+ end
25
+ end
26
+
27
+ # Returns category details.
28
+ # @accessibility: public key, secret key
29
+ # @methods: GET
30
+ # @format: json, jsonp
31
+ # @authenticated: false
32
+ # @limited: false
33
+ # @param category [Integer] Looks up a category by ID.
34
+ # @return [Hashie::Rash] Details on the requested category.
35
+ # @example
36
+ # Disqussion::Client.categories.details(19122)
37
+ # @see: http://disqus.com/api/3.0/categories/details.json
38
+ def details(*args)
39
+ options = args.last.is_a?(Hash) ? args.pop : {}
40
+ options[:category] = args.first
41
+ response = get('categories/details', options)
42
+ end
43
+
44
+ # Returns a list of categories within a forum.
45
+ # @accessibility: public key, secret key
46
+ # @methods: GET
47
+ # @format: json, jsonp
48
+ # @authenticated: false
49
+ # @limited: false
50
+ # @return [Hashie::Rash] Details on the requested list of categories.
51
+ # @param options [Hash] A customizable set of options.
52
+ # @option options [Array, String] :forum allow multiple. Defaults to null. Looks up a forum by ID (aka short name)
53
+ # @option options [Datetime, Timestamp] :since. Unix timestamp (or ISO datetime standard). Defaults to null
54
+ # @option options [Integer] :cursor. Defaults to null
55
+ # @option options [Integer] :limit. Defaults to 25. Maximum length of 100
56
+ # @option options [String] :order. Defaults to "asc". Choices: asc, desc
57
+ # @example Return list of categories within forum 'myforum'
58
+ # Disqussion::Client.categories.list("myforum", {:cursor => 10, :limit => 10, :order => 'asc'})
59
+ # @see: http://disqus.com/api/3.0/categories/list.json
60
+ def list(*args)
61
+ options = args.last.is_a?(Hash) ? args.pop : {}
62
+ response = get('categories/list', options)
63
+ end
64
+
65
+ # Returns a list of posts within a category.
66
+ # @accessibility: public key, secret key
67
+ # @methods: GET
68
+ # @format: json, jsonp, rss
69
+ # @authenticated: false
70
+ # @limited: false
71
+ # @param forum [Integer] Category ID.
72
+ # @return [Hashie::Rash] Details on the requested list of posts.
73
+ # @param options [Hash] A customizable set of options.
74
+ # @option options [Datetime, Timestamp] :since. Unix timestamp (or ISO datetime standard). Defaults to null.
75
+ # @option options [Integer, String] :related. Allows multiple. Defaults to []. You may specify relations to include with your response. Choices: forum, thread.
76
+ # @option options [Integer] :cursor. Defaults to null.
77
+ # @option options [Integer] :limit. Defaults to 25. Maximum length of 100
78
+ # @option options [Integer] :query. Defaults to null.
79
+ # @option options [String, Array] :include. allows multiple. Defaults to ["approved"]. Choices: unapproved, approved, spam, deleted, flagged.
80
+ # @option options [String] :order. Defaults to "asc". Choices: asc, desc.
81
+ # @example Return list of posts within category 827231
82
+ # Disqussion::Client.categories.listPosts(827231, {:cursor => 10, :limit => 10, :order => 'asc'})
83
+ # @see: http://disqus.com/api/3.0/categories/listPosts.json
84
+ def listPosts(*args)
85
+ options = args.last.is_a?(Hash) ? args.pop : {}
86
+ options[:category] = args.first
87
+ response = get('categories/listPosts', options)
88
+ end
89
+
90
+ # Returns a list of threads within a category sorted by the date created.
91
+ # @accessibility: public key, secret key
92
+ # @methods: GET
93
+ # @format: json, jsonp, rss
94
+ # @authenticated: false
95
+ # @limited: false
96
+ # @param forum [Integer] Category ID.
97
+ # @return [Hashie::Rash] Details on the requested list of threads.
98
+ # @param options [Hash] A customizable set of options.
99
+ # @option options [Datetime, Timestamp] :since. Unix timestamp (or ISO datetime standard). Defaults to null.
100
+ # @option options [Integer, String] :related. Allows multiple. Defaults to []. You may specify relations to include with your response. Choices: forum, thread.
101
+ # @option options [Integer] :cursor. Defaults to null.
102
+ # @option options [Integer] :limit. Defaults to 25. Maximum length of 100
103
+ # @option options [Integer] :query. Defaults to null.
104
+ # @option options [String, Array] :include. allows multiple. Defaults to ["approved"]. Choices: unapproved, approved, spam, deleted, flagged.
105
+ # @option options [String] :order. Defaults to "asc". Choices: asc, desc.
106
+ # @example Return list of threads within category 827231
107
+ # Disqussion::Client.categories.listThreads(827231, {:cursor => 10, :limit => 10, :order => 'asc'})
108
+ # @see: http://disqus.com/api/3.0/categories/listThreads.json
109
+ def listThreads(*args)
110
+ options = args.last.is_a?(Hash) ? args.pop : {}
111
+ options[:category] = args.first
112
+ response = get('categories/listThreads', options)
113
+ end
3
114
  end
4
- end
115
+ end
@@ -1,4 +1,26 @@
1
1
  module Disqussion
2
2
  class Exports < Client
3
+ # Export a forum
4
+ # @accessibility: public key, secret key
5
+ # @methods: POST
6
+ # @format: json, jsonp
7
+ # @authenticated: true
8
+ # @limited: false
9
+ # @param forum [String] Forum short name (aka forum id).
10
+ # @return [Hashie::Rash] Export infos
11
+ # @param options [Hash] A customizable set of options.
12
+ # @option options [String] :format. Defaults to "xml". Choices: xml, xml-old
13
+ # @example Export forum "the88"
14
+ # Disqussion::Client.exports.exportForum("the88")
15
+ # @see: http://disqus.com/api/3.0/exports/exportForum.json
16
+ def exportForum(*args)
17
+ options = args.last.is_a?(Hash) ? args.pop : {}
18
+ if args.size == 1
19
+ options.merge!(:forum => args[0])
20
+ response = post('exports/exportForum', options)
21
+ else
22
+ puts "#{Kernel.caller.first}: exports.exportForum expects an arguments: forum"
23
+ end
24
+ end
3
25
  end
4
26
  end
@@ -53,9 +53,9 @@ module Disqussion
53
53
  # @option options [Integer] :cursor. Defaults to null
54
54
  # @option options [Integer] :limit. Defaults to 25. Maximum length of 100
55
55
  # @option options [String] :order. Defaults to "asc". Choices: asc, desc
56
- # @example Return extended information for forum 'myforum'
57
- # Disqussion::Client.forums.listCategories("myforum", {:cursor => 10, :limit => 10, :order => 'asc'})
58
- # @see: http://disqus.com/api/3.0/forums/details.json
56
+ # @example Return list of categories within forum 'myforum'
57
+ # Disqussion::Client.categories.list("myforum", {:cursor => 10, :limit => 10, :order => 'asc'})
58
+ # @see: http://disqus.com/api/3.0/forums/listCategories.json
59
59
  def listCategories(*args)
60
60
  options = args.last.is_a?(Hash) ? args.pop : {}
61
61
  options[:forum] = args.first
@@ -1,4 +1,39 @@
1
1
  module Disqussion
2
2
  class Imports < Client
3
+ #
4
+ # @accessibility: public key, secret key
5
+ # @methods: GET
6
+ # @format: json, jsonp
7
+ # @authenticated: true
8
+ # @limited: false
9
+ # @param group [Integer] group ID
10
+ # @return [Hashie::Rash] Details on the requested import.
11
+ # @example
12
+ # Disqussion::Client.imports.details(987)
13
+ # @see: http://disqus.com/api/3.0/imports/details.json
14
+ def details(*args)
15
+ options = args.last.is_a?(Hash) ? args.pop : {}
16
+ options[:group] = args.first
17
+ response = get('imports/details', options)
18
+ end
19
+
20
+ # Returns list of previous imports.
21
+ # @accessibility: public key, secret key
22
+ # @methods: GET
23
+ # @format: json, jsonp
24
+ # @authenticated: true
25
+ # @limited: false
26
+ # @param forum [String] Allows multiple. Looks up a forum by ID (aka short name).
27
+ # @return [Hashie::Rash] Details on the requested category.
28
+ # @param options [Hash] A customizable set of options.
29
+ # @option options [Integer] :cursor. Defaults to null.
30
+ # @example
31
+ # Disqussion::Client.imports.list("the88")
32
+ # @see: http://disqus.com/api/3.0/imports/list.json
33
+ def list(*args)
34
+ options = args.last.is_a?(Hash) ? args.pop : {}
35
+ options[:forum] = args.first
36
+ response = get('imports/list', options)
37
+ end
3
38
  end
4
- end
39
+ end
@@ -1,4 +1,79 @@
1
1
  module Disqussion
2
2
  class Reports < Client
3
+ # Returns report on domains
4
+ # @accessibility: public key, secret key
5
+ # @methods: GET
6
+ # @format: json, jsonp
7
+ # @authenticated: false
8
+ # @limited: false
9
+ # @param options [Hash] A customizable set of options.
10
+ # @option options [Integer] :limit. Defaults to 25. Maximum length of 100.
11
+ # @option options [Integer] :page. Defaults to 0. Maximum length of 10.
12
+ # @option options [Array, String] :forum. Allow multiple. Defaults to null. Looks up a forum by ID (aka short name).
13
+ # @return [Hashie::Rash] Returns report
14
+ # @example Return report on comments by domains usage
15
+ # Disqussion::Client.reports.domains
16
+ # @see: http://disqus.com/api/3.0/reports/domains.json
17
+ def domains(*args)
18
+ options = args.last.is_a?(Hash) ? args.pop : {}
19
+ response = get('reports/domains', options)
20
+ end
21
+
22
+ # Returns report on ips
23
+ # @accessibility: public key, secret key
24
+ # @methods: GET
25
+ # @format: json, jsonp
26
+ # @authenticated: false
27
+ # @limited: false
28
+ # @param options [Hash] A customizable set of options.
29
+ # @option options [Integer] :limit. Defaults to 25. Maximum length of 100.
30
+ # @option options [Integer] :page. Defaults to 0. Maximum length of 10.
31
+ # @option options [Array, String] :forum. Allow multiple. Defaults to null. Looks up a forum by ID (aka short name).
32
+ # @return [Hashie::Rash] Returns report
33
+ # @example Return report on comments by IPs usage
34
+ # Disqussion::Client.reports.ips
35
+ # @see: http://disqus.com/api/3.0/reports/ips.json
36
+ def ips(*args)
37
+ options = args.last.is_a?(Hash) ? args.pop : {}
38
+ response = get('reports/ips', options)
39
+ end
40
+
41
+ # Returns report on threads
42
+ # @accessibility: public key, secret key
43
+ # @methods: GET
44
+ # @format: json, jsonp
45
+ # @authenticated: false
46
+ # @limited: false
47
+ # @param options [Hash] A customizable set of options.
48
+ # @option options [Integer] :limit. Defaults to 25. Maximum length of 100.
49
+ # @option options [Integer] :page. Defaults to 0. Maximum length of 10.
50
+ # @option options [Array, String] :forum. Allow multiple. Defaults to null. Looks up a forum by ID (aka short name).
51
+ # @return [Hashie::Rash] Returns report
52
+ # @example Return report on comments by threads
53
+ # Disqussion::Client.reports.threads
54
+ # @see: http://disqus.com/api/3.0/reports/threads.json
55
+ def threads(*args)
56
+ options = args.last.is_a?(Hash) ? args.pop : {}
57
+ response = get('reports/threads', options)
58
+ end
59
+
60
+ # Returns report on users
61
+ # @accessibility: public key, secret key
62
+ # @methods: GET
63
+ # @format: json, jsonp
64
+ # @authenticated: false
65
+ # @limited: false
66
+ # @param options [Hash] A customizable set of options.
67
+ # @option options [Integer] :limit. Defaults to 25. Maximum length of 100.
68
+ # @option options [Integer] :page. Defaults to 0. Maximum length of 10.
69
+ # @option options [Array, String] :forum. Allow multiple. Defaults to null. Looks up a forum by ID (aka short name).
70
+ # @return [Hashie::Rash] Returns report
71
+ # @example Return report on comments by users
72
+ # Disqussion::Client.reports.users
73
+ # @see: http://disqus.com/api/3.0/reports/users.json
74
+ def users(*args)
75
+ options = args.last.is_a?(Hash) ? args.pop : {}
76
+ response = get('reports/users', options)
77
+ end
3
78
  end
4
79
  end
@@ -1,3 +1,3 @@
1
1
  module Disqussion
2
- VERSION = '0.0.3'.freeze unless defined?(::Disqussion::VERSION)
2
+ VERSION = '0.0.4'.freeze unless defined?(::Disqussion::VERSION)
3
3
  end