discourse_api 0.2.4 → 0.2.5

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: 30c8f8cfc3ece69e96755f29c5765f204d505b10
4
- data.tar.gz: 80873e28b06c2912282a2a9482d579536d97e250
3
+ metadata.gz: 831e6a472cbcaff97004039ba2eea26f3a21fd75
4
+ data.tar.gz: afcaa7863e713f022e40bc5b4677d69334870800
5
5
  SHA512:
6
- metadata.gz: 4fb815d8b714c4c0a90e931265b4d76a027848303c47bec066dbc79a7c3844026c4c8800b9fe88d89ffe460cf17ce97a67de9ea2dc9711e3a2f4c70f3ada1ba0
7
- data.tar.gz: eba82e043e294893e8655fa8efd1b0c923657f03aa691daf8455739d0bf6b6841b5b5f10624cd8333248494eaac7fa1e40a64b7578a4963adc5746bcfb50c28f
6
+ metadata.gz: 60dfe37fc068b570befdd131e3ccc58f458a362e565e17b6d12371b7340abda526c3dd63c52a58d69a742ad8c10e566a5402c6945e0cf39d3013e700ba93c3d7
7
+ data.tar.gz: 4df138687be5cb12299ac0f66bce1b7bce60d51f086894cbc0411ee756c1d7ebea76b94bbe002079be1ed8037cda2f9ba0f5ae3a308c0524a269843f08c6fae2
data/.gitignore CHANGED
@@ -18,3 +18,4 @@ tmp
18
18
  bin/
19
19
  .ruby-gemset
20
20
  .ruby-version
21
+ .env
@@ -20,6 +20,9 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency "faraday", "0.9.0"
22
22
  spec.add_dependency "faraday_middleware", "~> 0.9"
23
+ spec.add_dependency "rack", "~> 1.5"
24
+ spec.add_dependency "dotenv", "~> 1.0"
25
+
23
26
  spec.add_development_dependency "bundler", "~> 1.3"
24
27
  spec.add_development_dependency "rake", "10.3.2"
25
28
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -1,7 +1,7 @@
1
1
  $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
2
  require File.expand_path('../../lib/discourse_api', __FILE__)
3
3
 
4
- client = DiscourseApi::Client.new("localhost", 3000)
4
+ client = DiscourseApi::Client.new("http://localhost:3000")
5
5
  client.api_key = "YOUR_API_KEY"
6
6
  client.api_username = "YOUR_USERNAME"
7
7
 
@@ -13,3 +13,5 @@ puts client.update_user("batman", name: "Bruce Wayne")
13
13
  puts client.update_email("batman", "batman@gotham.com")
14
14
  # update avatar of user whose username is "batman"
15
15
  puts client.update_avatar("batman", "http://meta-discourse.r.worldssl.net/uploads/default/2497/724a6ef2e79d2bc7.png")
16
+ # log out everywhere and refresh browser of user whose id is "2"
17
+ puts client.log_out_and_refresh_browser(2)
@@ -1,6 +1,15 @@
1
1
  module DiscourseApi
2
2
  module API
3
3
  module Categories
4
+ # :color and :text_color are RGB hexadecimal strings
5
+ def create_category(name:, color:, text_color:, parent_category_id: nil)
6
+ post("/categories",
7
+ name: name,
8
+ color: color,
9
+ text_color: text_color,
10
+ parent_category_id: parent_category_id)
11
+ end
12
+
4
13
  def categories(*args)
5
14
  response = get('/categories.json', args)
6
15
  response[:body]['category_list']['categories']
@@ -0,0 +1,14 @@
1
+ module DiscourseApi
2
+ module API
3
+ module Groups
4
+ def create_group(name:, visible: false)
5
+ post("/admin/groups", group: {name: name, visible: visible.to_s})
6
+ end
7
+
8
+ def groups
9
+ response = get("/admin/groups")
10
+ response.body
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ module DiscourseApi
2
+ module API
3
+ module Posts
4
+ def create_post(topic_id:, raw:)
5
+ post("/posts", topic_id: topic_id, raw: raw)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,8 +1,16 @@
1
1
  module DiscourseApi
2
2
  module API
3
3
  module Topics
4
- def create_topic(params={})
5
- post("/posts", params)
4
+ # :category OPTIONAL name of category, not ID
5
+ # :skip_validations OPTIONAL boolean
6
+ # :auto_track OPTIONAL boolean
7
+ def create_topic(title:, raw:, category: nil, skip_validations: nil, auto_track: nil)
8
+ post("/posts",
9
+ title: title,
10
+ raw: raw,
11
+ category: category,
12
+ skip_validations: skip_validations,
13
+ auto_track: auto_track)
6
14
  end
7
15
 
