discourse_api 0.45.0 → 0.45.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +13 -17
- data/.gitignore +0 -19
- data/discourse_api.gemspec +4 -4
- data/examples/category.rb +3 -0
- data/examples/notifications.rb +15 -0
- data/examples/topic_lists.rb +3 -0
- data/lib/discourse_api/api/categories.rb +37 -11
- data/lib/discourse_api/api/search.rb +1 -1
- data/lib/discourse_api/api/topics.rb +11 -0
- data/lib/discourse_api/version.rb +1 -1
- data/spec/discourse_api/api/categories_spec.rb +90 -0
- data/spec/discourse_api/api/search_spec.rb +2 -2
- data/spec/discourse_api/api/topics_spec.rb +34 -0
- data/spec/fixtures/notification_success.json +3 -0
- data/spec/fixtures/top.json +108 -0
- metadata +12 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10c80ce6388205a855042bd1093627508e4929c6bf79902487549568af7304b0
|
4
|
+
data.tar.gz: 4aab3d70ba9343f6717a4e4ffce233b015565904129fd4b1244e7bdac64ef565
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b37002fd695ca45872ba4b2ca09161173050f70692c8f051df737dd87370cb06c5103b51d5691807041ffbac9a0a9a1713fd74f406da192eeb8e29b41460c90a
|
7
|
+
data.tar.gz: 13163d2718c324780cb081aaca1e63f865e9b503bc008f4d1fbcb1145b6f3175e6621f6dbbaff14a30f8d730d9800ab6af8e3e1caee93b8baed8682d275f4b68
|
data/.github/workflows/ci.yml
CHANGED
@@ -5,8 +5,7 @@ on:
|
|
5
5
|
push:
|
6
6
|
branches:
|
7
7
|
- master
|
8
|
-
|
9
|
-
- v*
|
8
|
+
- main
|
10
9
|
|
11
10
|
jobs:
|
12
11
|
build:
|
@@ -18,30 +17,25 @@ jobs:
|
|
18
17
|
- 2.5
|
19
18
|
- 2.6
|
20
19
|
- 2.7
|
20
|
+
- 3.0
|
21
21
|
|
22
22
|
steps:
|
23
|
-
- uses: actions/checkout@
|
23
|
+
- uses: actions/checkout@v2
|
24
24
|
|
25
25
|
- name: Setup ruby
|
26
|
-
uses:
|
26
|
+
uses: ruby/setup-ruby@v1
|
27
27
|
with:
|
28
28
|
ruby-version: ${{ matrix.ruby }}
|
29
|
-
|
30
|
-
|
31
|
-
- name: Setup bundler
|
32
|
-
run: gem install bundler
|
33
|
-
|
34
|
-
- name: Setup gems
|
35
|
-
run: bundle install
|
29
|
+
bundler-cache: true
|
36
30
|
|
37
|
-
- name:
|
31
|
+
- name: Lint
|
38
32
|
run: bundle exec rubocop
|
39
33
|
|
40
|
-
- name:
|
41
|
-
run: bundle exec
|
34
|
+
- name: Tests
|
35
|
+
run: bundle exec rake test
|
42
36
|
|
43
37
|
publish:
|
44
|
-
if:
|
38
|
+
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
|
45
39
|
needs: build
|
46
40
|
runs-on: ubuntu-latest
|
47
41
|
|
@@ -49,6 +43,8 @@ jobs:
|
|
49
43
|
- uses: actions/checkout@v2
|
50
44
|
|
51
45
|
- name: Release Gem
|
52
|
-
uses:
|
46
|
+
uses: discourse/publish-rubygems-action@v2-beta
|
53
47
|
env:
|
54
|
-
RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
|
48
|
+
RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
|
49
|
+
GIT_EMAIL: team@discourse.org
|
50
|
+
GIT_NAME: discoursebot
|
data/.gitignore
CHANGED
@@ -1,22 +1,3 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
1
|
Gemfile.lock
|
7
|
-
InstalledFiles
|
8
|
-
_yardoc
|
9
2
|
coverage
|
10
|
-
doc/
|
11
|
-
lib/bundler/man
|
12
|
-
pkg
|
13
|
-
rdoc
|
14
|
-
spec/reports
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
|
-
tmp
|
18
|
-
bin/
|
19
|
-
.ruby-gemset
|
20
|
-
.ruby-version
|
21
|
-
.env
|
22
3
|
/config.yml
|
data/discourse_api.gemspec
CHANGED
@@ -18,9 +18,9 @@ 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.
|
22
|
-
spec.
|
23
|
-
spec.
|
21
|
+
spec.add_runtime_dependency 'faraday', '~> 1.0'
|
22
|
+
spec.add_runtime_dependency 'faraday_middleware', '~> 1.0'
|
23
|
+
spec.add_runtime_dependency 'rack', '>= 1.6'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
26
26
|
spec.add_development_dependency 'guard', '~> 2.14'
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency 'rspec', '~> 3.4'
|
31
31
|
spec.add_development_dependency 'simplecov', '~> 0.11'
|
32
32
|
spec.add_development_dependency 'webmock', '~> 3.0'
|
33
|
-
spec.add_development_dependency 'rubocop-discourse'
|
33
|
+
spec.add_development_dependency 'rubocop-discourse', '~> 2.4.1'
|
34
34
|
|
35
35
|
spec.required_ruby_version = '>= 2.5.0'
|
36
36
|
end
|
data/examples/category.rb
CHANGED
@@ -14,6 +14,9 @@ puts client.categories()
|
|
14
14
|
# get sub categories for parent category with id 2
|
15
15
|
puts client.categories(parent_category_id: 2)
|
16
16
|
|
17
|
+
# get the full categories response
|
18
|
+
puts client.categories_full()
|
19
|
+
|
17
20
|
# List topics in a category
|
18
21
|
category_topics = client.category_latest_topics(category_slug: "test-category")
|
19
22
|
puts category_topics
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
3
|
+
require File.expand_path('../../lib/discourse_api', __FILE__)
|
4
|
+
|
5
|
+
config = DiscourseApi::ExampleHelper.load_yml
|
6
|
+
|
7
|
+
client = DiscourseApi::Client.new(config['host'] || 'http://localhost:3000')
|
8
|
+
client.api_key = config['api_key'] || "YOUR_API_KEY"
|
9
|
+
client.api_username = config['api_username'] || "YOUR_USERNAME"
|
10
|
+
|
11
|
+
# watch an entire category
|
12
|
+
client.category_set_user_notification_level(1, notification_level: 3)
|
13
|
+
|
14
|
+
# mute a topic
|
15
|
+
client.topic_set_user_notification_level(1, notification_level: 0)
|
data/examples/topic_lists.rb
CHANGED
@@ -11,6 +11,9 @@ client.api_username = config['api_username'] || "YOUR_USERNAME"
|
|
11
11
|
# get latest topics
|
12
12
|
puts client.latest_topics({})
|
13
13
|
|
14
|
+
# get top topics
|
15
|
+
puts client.top_topics
|
16
|
+
|
14
17
|
# recategorize topic
|
15
18
|
puts client.recategorize_topic(topic_id: 108, category_id: 5)
|
16
19
|
|
@@ -36,11 +36,24 @@ module DiscourseApi
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def categories(params = {})
|
39
|
+
categories_full(params)['category_list']['categories']
|
40
|
+
end
|
41
|
+
|
42
|
+
def categories_full(params = {})
|
39
43
|
response = get('/categories.json', params)
|
40
|
-
response[:body]
|
44
|
+
response[:body]
|
41
45
|
end
|
42
46
|
|
43
47
|
def category_latest_topics(args = {})
|
48
|
+
response = category_latest_topics_full(args)
|
49
|
+
if response['errors']
|
50
|
+
response['errors']
|
51
|
+
else
|
52
|
+
response['topic_list']['topics']
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def category_latest_topics_full(args = {})
|
44
57
|
params = API.params(args)
|
45
58
|
.required(:category_slug)
|
46
59
|
.optional(:page).to_h
|
@@ -49,25 +62,31 @@ module DiscourseApi
|
|
49
62
|
url = "#{url}?page=#{params[:page]}"
|
50
63
|
end
|
51
64
|
response = get(url)
|
52
|
-
|
53
|
-
response[:body]['errors']
|
54
|
-
else
|
55
|
-
response[:body]['topic_list']['topics']
|
56
|
-
end
|
65
|
+
response[:body]
|
57
66
|
end
|
58
67
|
|
59
68
|
def category_top_topics(category_slug)
|
60
|
-
response =
|
61
|
-
if response[
|
62
|
-
response[
|
69
|
+
response = category_top_topics_full(category_slug)
|
70
|
+
if response['errors']
|
71
|
+
response['errors']
|
63
72
|
else
|
64
|
-
response[
|
73
|
+
response['topic_list']['topics']
|
65
74
|
end
|
66
75
|
end
|
67
76
|
|
77
|
+
def category_top_topics_full(category_slug)
|
78
|
+
response = get("/c/#{category_slug}/l/top.json")
|
79
|
+
response[:body]
|
80
|
+
end
|
81
|
+
|
68
82
|
def category_new_topics(category_slug)
|
83
|
+
response = category_new_topics_full(category_slug)
|
84
|
+
response['topic_list']['topics']
|
85
|
+
end
|
86
|
+
|
87
|
+
def category_new_topics_full(category_slug)
|
69
88
|
response = get("/c/#{category_slug}/l/new.json")
|
70
|
-
response[:body]
|
89
|
+
response[:body]
|
71
90
|
end
|
72
91
|
|
73
92
|
def category(id)
|
@@ -75,12 +94,19 @@ module DiscourseApi
|
|
75
94
|
response[:body]['category']
|
76
95
|
end
|
77
96
|
|
97
|
+
# TODO: Deprecated. Remove after 20210727
|
78
98
|
def category_set_user_notification(args = {})
|
79
99
|
category_id = args[:id]
|
80
100
|
args = API.params(args)
|
81
101
|
.required(:notification_level)
|
82
102
|
post("/category/#{category_id}/notifications", args)
|
83
103
|
end
|
104
|
+
|
105
|
+
def category_set_user_notification_level(category_id, params)
|
106
|
+
params = API.params(params)
|
107
|
+
.required(:notification_level)
|
108
|
+
post("/category/#{category_id}/notifications", params)
|
109
|
+
end
|
84
110
|
end
|
85
111
|
end
|
86
112
|
end
|
@@ -12,7 +12,7 @@ module DiscourseApi
|
|
12
12
|
raise ArgumentError.new("#{term} is required but not specified") unless term
|
13
13
|
raise ArgumentError.new("#{term} is required but not specified") unless !term.empty?
|
14
14
|
|
15
|
-
response = get('/search
|
15
|
+
response = get('/search', options.merge(q: term))
|
16
16
|
response[:body]
|
17
17
|
end
|
18
18
|
end
|
@@ -29,6 +29,11 @@ module DiscourseApi
|
|
29
29
|
response[:body]['topic_list']['topics']
|
30
30
|
end
|
31
31
|
|
32
|
+
def top_topics(params = {})
|
33
|
+
response = get("/top.json", params)
|
34
|
+
response[:body]['topic_list']['topics']
|
35
|
+
end
|
36
|
+
|
32
37
|
def new_topics(params = {})
|
33
38
|
response = get("/new.json", params)
|
34
39
|
response[:body]['topic_list']['topics']
|
@@ -85,6 +90,12 @@ module DiscourseApi
|
|
85
90
|
|
86
91
|
post("/t/#{topic_id}/change-owner.json", params)
|
87
92
|
end
|
93
|
+
|
94
|
+
def topic_set_user_notification_level(topic_id, params)
|
95
|
+
params = API.params(params)
|
96
|
+
.required(:notification_level)
|
97
|
+
post("/t/#{topic_id}/notifications", params)
|
98
|
+
end
|
88
99
|
end
|
89
100
|
end
|
90
101
|
end
|
@@ -28,6 +28,25 @@ describe DiscourseApi::API::Categories do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
describe "#categories_full" do
|
32
|
+
before do
|
33
|
+
stub_get("#{host}/categories.json")
|
34
|
+
.to_return(body: fixture("categories.json"), headers: { content_type: "application/json" })
|
35
|
+
end
|
36
|
+
|
37
|
+
it "requests the correct resource" do
|
38
|
+
subject.categories
|
39
|
+
expect(a_get("#{host}/categories.json")).to have_been_made
|
40
|
+
end
|
41
|
+
|
42
|
+
it "returns the entire categories response" do
|
43
|
+
categories = subject.categories_full
|
44
|
+
expect(categories).to be_a Hash
|
45
|
+
expect(categories).to have_key 'category_list'
|
46
|
+
expect(categories).to have_key 'featured_users'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
31
50
|
describe '#category_latest_topics' do
|
32
51
|
before do
|
33
52
|
stub_get("#{host}/c/category-slug/l/latest.json")
|
@@ -40,6 +59,20 @@ describe DiscourseApi::API::Categories do
|
|
40
59
|
end
|
41
60
|
end
|
42
61
|
|
62
|
+
describe '#category_latest_topics_full' do
|
63
|
+
before do
|
64
|
+
stub_get("#{host}/c/category-slug/l/latest.json")
|
65
|
+
.to_return(body: fixture("category_latest_topics.json"), headers: { content_type: "application/json" })
|
66
|
+
end
|
67
|
+
|
68
|
+
it "returns the entire latest topics in a category response" do
|
69
|
+
latest_topics = subject.category_latest_topics_full(category_slug: 'category-slug')
|
70
|
+
expect(latest_topics).to be_a Hash
|
71
|
+
expect(latest_topics).to have_key 'topic_list'
|
72
|
+
expect(latest_topics).to have_key 'users'
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
43
76
|
describe '#category_top_topics' do
|
44
77
|
before do
|
45
78
|
stub_get("#{host}/c/category-slug/l/top.json")
|
@@ -55,6 +88,23 @@ describe DiscourseApi::API::Categories do
|
|
55
88
|
end
|
56
89
|
end
|
57
90
|
|
91
|
+
describe '#category_top_topics_full' do
|
92
|
+
before do
|
93
|
+
stub_get("#{host}/c/category-slug/l/top.json")
|
94
|
+
.to_return(
|
95
|
+
body: fixture("category_topics.json"),
|
96
|
+
headers: { content_type: "application/json" }
|
97
|
+
)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "returns the entire top topics in a category response" do
|
101
|
+
topics = subject.category_top_topics_full('category-slug')
|
102
|
+
expect(topics).to be_a Hash
|
103
|
+
expect(topics).to have_key 'topic_list'
|
104
|
+
expect(topics).to have_key 'users'
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
58
108
|
describe '#category_new_topics' do
|
59
109
|
before do
|
60
110
|
stub_get("#{host}/c/category-slug/l/new.json")
|
@@ -70,6 +120,23 @@ describe DiscourseApi::API::Categories do
|
|
70
120
|
end
|
71
121
|
end
|
72
122
|
|
123
|
+
describe '#category_new_topics_full' do
|
124
|
+
before do
|
125
|
+
stub_get("#{host}/c/category-slug/l/new.json")
|
126
|
+
.to_return(
|
127
|
+
body: fixture("category_topics.json"),
|
128
|
+
headers: { content_type: "application/json" }
|
129
|
+
)
|
130
|
+
end
|
131
|
+
|
132
|
+
it "returns the new topics in a category" do
|
133
|
+
topics = subject.category_new_topics_full('category-slug')
|
134
|
+
expect(topics).to be_a Hash
|
135
|
+
expect(topics).to have_key 'topic_list'
|
136
|
+
expect(topics).to have_key 'users'
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
73
140
|
describe '#category_new_category' do
|
74
141
|
before do
|
75
142
|
stub_post("#{host}/categories")
|
@@ -85,4 +152,27 @@ describe DiscourseApi::API::Categories do
|
|
85
152
|
end
|
86
153
|
end
|
87
154
|
|
155
|
+
describe "#category_set_user_notification" do
|
156
|
+
before do
|
157
|
+
stub_post("#{host}/category/1/notifications").to_return(body: fixture("notification_success.json"), headers: { content_type: "application/json" })
|
158
|
+
end
|
159
|
+
|
160
|
+
it "makes the post request" do
|
161
|
+
response = subject.category_set_user_notification(id: 1, notification_level: 3)
|
162
|
+
expect(a_post("#{host}/category/1/notifications")).to have_been_made
|
163
|
+
expect(response['success']).to eq('OK')
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
describe "#category_set_user_notification_level" do
|
168
|
+
before do
|
169
|
+
stub_post("#{host}/category/1/notifications").to_return(body: fixture("notification_success.json"), headers: { content_type: "application/json" })
|
170
|
+
end
|
171
|
+
|
172
|
+
it "makes the post request" do
|
173
|
+
response = subject.category_set_user_notification_level(1, notification_level: 3)
|
174
|
+
expect(a_post("#{host}/category/1/notifications").with(body: "notification_level=3")).to have_been_made
|
175
|
+
expect(response['success']).to eq('OK')
|
176
|
+
end
|
177
|
+
end
|
88
178
|
end
|
@@ -6,12 +6,12 @@ describe DiscourseApi::API::Search do
|
|
6
6
|
|
7
7
|
describe "#search" do
|
8
8
|
before do
|
9
|
-
stub_get("#{host}/search
|
9
|
+
stub_get("#{host}/search").with(query: { q: "test" }).to_return(body: fixture("search.json"), headers: { content_type: "application/json" })
|
10
10
|
end
|
11
11
|
|
12
12
|
it "requests the correct resource" do
|
13
13
|
subject.search("test")
|
14
|
-
expect(a_get("#{host}/search
|
14
|
+
expect(a_get("#{host}/search").with(query: { q: "test" })).to have_been_made
|
15
15
|
end
|
16
16
|
|
17
17
|
it "returns the requested search" do
|
@@ -55,6 +55,29 @@ describe DiscourseApi::API::Topics do
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
+
describe "#top_topics" do
|
59
|
+
before do
|
60
|
+
stub_get("#{host}/top.json").to_return(body: fixture("top.json"), headers: { content_type: "application/json" })
|
61
|
+
end
|
62
|
+
|
63
|
+
it "requests the correct resource" do
|
64
|
+
subject.top_topics
|
65
|
+
expect(a_get("#{host}/top.json")).to have_been_made
|
66
|
+
end
|
67
|
+
|
68
|
+
it "returns the requested topics" do
|
69
|
+
topics = subject.top_topics
|
70
|
+
expect(topics).to be_an Array
|
71
|
+
expect(topics.first).to be_a Hash
|
72
|
+
end
|
73
|
+
|
74
|
+
it "can take a hash param" do
|
75
|
+
topics = subject.top_topics({})
|
76
|
+
expect(topics).to be_an Array
|
77
|
+
expect(topics.first).to be_a Hash
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
58
81
|
describe "#new_topics" do
|
59
82
|
before do
|
60
83
|
stub_get("#{host}/new.json").to_return(body: fixture("new.json"), headers: { content_type: "application/json" })
|
@@ -166,4 +189,15 @@ describe DiscourseApi::API::Topics do
|
|
166
189
|
end
|
167
190
|
end
|
168
191
|
|
192
|
+
describe "#topic_set_user_notification_level" do
|
193
|
+
before do
|
194
|
+
stub_post("#{host}/t/1/notifications").to_return(body: fixture("notification_success.json"), headers: { content_type: "application/json" })
|
195
|
+
end
|
196
|
+
|
197
|
+
it "makes the post request" do
|
198
|
+
response = subject.topic_set_user_notification_level(1, notification_level: 3)
|
199
|
+
expect(a_post("#{host}/t/1/notifications").with(body: "notification_level=3")).to have_been_made
|
200
|
+
expect(response['success']).to eq('OK')
|
201
|
+
end
|
202
|
+
end
|
169
203
|
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
{
|
2
|
+
"topic_list": {
|
3
|
+
"can_create_topic": false,
|
4
|
+
"more_topics_url": "/latest.json?page=1",
|
5
|
+
"draft": null,
|
6
|
+
"draft_key": "new_topic",
|
7
|
+
"draft_sequence": null,
|
8
|
+
"topics": [
|
9
|
+
{
|
10
|
+
"id": 1,
|
11
|
+
"title": "Test topic #1",
|
12
|
+
"fancy_title": "Test topic #1",
|
13
|
+
"slug": "test-topic-1",
|
14
|
+
"posts_count": 1,
|
15
|
+
"reply_count": 0,
|
16
|
+
"highest_post_number": 1,
|
17
|
+
"image_url": null,
|
18
|
+
"created_at": "2013-02-04T15:26:25.977-05:00",
|
19
|
+
"last_posted_at": "2013-02-05T12:14:17.364-05:00",
|
20
|
+
"bumped": true,
|
21
|
+
"bumped_at": "2013-02-07T13:43:11.191-05:00",
|
22
|
+
"unseen": false,
|
23
|
+
"pinned": true,
|
24
|
+
"excerpt": "Welcome! \n\nTry is a sandbox, a safe place to play with Discourse and its features.\n\nThis site is reset every day (or even more often). Any accounts or posts you create here will not exist tomorrow! \n\nFeel free to experim…",
|
25
|
+
"visible": true,
|
26
|
+
"closed": false,
|
27
|
+
"archived": false,
|
28
|
+
"views": 268,
|
29
|
+
"like_count": 14,
|
30
|
+
"has_best_of": false,
|
31
|
+
"archetype": "regular",
|
32
|
+
"last_poster_username": "test_user",
|
33
|
+
"category_id": 1,
|
34
|
+
"posters": [
|
35
|
+
{
|
36
|
+
"extras": null,
|
37
|
+
"description": "Original Poster, Most Recent Poster",
|
38
|
+
"user_id": 1
|
39
|
+
}
|
40
|
+
]
|
41
|
+
},
|
42
|
+
{
|
43
|
+
"id": 1,
|
44
|
+
"title": "Test topic #2",
|
45
|
+
"fancy_title": "Test topic #2",
|
46
|
+
"slug": "test-topic-1",
|
47
|
+
"posts_count": 1,
|
48
|
+
"reply_count": 0,
|
49
|
+
"highest_post_number": 2,
|
50
|
+
"image_url": null,
|
51
|
+
"created_at": "2013-11-06T13:57:47.984-05:00",
|
52
|
+
"last_posted_at": "2013-11-06T13:57:48.111-05:00",
|
53
|
+
"bumped": true,
|
54
|
+
"bumped_at": "2013-11-06T13:57:48.111-05:00",
|
55
|
+
"unseen": false,
|
56
|
+
"pinned": false,
|
57
|
+
"visible": true,
|
58
|
+
"closed": false,
|
59
|
+
"archived": false,
|
60
|
+
"views": 1,
|
61
|
+
"like_count": 0,
|
62
|
+
"has_best_of": false,
|
63
|
+
"archetype": "regular",
|
64
|
+
"last_poster_username": "test_user",
|
65
|
+
"category_id": 1,
|
66
|
+
"posters": [
|
67
|
+
{
|
68
|
+
"extras": null,
|
69
|
+
"description": "Original Poster, Most Recent Poster",
|
70
|
+
"user_id": 1
|
71
|
+
}
|
72
|
+
]
|
73
|
+
},
|
74
|
+
{
|
75
|
+
"id": 1,
|
76
|
+
"title": "Test topic #3",
|
77
|
+
"fancy_title": "Test topic #3",
|
78
|
+
"slug": "test-topic-3",
|
79
|
+
"posts_count": 1,
|
80
|
+
"reply_count": 0,
|
81
|
+
"highest_post_number": 1,
|
82
|
+
"image_url": null,
|
83
|
+
"created_at": "2013-02-04T21:46:58.194-05:00",
|
84
|
+
"last_posted_at": "2013-11-06T13:56:27.753-05:00",
|
85
|
+
"bumped": true,
|
86
|
+
"bumped_at": "2013-11-06T13:56:27.753-05:00",
|
87
|
+
"unseen": false,
|
88
|
+
"pinned": false,
|
89
|
+
"visible": true,
|
90
|
+
"closed": false,
|
91
|
+
"archived": false,
|
92
|
+
"views": 82,
|
93
|
+
"like_count": 10,
|
94
|
+
"has_best_of": false,
|
95
|
+
"archetype": "regular",
|
96
|
+
"last_poster_username": "test_user",
|
97
|
+
"category_id": 1,
|
98
|
+
"posters": [
|
99
|
+
{
|
100
|
+
"extras": null,
|
101
|
+
"description": "Original Poster, Most Recent Poster",
|
102
|
+
"user_id": 1
|
103
|
+
}
|
104
|
+
]
|
105
|
+
}
|
106
|
+
]
|
107
|
+
}
|
108
|
+
}
|
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.45.
|
4
|
+
version: 0.45.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-
|
14
|
+
date: 2021-03-11 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: faraday
|
@@ -171,16 +171,16 @@ dependencies:
|
|
171
171
|
name: rubocop-discourse
|
172
172
|
requirement: !ruby/object:Gem::Requirement
|
173
173
|
requirements:
|
174
|
-
- - "
|
174
|
+
- - "~>"
|
175
175
|
- !ruby/object:Gem::Version
|
176
|
-
version:
|
176
|
+
version: 2.4.1
|
177
177
|
type: :development
|
178
178
|
prerelease: false
|
179
179
|
version_requirements: !ruby/object:Gem::Requirement
|
180
180
|
requirements:
|
181
|
-
- - "
|
181
|
+
- - "~>"
|
182
182
|
- !ruby/object:Gem::Version
|
183
|
-
version:
|
183
|
+
version: 2.4.1
|
184
184
|
description: Discourse API
|
185
185
|
email:
|
186
186
|
- sam.saffron@gmail.com
|
@@ -217,6 +217,7 @@ files:
|
|
217
217
|
- examples/groups.rb
|
218
218
|
- examples/invite_users.rb
|
219
219
|
- examples/manage_api_keys.rb
|
220
|
+
- examples/notifications.rb
|
220
221
|
- examples/polls.rb
|
221
222
|
- examples/post_action.rb
|
222
223
|
- examples/search.rb
|
@@ -290,6 +291,7 @@ files:
|
|
290
291
|
- spec/fixtures/members_1.json
|
291
292
|
- spec/fixtures/members_2.json
|
292
293
|
- spec/fixtures/new.json
|
294
|
+
- spec/fixtures/notification_success.json
|
293
295
|
- spec/fixtures/notifications.json
|
294
296
|
- spec/fixtures/polls_toggle_status.json
|
295
297
|
- spec/fixtures/polls_vote.json
|
@@ -303,6 +305,7 @@ files:
|
|
303
305
|
- spec/fixtures/replies.json
|
304
306
|
- spec/fixtures/replies_and_topics.json
|
305
307
|
- spec/fixtures/search.json
|
308
|
+
- spec/fixtures/top.json
|
306
309
|
- spec/fixtures/topic.json
|
307
310
|
- spec/fixtures/topic_invite_user.json
|
308
311
|
- spec/fixtures/topic_posts.json
|
@@ -341,7 +344,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
341
344
|
- !ruby/object:Gem::Version
|
342
345
|
version: '0'
|
343
346
|
requirements: []
|
344
|
-
rubygems_version: 3.
|
347
|
+
rubygems_version: 3.1.4
|
345
348
|
signing_key:
|
346
349
|
specification_version: 4
|
347
350
|
summary: Allows access to the Discourse API
|
@@ -384,6 +387,7 @@ test_files:
|
|
384
387
|
- spec/fixtures/members_1.json
|
385
388
|
- spec/fixtures/members_2.json
|
386
389
|
- spec/fixtures/new.json
|
390
|
+
- spec/fixtures/notification_success.json
|
387
391
|
- spec/fixtures/notifications.json
|
388
392
|
- spec/fixtures/polls_toggle_status.json
|
389
393
|
- spec/fixtures/polls_vote.json
|
@@ -397,6 +401,7 @@ test_files:
|
|
397
401
|
- spec/fixtures/replies.json
|
398
402
|
- spec/fixtures/replies_and_topics.json
|
399
403
|
- spec/fixtures/search.json
|
404
|
+
- spec/fixtures/top.json
|
400
405
|
- spec/fixtures/topic.json
|
401
406
|
- spec/fixtures/topic_invite_user.json
|
402
407
|
- spec/fixtures/topic_posts.json
|