discourse_api 0.12.0 → 0.13.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd0f97c2f0145c221f69cb373249f6a86f676452
4
- data.tar.gz: 79f6fc05d914c6c166ac982dcb91d9975894b70d
3
+ metadata.gz: b5e090466c70d88bfb066f1c386941a3ef8dfef2
4
+ data.tar.gz: 5f0d7f3b8ce464254a7d60dcab7f0cf5278da843
5
5
  SHA512:
6
- metadata.gz: 93dac12e3814440fc9a76d6deebdbacee7fd11b7a17532863db640982024cf2d498e00c649d6d6d0c1901bc29b181daa2821b5ba8e3fe5a67202b1e4aa3102e6
7
- data.tar.gz: ca30cadbaa7677528a6c8f6771417a85e42c7c24bd619c48afe57283536c1657df0f391b1ae2f0cdf9c754189b5b77a3a73c29ca2017edebed0b1df7ac98e78d
6
+ metadata.gz: de5bfc7a37df4f79cce7c1ccc357f47e9e7f6335f723b1577ef3743d19e55b503d8c6ccbdfd8beec9989ae31f86dd1d7396df6b2ad21b455a4f3403c65517d10
7
+ data.tar.gz: 3a2020987363559ec2bd44080716d4bfe526c81d169cfeeb8ce467f80c83576bed655f6cbe9866c57f8aac93c4373465f5a9d8932636a8c6c5d677599a04aa86
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ## [0.13.0] - 2016-10-09
6
+ ### Added
7
+ - added `update_category`
8
+ - added `upload_post_image`
9
+
5
10
  ## [0.12.0] - 2016-10-06
6
11
  ### Added
7
12
  - add endpoint for `/admin/users/{id}/suspend`
@@ -0,0 +1,38 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require File.expand_path('../../lib/discourse_api', __FILE__)
3
+
4
+ # client = DiscourseApi::Client.new("http://localhost:3000")
5
+ # client.api_key = "YOUR_API_KEY"
6
+ # client.api_username = "YOUR_USERNAME"
7
+ #
8
+
9
+ client = DiscourseApi::Client.new("http://localhost:8080")
10
+ client.api_key = "a56a349e1870529d8d8da11453ea782ce8ab8de34d6564a65727171163be4338"
11
+ client.api_username = "system"
12
+
13
+ ###
14
+ # Required category params:
15
+ # :name, :color, :text_color
16
+ # Optional category params:
17
+ # :slug, :permissions, :auto_close_hours, :auto_close_based_on_last_post, :position, :email_in,
18
+ # :email_in_allow_strangers, :logo_url, :background_url, :allow_badges, :topic_template
19
+ ###
20
+
21
+
22
+ # Create category
23
+ new_category = client.create_category(
24
+ name: "Test Category",
25
+ color: "AB9364",
26
+ text_color: "FFFFFF"
27
+ )
28
+ puts 'Created category: ' + new_category.to_s
29
+
30
+ # Update category
31
+ response = client.update_category(
32
+ id: new_category['id'],
33
+ name: "The Best Test Category",
34
+ slug: "the-best-test-category",
35
+ color: "0E76BD",
36
+ text_color: "000000"
37
+ )
38
+ puts 'Updated category: ' + response.to_s
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require File.expand_path('../../lib/discourse_api', __FILE__)
3
+
4
+ client = DiscourseApi::Client.new("http://localhost:3000")
5
+ client.api_key = "YOUR_API_KEY"
6
+ client.api_username = "YOUR_USERNAME"
7
+
8
+ # Upload an image via file
9
+ client.upload_post_image(file: 'grumpy_cat.gif')
10
+
11
+ # Upload an image via URL
12
+ client.upload_post_image(url: 'https://giphy.com/grumpy_cat.gif')
@@ -13,6 +13,17 @@ module DiscourseApi
13
13
  response['category']
14
14
  end
15
15
 
