discourse_api 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
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