8
16
  def latest_topics(*args)
@@ -36,6 +36,10 @@ module DiscourseApi
36
36
  # POST the args
37
37
  post("/users", args)
38
38
  end
39
+
40
+ def log_out_and_refresh_browser(id)
41
+ post("/admin/users/#{id}/log_out_and_refresh_browser")
42
+ end
39
43
  end
40
44
  end
41
45
  end
@@ -1,3 +1,4 @@
1
+ require 'dotenv'
1
2
  require 'faraday'
2
3
  require 'faraday_middleware'
3
4
  require 'json'
@@ -6,7 +7,9 @@ require 'discourse_api/api/categories'
6
7
  require 'discourse_api/api/search'
7
8
  require 'discourse_api/api/sso'
8
9
  require 'discourse_api/api/topics'
10
+ require 'discourse_api/api/posts'
9
11
  require 'discourse_api/api/users'
12
+ require 'discourse_api/api/groups'
10
13
  require 'discourse_api/api/invite'
11
14
  require 'discourse_api/api/private_messages'
12
15
  require 'discourse_api/api/notifications'
@@ -20,12 +23,17 @@ module DiscourseApi
20
23
  include DiscourseApi::API::Search
21
24
  include DiscourseApi::API::SSO
22
25
  include DiscourseApi::API::Topics
26
+ include DiscourseApi::API::Posts
23
27
  include DiscourseApi::API::Users
28
+ include DiscourseApi::API::Groups
24
29
  include DiscourseApi::API::Invite
25
30
  include DiscourseApi::API::PrivateMessages
26
31
  include DiscourseApi::API::Notifications
27
32
 
28
- def initialize(host, api_key=nil, api_username=nil)
33
+ def initialize(host = ENV["DISCOURSE_URL"],
34
+ api_key = ENV["DISCOURSE_API_KEY"],
35
+ api_username = ENV["DISCOURSE_USERNAME"])
36
+ raise ArgumentError, 'host needs to be defined' if host.nil? || host.empty?
29
37
  @host = host
30
38
  @api_key = api_key
31
39
  @api_username = api_username
@@ -50,7 +58,13 @@ module DiscourseApi
50
58
  end
51
59
 
52
60
  def post(path, params={})
53
- request(:post, path, params)
61
+ response = request(:post, path, params)
62
+ case response.status
63
+ when 200
64
+ response.body
65
+ else
66
+ raise ApiError, response.body
67
+ end
54
68
  end
55
69
 
56
70
  def put(path, params={})
@@ -86,4 +100,6 @@ module DiscourseApi
86
100
  raise DiscourseApi::Error
87
101
  end
88
102
  end
103
+
104
+ class ApiError < Exception; end
89
105
  end
@@ -1,3 +1,3 @@
1
1
  module DiscourseApi
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.5"
3
3
  end
@@ -15,7 +15,8 @@ describe DiscourseApi::API::Topics do
15
15
 
16
16
  it "returns success" do
17
17
  response = subject.invite_user_to_topic(email: "fake_user@example.com", topic_id: 12)
18
- expect(response[:body]['success']).to be_truthy
18
+ expect(response).to be_a Hash
19
+ expect(response['success']).to be_truthy
19
20
  end
20
21
  end
21
22
 
@@ -92,7 +92,8 @@ describe DiscourseApi::API::Users do
92
92
 
93
93
  it "returns success" do
94
94
  response = subject.create_user :name => "Test User", :email => "test2@example.com", :password => "P@ssword", :username => "test2"
95
- expect(response[:body]['success']).to be_truthy
95
+ expect(response).to be_a Hash
96
+ expect(response['success']).to be_truthy
96
97
  end
97
98
  end
98
99
  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.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-10-30 00:00:00.000000000 Z
13
+ date: 2014-11-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday
@@ -40,6 +40,34 @@ dependencies:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '0.9'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rack
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.5'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.5'
57
+ - !ruby/object:Gem::Dependency
58
+ name: dotenv
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.0'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.0'
43
71
  - !ruby/object:Gem::Dependency
44
72
  name: bundler
45
73
  requirement: !ruby/object:Gem::Requirement
@@ -179,8 +207,10 @@ files:
179
207
  - examples/update_user.rb
180
208
  - lib/discourse_api.rb
181
209
  - lib/discourse_api/api/categories.rb
210
+ - lib/discourse_api/api/groups.rb
182
211
  - lib/discourse_api/api/invite.rb
183
212
  - lib/discourse_api/api/notifications.rb
213
+ - lib/discourse_api/api/posts.rb
184
214
  - lib/discourse_api/api/private_messages.rb
185
215
  - lib/discourse_api/api/search.rb
186
216
  - lib/discourse_api/api/sso.rb