16
+ def update_category(args={})
17
+ category_id = args[:id]
18
+ args = API.params(args)
19
+ .required(:id, :name, :color, :text_color)
20
+ .optional(:slug, :permissions, :auto_close_hours, :auto_close_based_on_last_post, :position, :email_in,
21
+ :email_in_allow_strangers, :logo_url, :background_url, :allow_badges, :topic_template)
22
+ .default(parent_category_id: nil)
23
+ response = put("/categories/#{category_id}", args)
24
+ response['body']['category'] if response['body']
25
+ end
26
+
16
27
  def categories(params={})
17
28
  response = get('/categories.json', params)
18
29
  response[:body]['category_list']['categories']
@@ -25,7 +36,7 @@ module DiscourseApi
25
36
  url = "/c/#{params[:category_slug]}/l/latest.json"
26
37
  if params.include?(:page)
27
38
  url = "#{url}?page=#{params[:page]}"
28
- end
39
+ end
29
40
  response = get(url)
30
41
  if response[:body]['errors']
31
42
  response[:body]['errors']
@@ -68,9 +68,9 @@ module DiscourseApi
68
68
  url << '?'
69
69
  post_ids.each do |id|
70
70
  url << "post_ids[]=#{id}&"
71
- end
71
+ end
72
72
  end
73
- response = get(url)
73
+ response = get(url)
74
74
  response[:body]
75
75
  end
76
76
  end
@@ -0,0 +1,13 @@
1
+ module DiscourseApi
2
+ module API
3
+ module Uploads
4
+ def upload_post_image(args)
5
+ args = API.params(args)
6
+ .optional(:file, :url)
7
+ .default(type: 'composer', synchronous: true)
8
+ .to_h
9
+ post('/uploads', args)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -2,7 +2,7 @@ module DiscourseApi
2
2
  module API
3
3
  module Users
4
4
  def activate(id)
5
- put "/admin/users/#{id}/activate", api_key: api_key, api_username: api_username
5
+ put("/admin/users/#{id}/activate")
6
6
  end
7
7
 
8
8
  def user(username, params={})
@@ -18,6 +18,7 @@ require 'discourse_api/api/email'
18
18
  require 'discourse_api/api/api_key'
19
19
  require 'discourse_api/api/backups'
20
20
  require 'discourse_api/api/dashboard'
21
+ require 'discourse_api/api/uploads'
21
22
 
22
23
  module DiscourseApi
23
24
  class Client
@@ -40,6 +41,7 @@ module DiscourseApi
40
41
  include DiscourseApi::API::ApiKey
41
42
  include DiscourseApi::API::Backups
42
43
  include DiscourseApi::API::Dashboard
44
+ include DiscourseApi::API::Uploads
43
45
 
44
46
  def initialize(host, api_key = nil, api_username = nil)
45
47
  raise ArgumentError, 'host needs to be defined' if host.nil? || host.empty?
@@ -1,3 +1,3 @@
1
1
  module DiscourseApi
2
- VERSION = "0.12.0"
2
+ VERSION = "0.13.0"
3
3
  end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe DiscourseApi::API::Uploads do
4
+ subject { DiscourseApi::Client.new("http://localhost:3000", "test_d7fd0429940", "test_user") }
5
+
6
+ describe "#upload_post_image" do
7
+ before do
8
+ stub_post("http://localhost:3000/uploads?api_key=test_d7fd0429940&api_username=test_user").to_return(body: fixture("upload_post_image.json"), headers: { content_type: "application/json" })
9
+ end
10
+
11
+ it "uploads an image via URL" do
12
+ image = "https://meta-discourse.global.ssl.fastly.net/user_avatar/meta.discourse.org/sam/120/5243.png"
13
+ args = { url: image }
14
+ response = subject.upload_post_image(args)
15
+ expect(response["url"]).to eq("/uploads/default/original/1X/417e624d2453925e6c68748b9aa67637c284b5aa.jpg")
16
+ end
17
+ end
18
+ end
@@ -197,7 +197,7 @@ describe DiscourseApi::API::Users do
197
197
  end
198
198
 
199
199
  it "makes the correct put request" do
