discourse_api 0.1.2 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/LICENSE.txt +1 -1
- data/README.md +15 -8
- data/Rakefile +1 -1
- data/discourse_api.gemspec +8 -8
- data/examples/{post_topic.rb → create_topic.rb} +2 -4
- data/examples/disposable_invite_tokens.rb +19 -0
- data/examples/example.rb +6 -4
- data/examples/invite_users.rb +6 -8
- data/examples/topic_lists.rb +3 -5
- data/examples/update_user.rb +8 -7
- data/lib/discourse_api.rb +1 -1
- data/lib/discourse_api/api/categories.rb +6 -1
- data/lib/discourse_api/api/invite.rb +13 -0
- data/lib/discourse_api/api/search.rb +1 -1
- data/lib/discourse_api/api/topics.rb +3 -9
- data/lib/discourse_api/api/users.rb +3 -7
- data/lib/discourse_api/client.rb +7 -3
- data/lib/discourse_api/error.rb +1 -1
- data/lib/discourse_api/version.rb +1 -1
- data/spec/discourse_api/api/categories_spec.rb +21 -4
- data/spec/discourse_api/api/search_spec.rb +8 -4
- data/spec/discourse_api/api/topics_spec.rb +28 -29
- data/spec/discourse_api/api/users_spec.rb +20 -16
- data/spec/discourse_api/client_spec.rb +20 -14
- data/spec/fixtures/category_latest_topics.json +1 -0
- data/spec/fixtures/user.json +1 -1
- data/spec/fixtures/user_create_success.json +2 -2
- data/spec/spec_helper.rb +2 -2
- metadata +40 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b27fccecba3357cb727bb0b241e29613ddf4d6c
|
4
|
+
data.tar.gz: 9eff8ed55d066031a9ca7b875ecbae247c8f54b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dc325485d107e56f286baa033ffbefaf646c32611cfbea7b285a7d628445be7d6e900d7a0626516f6d1fb428d6e8ac6363803349845f51cebba0dbf66c846df
|
7
|
+
data.tar.gz: cf520bd3e1baba478c6f4ad7ece1f3419dfccdfdb8fdf6d54cec01a3a1433d06bbf254656b457bfb39e14090e329b05e7a5923518b90af185d105f7065a789e8
|
data/CHANGELOG.md
ADDED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -31,18 +31,18 @@ few endpoints available:
|
|
31
31
|
client = DiscourseApi::Client.new("http://try.discourse.org")
|
32
32
|
|
33
33
|
# Topic endpoints
|
34
|
-
client.latest_topics
|
35
|
-
client.hot_topics
|
36
|
-
client.new_topics
|
37
|
-
client.topics_by("sam")
|
38
|
-
client.topic(57)
|
34
|
+
client.latest_topics #=> Gets a list of the latest topics
|
35
|
+
client.hot_topics #=> Gets a list of hot topics
|
36
|
+
client.new_topics #=> Gets a list of new topics
|
37
|
+
client.topics_by("sam") #=> Gets a list of topics created by user "sam"
|
38
|
+
client.topic(57) #=> Gets the topic with id 57
|
39
39
|
|
40
40
|
# Search endpoint
|
41
|
-
client.search("sandbox")
|
41
|
+
client.search("sandbox") #=> Gets a list of topics that match "sandbox"
|
42
42
|
|
43
43
|
# Categories endpoint
|
44
|
-
client.categories
|
45
|
-
|
44
|
+
client.categories #=> Gets a list of categories
|
45
|
+
client.category_latest_posts("category-slug") #=> Gets a list of latest posts in a category
|
46
46
|
```
|
47
47
|
|
48
48
|
|
@@ -53,3 +53,10 @@ client.categories #=> Gets a list of categories
|
|
53
53
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
54
54
|
4. Push to the branch (`git push origin my-new-feature`)
|
55
55
|
5. Create new Pull Request
|
56
|
+
|
57
|
+
## Testing
|
58
|
+
|
59
|
+
1. Install discourse locally
|
60
|
+
2. Inside of your discourse directory, run: `bundle exec rake db:api_test_seed`
|
61
|
+
3. Start discourse: `bundle exec rails s`
|
62
|
+
4. Inside of your discourse_api directory, run: `bundle exec rspec spec/`
|
data/Rakefile
CHANGED
data/discourse_api.gemspec
CHANGED
@@ -18,14 +18,14 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "faraday", "
|
21
|
+
spec.add_dependency "faraday", "0.9.0"
|
22
22
|
spec.add_dependency "faraday_middleware", "~> 0.9"
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
|
-
spec.add_development_dependency "rake"
|
25
|
-
spec.add_development_dependency "rspec"
|
26
|
-
spec.add_development_dependency "webmock"
|
27
|
-
spec.add_development_dependency "guard-rspec"
|
28
|
-
spec.add_development_dependency "guard"
|
29
|
-
spec.add_development_dependency "rb-inotify"
|
30
|
-
spec.add_development_dependency "simplecov"
|
24
|
+
spec.add_development_dependency "rake", "10.3.2"
|
25
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
26
|
+
spec.add_development_dependency "webmock", "~> 1.18"
|
27
|
+
spec.add_development_dependency "guard-rspec", "~> 4.3"
|
28
|
+
spec.add_development_dependency "guard", "~> 2.6"
|
29
|
+
spec.add_development_dependency "rb-inotify", "~> 0.9"
|
30
|
+
spec.add_development_dependency "simplecov", "~> 0.9"
|
31
31
|
end
|
@@ -1,13 +1,11 @@
|
|
1
|
-
# require 'discourse_api'
|
2
|
-
|
3
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
4
2
|
require File.expand_path('../../lib/discourse_api', __FILE__)
|
5
3
|
|
6
|
-
client = DiscourseApi::Client.new("localhost"
|
4
|
+
client = DiscourseApi::Client.new("http://localhost:3000")
|
7
5
|
client.api_key = "YOUR_API_KEY"
|
8
6
|
client.api_username = "YOUR_USERNAME"
|
9
7
|
|
10
|
-
client.
|
8
|
+
client.create_topic(
|
11
9
|
category: "Boing Boing",
|
12
10
|
skip_validations: true,
|
13
11
|
auto_track: false,
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
4
|
+
require File.expand_path('../../lib/discourse_api', __FILE__)
|
5
|
+
|
6
|
+
client = DiscourseApi::Client.new("http://localhost:3000")
|
7
|
+
client.api_key = "YOUR_API_KEY"
|
8
|
+
client.api_username = "YOUR_USERNAME"
|
9
|
+
|
10
|
+
# fetch email-less invite tokens
|
11
|
+
invite_tokens = client.disposable_tokens(username: "eviltrout", quantity: 5, group_names: "security,support")
|
12
|
+
invite_tokens_array = invite_tokens.body
|
13
|
+
|
14
|
+
# write to CSV file
|
15
|
+
CSV.open(File.expand_path("../invite_tokens.csv", __FILE__), "w") do |csv|
|
16
|
+
invite_tokens_array.each do |value|
|
17
|
+
csv << [value]
|
18
|
+
end
|
19
|
+
end
|
data/examples/example.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
# require 'discourse_api'
|
2
|
-
|
3
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
4
2
|
require File.expand_path('../../lib/discourse_api', __FILE__)
|
5
3
|
|
6
|
-
client = DiscourseApi::Client.new("http://localhost:3000"
|
7
|
-
|
4
|
+
client = DiscourseApi::Client.new("http://localhost:3000")
|
5
|
+
client.api_key = "YOUR_API_KEY"
|
6
|
+
client.api_username = "YOUR_USERNAME"
|
7
|
+
|
8
|
+
# get latest topics
|
9
|
+
puts client.latest_topics
|
data/examples/invite_users.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
|
-
# require 'discourse_api'
|
2
|
-
|
3
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
4
2
|
require File.expand_path('../../lib/discourse_api', __FILE__)
|
5
3
|
|
6
|
-
client = DiscourseApi::Client.new("localhost"
|
7
|
-
client.api_key = "
|
8
|
-
client.api_username = "
|
4
|
+
client = DiscourseApi::Client.new("http://localhost:3000")
|
5
|
+
client.api_key = "YOUR_API_KEY"
|
6
|
+
client.api_username = "YOUR_USERNAME"
|
9
7
|
|
10
|
-
|
8
|
+
# invite to a topic
|
9
|
+
client.invite_user_to_topic(email: "foo@bar.com", topic_id: 1)
|
11
10
|
|
12
11
|
# if the user is an admin you may invite to a group as well
|
13
|
-
client.
|
14
|
-
client.topic_invite_user(topic_id: 1, email: "bob@bob.com", group_names: "bugs,cars,testers")
|
12
|
+
client.invite_user_to_topic(email: "foo@bar.com", topic_id: 1, group_ids: "1,2,3")
|
data/examples/topic_lists.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
# require 'discourse_api'
|
2
|
-
|
3
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
4
2
|
require File.expand_path('../../lib/discourse_api', __FILE__)
|
5
3
|
|
6
|
-
client = DiscourseApi::Client.new("localhost"
|
4
|
+
client = DiscourseApi::Client.new("http://localhost:3000")
|
7
5
|
client.api_key = "YOUR_API_KEY"
|
8
6
|
client.api_username = "YOUR_USERNAME"
|
9
7
|
|
8
|
+
# get latest topics
|
10
9
|
puts client.latest_topics({})
|
11
|
-
|
10
|
+
# get all categories
|
12
11
|
puts client.categories({})
|
13
|
-
|
data/examples/update_user.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# require 'discourse_api'
|
2
|
-
|
3
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
4
2
|
require File.expand_path('../../lib/discourse_api', __FILE__)
|
5
3
|
|
@@ -7,8 +5,11 @@ client = DiscourseApi::Client.new("localhost", 3000)
|
|
7
5
|
client.api_key = "YOUR_API_KEY"
|
8
6
|
client.api_username = "YOUR_USERNAME"
|
9
7
|
|
10
|
-
|
11
|
-
puts client.
|
12
|
-
|
13
|
-
puts client.
|
14
|
-
|
8
|
+
# update username from "robin" to "batman"
|
9
|
+
puts client.update_username("robin", "batman")
|
10
|
+
# update name of user whose username is "batman"
|
11
|
+
puts client.update_user("batman", name: "Bruce Wayne")
|
12
|
+
# update email of user whose username is "batman"
|
13
|
+
puts client.update_email("batman", "batman@gotham.com")
|
14
|
+
# update avatar of user whose username is "batman"
|
15
|
+
puts client.update_avatar("batman", "http://meta-discourse.r.worldssl.net/uploads/default/2497/724a6ef2e79d2bc7.png")
|
data/lib/discourse_api.rb
CHANGED
@@ -5,6 +5,11 @@ module DiscourseApi
|
|
5
5
|
response = get('/categories.json', args)
|
6
6
|
response[:body]['category_list']['categories']
|
7
7
|
end
|
8
|
+
|
9
|
+
def category_latest_topics(category_slug)
|
10
|
+
response = get("/category/#{category_slug}.json")
|
11
|
+
response[:body]['topic_list']['topics']
|
12
|
+
end
|
8
13
|
end
|
9
14
|
end
|
10
|
-
end
|
15
|
+
end
|
@@ -1,14 +1,8 @@
|
|
1
1
|
module DiscourseApi
|
2
2
|
module API
|
3
3
|
module Topics
|
4
|
-
def
|
5
|
-
|
6
|
-
response[:body]['topic_list']['topics']
|
7
|
-
end
|
8
|
-
|
9
|
-
def invite_user_to_topic(user_email, topic_id)
|
10
|
-
params = { email: user_email, topic_id: topic_id }
|
11
|
-
post "/t/#{topic_id}/invite.json", params
|
4
|
+
def create_topic(params={})
|
5
|
+
post("/posts", params)
|
12
6
|
end
|
13
7
|
|
14
8
|
def latest_topics(*args)
|
@@ -32,4 +26,4 @@ module DiscourseApi
|
|
32
26
|
end
|
33
27
|
end
|
34
28
|
end
|
35
|
-
end
|
29
|
+
end
|
@@ -1,10 +1,6 @@
|
|
1
1
|
module DiscourseApi
|
2
2
|
module API
|
3
3
|
module Users
|
4
|
-
def toggle_avatar(username, use_uploaded_avatar)
|
5
|
-
put("/users/#{username}/preferences/avatar/toggle", { use_uploaded_avatar: use_uploaded_avatar })
|
6
|
-
end
|
7
|
-
|
8
4
|
def activate(id)
|
9
5
|
put "/admin/users/#{id}/activate", api_key: api_key, api_username: api_username
|
10
6
|
end
|
@@ -22,8 +18,8 @@ module DiscourseApi
|
|
22
18
|
put("/users/#{username}/preferences/email", { email: email, api_key: api_key })
|
23
19
|
end
|
24
20
|
|
25
|
-
def update_user(username,
|
26
|
-
put("/users/#{username}",
|
21
|
+
def update_user(username, params={})
|
22
|
+
put("/users/#{username}", params)
|
27
23
|
end
|
28
24
|
|
29
25
|
def update_username(username, new_username)
|
@@ -42,4 +38,4 @@ module DiscourseApi
|
|
42
38
|
end
|
43
39
|
end
|
44
40
|
end
|
45
|
-
end
|
41
|
+
end
|
data/lib/discourse_api/client.rb
CHANGED
@@ -6,6 +6,7 @@ require 'discourse_api/api/categories'
|
|
6
6
|
require 'discourse_api/api/search'
|
7
7
|
require 'discourse_api/api/topics'
|
8
8
|
require 'discourse_api/api/users'
|
9
|
+
require 'discourse_api/api/invite'
|
9
10
|
|
10
11
|
module DiscourseApi
|
11
12
|
class Client
|
@@ -16,10 +17,11 @@ module DiscourseApi
|
|
16
17
|
include DiscourseApi::API::Search
|
17
18
|
include DiscourseApi::API::Topics
|
18
19
|
include DiscourseApi::API::Users
|
20
|
+
include DiscourseApi::API::Invite
|
19
21
|
|
20
22
|
def initialize(host, api_key=nil, api_username=nil)
|
21
|
-
@host
|
22
|
-
@api_key
|
23
|
+
@host = host
|
24
|
+
@api_key = api_key
|
23
25
|
@api_username = api_username
|
24
26
|
end
|
25
27
|
|
@@ -57,10 +59,12 @@ module DiscourseApi
|
|
57
59
|
|
58
60
|
def connection
|
59
61
|
@connection ||= Faraday.new connection_options do |conn|
|
62
|
+
# Follow redirects
|
63
|
+
conn.use FaradayMiddleware::FollowRedirects, limit: 5
|
60
64
|
# Convert request params to "www-form-encoded"
|
61
65
|
conn.request :url_encoded
|
62
66
|
# Parse responses as JSON
|
63
|
-
conn.
|
67
|
+
conn.use FaradayMiddleware::ParseJson, content_type: 'application/json'
|
64
68
|
# Use Faraday's default HTTP adapter
|
65
69
|
conn.adapter Faraday.default_adapter
|
66
70
|
#pass api_key and api_username on every request
|
data/lib/discourse_api/error.rb
CHANGED
@@ -1,22 +1,39 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::API::Categories do
|
4
|
-
subject { DiscourseApi::Client.new("http://localhost") }
|
4
|
+
subject { DiscourseApi::Client.new("http://localhost:3000") }
|
5
5
|
|
6
6
|
describe "#categories" do
|
7
7
|
before do
|
8
|
-
stub_get("http://localhost/categories.json").to_return(body: fixture("categories.json"), headers: { content_type: "application/json" })
|
8
|
+
stub_get("http://localhost:3000/categories.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("categories.json"), headers: { content_type: "application/json" })
|
9
9
|
end
|
10
10
|
|
11
11
|
it "requests the correct resource" do
|
12
|
+
subject.api_key = 'test_d7fd0429940'
|
13
|
+
subject.api_username = 'test_user'
|
12
14
|
subject.categories
|
13
|
-
expect(a_get("http://localhost/categories.json")).to have_been_made
|
15
|
+
expect(a_get("http://localhost:3000/categories.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
|
14
16
|
end
|
15
17
|
|
16
18
|
it "returns the requested categories" do
|
19
|
+
subject.api_key = 'test_d7fd0429940'
|
20
|
+
subject.api_username = 'test_user'
|
17
21
|
categories = subject.categories
|
18
22
|
expect(categories).to be_an Array
|
19
23
|
expect(categories.first).to be_a Hash
|
20
24
|
end
|
21
25
|
end
|
22
|
-
|
26
|
+
|
27
|
+
describe '#category_latest_topics' do
|
28
|
+
before do
|
29
|
+
stub_get("http://localhost:3000/category/category-slug.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("category_latest_topics.json"), headers: { content_type: "application/json" })
|
30
|
+
end
|
31
|
+
|
32
|
+
it "returns the latest topics in a category" do
|
33
|
+
subject.api_key = 'test_d7fd0429940'
|
34
|
+
subject.api_username = 'test_user'
|
35
|
+
latest_topics = subject.category_latest_topics('category-slug')
|
36
|
+
expect(latest_topics).to be_an Array
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -1,22 +1,26 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::API::Search do
|
4
|
-
subject { DiscourseApi::Client.new("http://localhost") }
|
4
|
+
subject { DiscourseApi::Client.new("http://localhost:3000") }
|
5
5
|
|
6
6
|
describe "#search" do
|
7
7
|
before do
|
8
|
-
stub_get("http://localhost/search.json").with(query: { term: "test"} ).to_return(body: fixture("search.json"), headers: { content_type: "application/json" })
|
8
|
+
stub_get("http://localhost:3000/search.json?api_key=test_d7fd0429940&api_username=test_user").with(query: { term: "test"} ).to_return(body: fixture("search.json"), headers: { content_type: "application/json" })
|
9
9
|
end
|
10
10
|
|
11
11
|
it "requests the correct resource" do
|
12
|
+
subject.api_key = 'test_d7fd0429940'
|
13
|
+
subject.api_username = 'test_user'
|
12
14
|
subject.search("test")
|
13
|
-
expect(a_get("http://localhost/search.json").with(query: { term: "test"} )).to have_been_made
|
15
|
+
expect(a_get("http://localhost:3000/search.json?api_key=test_d7fd0429940&api_username=test_user").with(query: { term: "test"} )).to have_been_made
|
14
16
|
end
|
15
17
|
|
16
18
|
it "returns the requested search" do
|
19
|
+
subject.api_key = 'test_d7fd0429940'
|
20
|
+
subject.api_username = 'test_user'
|
17
21
|
results = subject.search("test")
|
18
22
|
expect(results).to be_an Array
|
19
23
|
expect(results.first).to be_a Hash
|
20
24
|
end
|
21
25
|
end
|
22
|
-
end
|
26
|
+
end
|
@@ -1,24 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::API::Topics do
|
4
|
-
subject { DiscourseApi::Client.new("http://localhost") }
|
5
|
-
|
6
|
-
describe "#hot_topics" do
|
7
|
-
before do
|
8
|
-
stub_get("http://localhost/hot.json").to_return(body: fixture("hot.json"), headers: { content_type: "application/json" })
|
9
|
-
end
|
10
|
-
|
11
|
-
it "requests the correct resource" do
|
12
|
-
subject.hot_topics
|
13
|
-
expect(a_get("http://localhost/hot.json")).to have_been_made
|
14
|
-
end
|
15
|
-
|
16
|
-
it "returns the requested topics" do
|
17
|
-
topics = subject.hot_topics
|
18
|
-
expect(topics).to be_an Array
|
19
|
-
expect(topics.first).to be_a Hash
|
20
|
-
end
|
21
|
-
end
|
4
|
+
subject { DiscourseApi::Client.new("http://localhost:3000") }
|
22
5
|
|
23
6
|
describe "#invite_user_to_topic" do
|
24
7
|
it "needs to have a test written for it"
|
@@ -26,15 +9,19 @@ describe DiscourseApi::API::Topics do
|
|
26
9
|
|
27
10
|
describe "#latest_topics" do
|
28
11
|
before do
|
29
|
-
stub_get("http://localhost/latest.json").to_return(body: fixture("latest.json"), headers: { content_type: "application/json" })
|
12
|
+
stub_get("http://localhost:3000/latest.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("latest.json"), headers: { content_type: "application/json" })
|
30
13
|
end
|
31
14
|
|
32
15
|
it "requests the correct resource" do
|
16
|
+
subject.api_key = 'test_d7fd0429940'
|
17
|
+
subject.api_username = 'test_user'
|
33
18
|
subject.latest_topics
|
34
|
-
expect(a_get("http://localhost/latest.json")).to have_been_made
|
19
|
+
expect(a_get("http://localhost:3000/latest.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
|
35
20
|
end
|
36
21
|
|
37
22
|
it "returns the requested topics" do
|
23
|
+
subject.api_key = 'test_d7fd0429940'
|
24
|
+
subject.api_username = 'test_user'
|
38
25
|
topics = subject.latest_topics
|
39
26
|
expect(topics).to be_an Array
|
40
27
|
expect(topics.first).to be_a Hash
|
@@ -43,15 +30,19 @@ describe DiscourseApi::API::Topics do
|
|
43
30
|
|
44
31
|
describe "#new_topics" do
|
45
32
|
before do
|
46
|
-
stub_get("http://localhost/new.json").to_return(body: fixture("new.json"), headers: { content_type: "application/json" })
|
33
|
+
stub_get("http://localhost:3000/new.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("new.json"), headers: { content_type: "application/json" })
|
47
34
|
end
|
48
35
|
|
49
36
|
it "requests the correct resource" do
|
37
|
+
subject.api_key = 'test_d7fd0429940'
|
38
|
+
subject.api_username = 'test_user'
|
50
39
|
subject.new_topics
|
51
|
-
expect(a_get("http://localhost/new.json")).to have_been_made
|
40
|
+
expect(a_get("http://localhost:3000/new.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
|
52
41
|
end
|
53
42
|
|
54
43
|
it "returns the requested topics" do
|
44
|
+
subject.api_key = 'test_d7fd0429940'
|
45
|
+
subject.api_username = 'test_user'
|
55
46
|
topics = subject.new_topics
|
56
47
|
expect(topics).to be_an Array
|
57
48
|
expect(topics.first).to be_a Hash
|
@@ -60,15 +51,19 @@ describe DiscourseApi::API::Topics do
|
|
60
51
|
|
61
52
|
describe "#topic" do
|
62
53
|
before do
|
63
|
-
stub_get("http://localhost/t/57.json").to_return(body: fixture("topic.json"), headers: { content_type: "application/json" })
|
54
|
+
stub_get("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topic.json"), headers: { content_type: "application/json" })
|
64
55
|
end
|
65
56
|
|
66
57
|
it "requests the correct resource" do
|
58
|
+
subject.api_key = 'test_d7fd0429940'
|
59
|
+
subject.api_username = 'test_user'
|
67
60
|
subject.topic(57)
|
68
|
-
expect(a_get("http://localhost/t/57.json")).to have_been_made
|
61
|
+
expect(a_get("http://localhost:3000/t/57.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
|
69
62
|
end
|
70
63
|
|
71
64
|
it "returns the requested topic" do
|
65
|
+
subject.api_key = 'test_d7fd0429940'
|
66
|
+
subject.api_username = 'test_user'
|
72
67
|
topic = subject.topic(57)
|
73
68
|
expect(topic).to be_a Hash
|
74
69
|
expect(topic["id"]).to eq(57)
|
@@ -77,18 +72,22 @@ describe DiscourseApi::API::Topics do
|
|
77
72
|
|
78
73
|
describe "#topics_by" do
|
79
74
|
before do
|
80
|
-
stub_get("http://localhost/topics/created-by/
|
75
|
+
stub_get("http://localhost:3000/topics/created-by/test.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("topics_created_by.json"), headers: { content_type: "application/json" })
|
81
76
|
end
|
82
77
|
|
83
78
|
it "requests the correct resource" do
|
84
|
-
subject.
|
85
|
-
|
79
|
+
subject.api_key = 'test_d7fd0429940'
|
80
|
+
subject.api_username = 'test_user'
|
81
|
+
subject.topics_by('test')
|
82
|
+
expect(a_get("http://localhost:3000/topics/created-by/test.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
|
86
83
|
end
|
87
84
|
|
88
85
|
it "returns the requested topics" do
|
89
|
-
|
86
|
+
subject.api_key = 'test_d7fd0429940'
|
87
|
+
subject.api_username = 'test_user'
|
88
|
+
topics = subject.topics_by('test')
|
90
89
|
expect(topics).to be_an Array
|
91
90
|
expect(topics.first).to be_a Hash
|
92
91
|
end
|
93
92
|
end
|
94
|
-
end
|
93
|
+
end
|
@@ -1,24 +1,24 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::API::Users do
|
4
|
-
subject { DiscourseApi::Client.new("http://localhost") }
|
5
|
-
|
6
|
-
describe "#toggle_avatar" do
|
7
|
-
it "needs to have a test written for it"
|
8
|
-
end
|
4
|
+
subject { DiscourseApi::Client.new("http://localhost:3000") }
|
9
5
|
|
10
6
|
describe "#user" do
|
11
7
|
before do
|
12
|
-
stub_get("http://localhost/users/
|
8
|
+
stub_get("http://localhost:3000/users/test.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user.json"), headers: { content_type: "application/json" })
|
13
9
|
end
|
14
10
|
|
15
11
|
it "requests the correct resource" do
|
16
|
-
subject.
|
17
|
-
|
12
|
+
subject.api_key = 'test_d7fd0429940'
|
13
|
+
subject.api_username = 'test_user'
|
14
|
+
subject.user("test")
|
15
|
+
expect(a_get("http://localhost:3000/users/test.json?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
|
18
16
|
end
|
19
17
|
|
20
18
|
it "returns the requested user" do
|
21
|
-
|
19
|
+
subject.api_key = 'test_d7fd0429940'
|
20
|
+
subject.api_username = 'test_user'
|
21
|
+
user = subject.user("test")
|
22
22
|
expect(user).to be_a Hash
|
23
23
|
end
|
24
24
|
end
|
@@ -41,18 +41,22 @@ describe DiscourseApi::API::Users do
|
|
41
41
|
|
42
42
|
describe "#create_user" do
|
43
43
|
before do
|
44
|
-
stub_post("http://localhost/users").to_return(body: fixture("user_create_success.json"), headers: { content_type: "application/json" })
|
45
|
-
stub_get("http://localhost/users/hp.json").to_return(body: {"value"=>"foo", "challenge"=>"bar"}.to_json, headers: { content_type: "application/json" })
|
44
|
+
stub_post("http://localhost:3000/users?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("user_create_success.json"), headers: { content_type: "application/json" })
|
45
|
+
stub_get("http://localhost:3000/users/hp.json?api_key=test_d7fd0429940&api_username=test_user").to_return(body: {"value"=>"foo", "challenge"=>"bar"}.to_json, headers: { content_type: "application/json" })
|
46
46
|
end
|
47
47
|
|
48
48
|
it "makes the post request" do
|
49
|
-
subject.
|
50
|
-
|
49
|
+
subject.api_key = 'test_d7fd0429940'
|
50
|
+
subject.api_username = 'test_user'
|
51
|
+
subject.create_user :name => "Test User", :email => "test2@example.com", :password => "P@ssword", :username => "test2"
|
52
|
+
expect(a_post("http://localhost:3000/users?api_key=test_d7fd0429940&api_username=test_user")).to have_been_made
|
51
53
|
end
|
52
54
|
|
53
55
|
it "returns success" do
|
54
|
-
|
55
|
-
|
56
|
+
subject.api_key = 'test_d7fd0429940'
|
57
|
+
subject.api_username = 'test_user'
|
58
|
+
response = subject.create_user :name => "Test User", :email => "test2@example.com", :password => "P@ssword", :username => "test2"
|
59
|
+
expect(response[:body]['success']).to be_truthy
|
56
60
|
end
|
57
61
|
end
|
58
|
-
end
|
62
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe DiscourseApi::Client do
|
4
|
-
subject { DiscourseApi::Client.new('http://localhost') }
|
4
|
+
subject { DiscourseApi::Client.new('http://localhost:3000') }
|
5
5
|
|
6
6
|
describe ".new" do
|
7
7
|
it "requires a host argument" do
|
@@ -17,20 +17,20 @@ describe DiscourseApi::Client do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "accepts an api key argument" do
|
20
|
-
client = DiscourseApi::Client.new('http://localhost', 'test')
|
20
|
+
client = DiscourseApi::Client.new('http://localhost:3000', 'test')
|
21
21
|
expect(client.api_key).to eq('test')
|
22
22
|
end
|
23
23
|
|
24
24
|
it "accepts an api username argument" do
|
25
|
-
client = DiscourseApi::Client.new('http://localhost', 'test', 'test_user')
|
25
|
+
client = DiscourseApi::Client.new('http://localhost:3000', 'test', 'test_user')
|
26
26
|
expect(client.api_username).to eq('test_user')
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
describe "#api_key" do
|
31
31
|
it "is publically accessible" do
|
32
|
-
subject.api_key = "
|
33
|
-
expect(subject.api_key).to eq("
|
32
|
+
subject.api_key = "test_d7fd0429940"
|
33
|
+
expect(subject.api_key).to eq("test_d7fd0429940")
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -43,7 +43,7 @@ describe DiscourseApi::Client do
|
|
43
43
|
|
44
44
|
describe "#host" do
|
45
45
|
it "is publically readable" do
|
46
|
-
expect(subject.host).to eq("http://localhost")
|
46
|
+
expect(subject.host).to eq("http://localhost:3000")
|
47
47
|
end
|
48
48
|
|
49
49
|
it "is not publically writeable" do
|
@@ -55,7 +55,7 @@ describe DiscourseApi::Client do
|
|
55
55
|
it "looks like a Faraday connection" do
|
56
56
|
expect(subject.send(:connection)).to respond_to :run_request
|
57
57
|
end
|
58
|
-
it "
|
58
|
+
it "memorizes the connection" do
|
59
59
|
c1, c2 = subject.send(:connection), subject.send(:connection)
|
60
60
|
expect(c1.object_id).to eq(c2.object_id)
|
61
61
|
end
|
@@ -63,32 +63,38 @@ describe DiscourseApi::Client do
|
|
63
63
|
|
64
64
|
describe "#delete" do
|
65
65
|
before do
|
66
|
-
stub_delete("http://localhost/test/delete").with(query: { deleted: "object" })
|
66
|
+
stub_delete("http://localhost:3000/test/delete?api_key=test_d7fd0429940&api_username=test_user").with(query: { deleted: "object" })
|
67
67
|
end
|
68
68
|
it "allows custom delete requests" do
|
69
|
+
subject.api_key = 'test_d7fd0429940'
|
70
|
+
subject.api_username = 'test_user'
|
69
71
|
subject.delete("/test/delete", { deleted: "object" })
|
70
|
-
expect(a_delete("http://localhost/test/delete").with(query: { deleted: "object" })).to have_been_made
|
72
|
+
expect(a_delete("http://localhost:3000/test/delete?api_key=test_d7fd0429940&api_username=test_user").with(query: { deleted: "object" })).to have_been_made
|
71
73
|
end
|
72
74
|
end
|
73
75
|
|
74
76
|
describe "#post" do
|
75
77
|
before do
|
76
|
-
stub_post("http://localhost/test/post").with(body: { created: "object"})
|
78
|
+
stub_post("http://localhost:3000/test/post?api_key=test_d7fd0429940&api_username=test_user").with(body: { created: "object"})
|
77
79
|
end
|
78
80
|
|
79
81
|
it "allows custom post requests" do
|
82
|
+
subject.api_key = 'test_d7fd0429940'
|
83
|
+
subject.api_username = 'test_user'
|
80
84
|
subject.post("/test/post", { created: "object" })
|
81
|
-
expect(a_post("http://localhost/test/post").with(body: { created: "object"})).to have_been_made
|
85
|
+
expect(a_post("http://localhost:3000/test/post?api_key=test_d7fd0429940&api_username=test_user").with(body: { created: "object"})).to have_been_made
|
82
86
|
end
|
83
87
|
end
|
84
88
|
|
85
89
|
describe "#put" do
|
86
90
|
before do
|
87
|
-
stub_put("http://localhost/test/put").with(body: { updated: "object" })
|
91
|
+
stub_put("http://localhost:3000/test/put?api_key=test_d7fd0429940&api_username=test_user").with(body: { updated: "object" })
|
88
92
|
end
|
89
|
-
it "allows custom
|
93
|
+
it "allows custom put requests" do
|
94
|
+
subject.api_key = 'test_d7fd0429940'
|
95
|
+
subject.api_username = 'test_user'
|
90
96
|
subject.put("/test/put", { updated: "object" })
|
91
|
-
expect(a_put("http://localhost/test/put").with(body: { updated: "object" })).to have_been_made
|
97
|
+
expect(a_put("http://localhost:3000/test/put?api_key=test_d7fd0429940&api_username=test_user").with(body: { updated: "object" })).to have_been_made
|
92
98
|
end
|
93
99
|
end
|
94
100
|
|
@@ -0,0 +1 @@
|
|
1
|
+
{"users":[{"id":3,"username":"fuzzy","avatar_template":"//www.gravatar.com/avatar/c0c59575e86a794d733db4ee29b2baf4.png?s={size}&r=pg&d=identicon"}],"topic_list":{"can_create_topic":true,"draft":null,"draft_key":"new_topic","draft_sequence":2,"topics":[{"id":5,"title":"About the category","fancy_title":"About the category","slug":"about-the-category","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2014-04-16T14:10:50.950-04:00","last_posted_at":"2014-04-16T14:31:10.406-04:00","bumped":true,"bumped_at":"2014-04-17T13:35:01.102-04:00","unseen":false,"last_read_post_number":2,"unread":0,"new_posts":0,"pinned":true,"unpinned":null,"excerpt":null,"visible":true,"closed":false,"archived":false,"views":0,"like_count":0,"starred":false,"has_summary":false,"archetype":"regular","last_poster_username":"fuzzy","category_id":2,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":3}]},{"id":4,"title":"This is a markdown post","fancy_title":"This is a markdown post","slug":"this-is-a-markdown-post","posts_count":2,"reply_count":0,"highest_post_number":2,"image_url":null,"created_at":"2014-04-16T13:52:58.777-04:00","last_posted_at":"2014-04-16T14:31:37.371-04:00","bumped":true,"bumped_at":"2014-04-16T14:31:37.371-04:00","unseen":false,"last_read_post_number":2,"unread":0,"new_posts":0,"pinned":false,"unpinned":null,"visible":true,"closed":false,"archived":false,"views":0,"like_count":0,"starred":false,"has_summary":false,"archetype":"regular","last_poster_username":"fuzzy","category_id":2,"posters":[{"extras":"latest","description":"Original Poster, Most Recent Poster","user_id":3}]}]}}
|
data/spec/fixtures/user.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"user":{"id":1,"username":"
|
1
|
+
{"user_badges":[],"user":{"id":1,"username":"test_user","uploaded_avatar_id":null,"avatar_template":"/letter_avatar/test/{size}/2.png","name":"Test User","email":"test_user@example.com","last_posted_at":null,"last_seen_at":"2014-09-04T08:22:19.370-04:00","bio_cooked":null,"created_at":"2014-09-04T08:04:25.104-04:00","can_edit":true,"can_edit_username":true,"can_edit_email":true,"can_edit_name":true,"stats":[{"action_type":13,"count":1,"id":null}],"can_send_private_message_to_user":true,"bio_excerpt":"<div class='missing-profile'>test hasn't entered anything in the About Me field of their profile yet</div>","trust_level":0,"moderator":false,"admin":false,"title":null,"badge_count":0,"has_title_badges":false,"custom_fields":{},"number_of_deleted_posts":0,"number_of_flagged_posts":0,"number_of_flags_given":0,"number_of_suspensions":0,"locale":null,"email_digests":true,"email_private_messages":true,"email_direct":true,"email_always":false,"digest_after_days":7,"mailing_list_mode":false,"auto_track_topics_after_msecs":240000,"new_topic_duration_minutes":2880,"external_links_in_new_tab":false,"dynamic_favicon":false,"enable_quoting":true,"muted_category_ids":[],"tracked_category_ids":[],"watched_category_ids":[],"private_messages_stats":{"all":1,"mine":0,"unread":0},"disable_jump_reply":false,"gravatar_avatar_upload_id":null,"custom_avatar_upload_id":null,"invited_by":null,"custom_groups":[],"featured_user_badge_ids":[]}}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
2
|
"success": true,
|
3
3
|
"active": false,
|
4
|
-
"message": "You're almost done! We sent an activation email to <b>
|
5
|
-
}
|
4
|
+
"message": "You're almost done! We sent an activation email to <b>test2@example.com</b>. Please follow the instructions in the email to activate your account."
|
5
|
+
}
|
data/spec/spec_helper.rb
CHANGED
@@ -17,7 +17,7 @@ RSpec.configure do |config|
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
WebMock.disable_net_connect!
|
20
|
+
WebMock.disable_net_connect!(:allow_localhost => true)
|
21
21
|
|
22
22
|
def a_delete(path)
|
23
23
|
a_request(:delete, path)
|
@@ -57,4 +57,4 @@ end
|
|
57
57
|
|
58
58
|
def fixture(file)
|
59
59
|
File.new(fixture_path + '/' + file)
|
60
|
-
end
|
60
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: discourse_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
@@ -10,22 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-09-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.9.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0.
|
28
|
+
version: 0.9.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: faraday_middleware
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,100 +58,100 @@ dependencies:
|
|
58
58
|
name: rake
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - '='
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
63
|
+
version: 10.3.2
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - '='
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
70
|
+
version: 10.3.2
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rspec
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- - "
|
75
|
+
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
77
|
+
version: '3.0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- - "
|
82
|
+
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '0'
|
84
|
+
version: '3.0'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: webmock
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- - "
|
89
|
+
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: '
|
91
|
+
version: '1.18'
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- - "
|
96
|
+
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: '
|
98
|
+
version: '1.18'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: guard-rspec
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
|
-
- - "
|
103
|
+
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: '
|
105
|
+
version: '4.3'
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
|
-
- - "
|
110
|
+
- - "~>"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: '
|
112
|
+
version: '4.3'
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: guard
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
|
-
- - "
|
117
|
+
- - "~>"
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: '
|
119
|
+
version: '2.6'
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- - "
|
124
|
+
- - "~>"
|
125
125
|
- !ruby/object:Gem::Version
|
126
|
-
version: '
|
126
|
+
version: '2.6'
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
128
|
name: rb-inotify
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
|
-
- - "
|
131
|
+
- - "~>"
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: '0'
|
133
|
+
version: '0.9'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
|
-
- - "
|
138
|
+
- - "~>"
|
139
139
|
- !ruby/object:Gem::Version
|
140
|
-
version: '0'
|
140
|
+
version: '0.9'
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
142
|
name: simplecov
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
144
144
|
requirements:
|
145
|
-
- - "
|
145
|
+
- - "~>"
|
146
146
|
- !ruby/object:Gem::Version
|
147
|
-
version: '0'
|
147
|
+
version: '0.9'
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
|
-
- - "
|
152
|
+
- - "~>"
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version: '0'
|
154
|
+
version: '0.9'
|
155
155
|
description: Discourse API
|
156
156
|
email:
|
157
157
|
- sam.saffron@gmail.com
|
@@ -163,19 +163,22 @@ extra_rdoc_files: []
|
|
163
163
|
files:
|
164
164
|
- ".gitignore"
|
165
165
|
- ".travis.yml"
|
166
|
+
- CHANGELOG.md
|
166
167
|
- Gemfile
|
167
168
|
- Guardfile
|
168
169
|
- LICENSE.txt
|
169
170
|
- README.md
|
170
171
|
- Rakefile
|
171
172
|
- discourse_api.gemspec
|
173
|
+
- examples/create_topic.rb
|
174
|
+
- examples/disposable_invite_tokens.rb
|
172
175
|
- examples/example.rb
|
173
176
|
- examples/invite_users.rb
|
174
|
-
- examples/post_topic.rb
|
175
177
|
- examples/topic_lists.rb
|
176
178
|
- examples/update_user.rb
|
177
179
|
- lib/discourse_api.rb
|
178
180
|
- lib/discourse_api/api/categories.rb
|
181
|
+
- lib/discourse_api/api/invite.rb
|
179
182
|
- lib/discourse_api/api/search.rb
|
180
183
|
- lib/discourse_api/api/topics.rb
|
181
184
|
- lib/discourse_api/api/users.rb
|
@@ -189,6 +192,7 @@ files:
|
|
189
192
|
- spec/discourse_api/api/users_spec.rb
|
190
193
|
- spec/discourse_api/client_spec.rb
|
191
194
|
- spec/fixtures/categories.json
|
195
|
+
- spec/fixtures/category_latest_topics.json
|
192
196
|
- spec/fixtures/hot.json
|
193
197
|
- spec/fixtures/latest.json
|
194
198
|
- spec/fixtures/new.json
|
@@ -229,6 +233,7 @@ test_files:
|
|
229
233
|
- spec/discourse_api/api/users_spec.rb
|
230
234
|
- spec/discourse_api/client_spec.rb
|
231
235
|
- spec/fixtures/categories.json
|
236
|
+
- spec/fixtures/category_latest_topics.json
|
232
237
|
- spec/fixtures/hot.json
|
233
238
|
- spec/fixtures/latest.json
|
234
239
|
- spec/fixtures/new.json
|