discourse_api 0.1.2 → 0.2.2
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.
- 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
|