200
- result = subject.grant_admin(11)
200
+ subject.grant_admin(11)
201
201
  url = "http://localhost:3000/admin/users/11/grant_admin?api_key=test_d7fd0429940&api_username=test_user"
202
202
  expect(a_put(url)).to have_been_made
203
203
  end
@@ -0,0 +1,14 @@
1
+ {
2
+ "id": 11,
3
+ "user_id": 1,
4
+ "original_filename": "grumpy_cat.gif",
5
+ "filesize": 86900,
6
+ "width": 360,
7
+ "height": 360,
8
+ "url": "/uploads/default/original/1X/417e624d2453925e6c68748b9aa67637c284b5aa.jpg",
9
+ "created_at": "2015-06-21T12:35:45.182Z",
10
+ "updated_at": "2015-06-21T12:35:45.195Z",
11
+ "sha1": "417e624d2453925e6c68748b9aa67637c284b5aa",
12
+ "origin": null,
13
+ "retain_hours": null
14
+ }
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.12.0
4
+ version: 0.13.0
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: 2016-10-07 00:00:00.000000000 Z
14
+ date: 2016-10-09 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: faraday
@@ -190,6 +190,7 @@ files:
190
190
  - examples/category.rb
191
191
  - examples/change_topic_status.rb
192
192
  - examples/create_topic.rb
193
+ - examples/create_update_category.rb
193
194
  - examples/create_user.rb
194
195
  - examples/dashboard.rb
195
196
  - examples/disposable_invite_tokens.rb
@@ -201,6 +202,7 @@ files:
201
202
  - examples/sso.rb
202
203
  - examples/topic_lists.rb
203
204
  - examples/update_user.rb
205
+ - examples/upload.rb
204
206
  - lib/discourse_api.rb
205
207
  - lib/discourse_api/api/api_key.rb
206
208
  - lib/discourse_api/api/backups.rb
@@ -218,6 +220,7 @@ files:
218
220
  - lib/discourse_api/api/sso.rb
219
221
  - lib/discourse_api/api/tags.rb
220
222
  - lib/discourse_api/api/topics.rb
223
+ - lib/discourse_api/api/uploads.rb
221
224
  - lib/discourse_api/api/users.rb
222
225
  - lib/discourse_api/client.rb
223
226
  - lib/discourse_api/error.rb
@@ -237,6 +240,7 @@ files:
237
240
  - spec/discourse_api/api/search_spec.rb
238
241
  - spec/discourse_api/api/sso_spec.rb
239
242
  - spec/discourse_api/api/topics_spec.rb
243
+ - spec/discourse_api/api/uploads_spec.rb
240
244
  - spec/discourse_api/api/users_spec.rb
241
245
  - spec/discourse_api/client_spec.rb
242
246
  - spec/fixtures/api.json
@@ -266,6 +270,7 @@ files:
266
270
  - spec/fixtures/topics_created_by.json
267
271
  - spec/fixtures/update_trust_level.json
268
272
  - spec/fixtures/upload_avatar.json
273
+ - spec/fixtures/upload_post_image.json
269
274
  - spec/fixtures/user.json
270
275
  - spec/fixtures/user_activate_success.json
271
276
  - spec/fixtures/user_badges.json
@@ -315,6 +320,7 @@ test_files:
315
320
  - spec/discourse_api/api/search_spec.rb
316
321
  - spec/discourse_api/api/sso_spec.rb
317
322
  - spec/discourse_api/api/topics_spec.rb
323
+ - spec/discourse_api/api/uploads_spec.rb
318
324
  - spec/discourse_api/api/users_spec.rb
319
325
  - spec/discourse_api/client_spec.rb
320
326
  - spec/fixtures/api.json
@@ -344,6 +350,7 @@ test_files:
344
350
  - spec/fixtures/topics_created_by.json
345
351
  - spec/fixtures/update_trust_level.json
346
352
  - spec/fixtures/upload_avatar.json
353
+ - spec/fixtures/upload_post_image.json
347
354
  - spec/fixtures/user.json
348
355
  - spec/fixtures/user_activate_success.json
349
356
  - spec/fixtures/user_badges.json