discourse_api 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1f21e1da09f27385b726a7a6da00b6fd67a73bdb
4
- data.tar.gz: b637a2ef55860b8024718f0b74453b1a1ff71f8d
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MDE1ZjRkODM3YTU1NDc4YTM4Y2Q3YWFkMTc4YzM5MWY3ZjRhNDRjMw==
5
+ data.tar.gz: !binary |-
6
+ NTZmODMxODE2ZDAxNmY2MzYzMWY1YmE4YWJkYmMyMWE5NWM1OTM4NQ==
5
7
  SHA512:
6
- metadata.gz: 425557b85eb7f8b55607297b10b1ff2429004ba0b3de9956c983b273661a9a16f24a17574d2157b0abe2ba162f131a5288233d062584b213f1d86969bdc14c77
7
- data.tar.gz: a0bec4403e81185fe7a990c0bf585e30f02381283bd567bda29ad9b79b26bb633bce7ffd5a79e2e7d935e82137e6e05aaf9b790a3d9d52548aeed342e564faac
8
+ metadata.gz: !binary |-
9
+ NzFmOGNhMmRmY2IyMmM5YTAwYmQyNzRiNTI3YzVmYzcyZDhhMTBiZDFmZDNh
10
+ Njg3Mzc1NDkzZjdkMWFlOWQyMTk0OTM3MGExOGQ2ZDM4ZTI4MDYxOTVhNmE5
11
+ MTkzZjQwYjgwYjI3OTEzYTkyNDQ3ZTc1MzNlZGI0NTg4ZjBhZmM=
12
+ data.tar.gz: !binary |-
13
+ N2RmNDhiYzZiY2E1ZDQyMWMzZjRmZWYyZTMxOTI2ZmZjYTM4NDlkZTkwZTY3
14
+ ODVjMGJmNWZhNzU5YzI1YTNhMzI5ODdjNDgxMjMwMTA2MjQwYzFhOGNhOGNj
15
+ NjllMzUzMmE2NzZhYTQ1ZmQ4YTA0NzhhNGNhZmZmODNkYzkzZTI=
@@ -1,3 +1,4 @@
1
+ require "discourse_api/api/params"
1
2
  require "discourse_api/client"
2
3
  require "discourse_api/error"
3
4
  require "discourse_api/version"
@@ -2,12 +2,12 @@ module DiscourseApi
2
2
  module API
3
3
  module Categories
4
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)
5
+ def create_category(args)
6
+ post("/categories", API.params(args)
7
+ .required(:name)
8
+ .optional(:color, :text_color)
9
+ .default(parent_category_id: nil)
10
+ )
11
11
  end
12
12
 
13
13
  def categories(*args)
@@ -1,8 +1,13 @@
1
1
  module DiscourseApi
2
2
  module API
3
3
  module Groups
4
- def create_group(name:, visible: true)
5
- post("/admin/groups", group: {name: name, visible: visible.to_s})
4
+ def create_group(args)
5
+
6
+ post("/admin/groups", group: API.params(args)
7
+ .required(:name)
8
+ .default(visible: true)
9
+ .to_h
10
+ )
6
11
  end
7
12
 
8
13
  def groups
@@ -0,0 +1,60 @@
1
+ module DiscourseApi
2
+ module API
3
+ def self.params(args)
4
+ Params.new(args)
5
+ end
6
+
7
+ class Params
8
+ def initialize(args)
9
+ @args = args
10
+ @required = []
11
+ @optional = []
12
+ @defaults = {}
13
+ end
14
+
15
+ def required(*keys)
16
+ @required.concat(keys)
17
+ self
18
+ end
19
+
20
+ def optional(*keys)
21
+ @optional.concat(keys)
22
+ self
23
+ end
24
+
25
+ def default(args)
26
+ args.each do |k,v|
27
+ @defaults[k] = v
28
+ end
29
+ self
30
+ end
31
+
32
+ def to_h
33
+ h = {}
34
+
35
+ @required.each do |k|
36
+ h[k] = @args[k]
37
+ raise ArgumentError.new("#{k} is required but not specified") unless h[k]
38
+ end
39
+
40
+ h =
41
+ if @optional.length == 0
42
+ @args.dup
43
+ else
44
+ @optional.each do |k|
45
+ h[k] = @args[k]
46
+ end
47
+ h
48
+ end
49
+
50
+ @defaults.each do |k,v|
51
+ h[k] = v unless h.key?(k)
52
+ end
53
+
54
+ h
55
+
56
+ end
57
+ end
58
+
59
+ end
60
+ end
@@ -1,8 +1,9 @@
1
1
  module DiscourseApi
2
2
  module API
3
3
  module Posts
4
- def create_post(topic_id:, raw:)
5
- post("/posts", topic_id: topic_id, raw: raw)
4
+ def create_post(args)
5
+ post("/posts", API.params(args)
6
+ .required(:topic_id, :raw))
6
7
  end
7
8
  end
8
9
  end
@@ -4,13 +4,14 @@ module DiscourseApi
4
4
  # :category OPTIONAL name of category, not ID
5
5
  # :skip_validations OPTIONAL boolean
6
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)
7
+ def create_topic(args)
8
+
9
+ args =
10
+ API.params(args)
11
+ .required(:title, :raw)
12
+ .optional(:skip_validations, :category, :auto_track)
13
+
14
+ post("/posts", args.to_h)
14
15
  end
15
16
 
16
17
  def latest_topics(*args)
@@ -98,6 +98,9 @@ module DiscourseApi
98
98
  end
99
99
 
100
100
  def request(method, path, params={})
101
+ unless Hash === params
102
+ params = params.to_h if params.respond_to? :to_h
103
+ end
101
104
  response = connection.send(method.to_sym, path, params)
102
105
  response.env
103
106
  rescue Faraday::Error::ClientError, JSON::ParserError
@@ -1,3 +1,3 @@
1
1
  module DiscourseApi
2
- VERSION = "0.2.7"
2
+ VERSION = "0.2.8"
3
3
  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.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -30,56 +30,56 @@ dependencies:
30
30
  name: faraday_middleware
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - "~>"
33
+ - - ~>
34
34
  - !ruby/object:Gem::Version
35
35
  version: '0.9'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - "~>"
40
+ - - ~>
41
41
  - !ruby/object:Gem::Version
42
42
  version: '0.9'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rack
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
47
+ - - ~>
48
48
  - !ruby/object:Gem::Version
49
49
  version: '1.5'
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - "~>"
54
+ - - ~>
55
55
  - !ruby/object:Gem::Version
56
56
  version: '1.5'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: dotenv
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - "~>"
61
+ - - ~>
62
62
  - !ruby/object:Gem::Version
63
63
  version: '1.0'
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - "~>"
68
+ - - ~>
69
69
  - !ruby/object:Gem::Version
70
70
  version: '1.0'
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: bundler
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - "~>"
75
+ - - ~>
76
76
  - !ruby/object:Gem::Version
77
77
  version: '1.3'
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
84
  version: '1.3'
85
85
  - !ruby/object:Gem::Dependency
@@ -100,84 +100,84 @@ dependencies:
100
100
  name: rspec
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - "~>"
103
+ - - ~>
104
104
  - !ruby/object:Gem::Version
105
105
  version: '3.0'
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
112
  version: '3.0'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: webmock
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - "~>"
117
+ - - ~>
118
118
  - !ruby/object:Gem::Version
119
119
  version: '1.18'
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
126
  version: '1.18'
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: guard-rspec
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
- - - "~>"
131
+ - - ~>
132
132
  - !ruby/object:Gem::Version
133
133
  version: '4.3'
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
140
  version: '4.3'
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: guard
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - "~>"
145
+ - - ~>
146
146
  - !ruby/object:Gem::Version
147
147
  version: '2.6'
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
154
  version: '2.6'
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: rb-inotify
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - "~>"
159
+ - - ~>
160
160
  - !ruby/object:Gem::Version
161
161
  version: '0.9'
162
162
  type: :development
163
163
  prerelease: false
164
164
  version_requirements: !ruby/object:Gem::Requirement
165
165
  requirements:
166
- - - "~>"
166
+ - - ~>
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0.9'
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: simplecov
171
171
  requirement: !ruby/object:Gem::Requirement
172
172
  requirements:
173
- - - "~>"
173
+ - - ~>
174
174
  - !ruby/object:Gem::Version
175
175
  version: '0.9'
176
176
  type: :development
177
177
  prerelease: false
178
178
  version_requirements: !ruby/object:Gem::Requirement
179
179
  requirements:
180
- - - "~>"
180
+ - - ~>
181
181
  - !ruby/object:Gem::Version
182
182
  version: '0.9'
183
183
  description: Discourse API
@@ -189,8 +189,8 @@ executables: []
189
189
  extensions: []
190
190
  extra_rdoc_files: []
191
191
  files:
192
- - ".gitignore"
193
- - ".travis.yml"
192
+ - .gitignore
193
+ - .travis.yml
194
194
  - CHANGELOG.md
195
195
  - Gemfile
196
196
  - Guardfile
@@ -211,6 +211,7 @@ files:
211
211
  - lib/discourse_api/api/groups.rb
212
212
  - lib/discourse_api/api/invite.rb
213
213
  - lib/discourse_api/api/notifications.rb
214
+ - lib/discourse_api/api/params.rb
214
215
  - lib/discourse_api/api/posts.rb
215
216
  - lib/discourse_api/api/private_messages.rb
216
217
  - lib/discourse_api/api/search.rb
@@ -257,17 +258,17 @@ require_paths:
257
258
  - lib
258
259
  required_ruby_version: !ruby/object:Gem::Requirement
259
260
  requirements:
260
- - - ">="
261
+ - - ! '>='
261
262
  - !ruby/object:Gem::Version
262
263
  version: '0'
263
264
  required_rubygems_version: !ruby/object:Gem::Requirement
264
265
  requirements:
265
- - - ">="
266
+ - - ! '>='
266
267
  - !ruby/object:Gem::Version
267
268
  version: '0'
268
269
  requirements: []
269
270
  rubyforge_project:
270
- rubygems_version: 2.2.2
271
+ rubygems_version: 2.1.8
271
272
  signing_key:
272
273
  specification_version: 4
273
274
  summary: Allows access to the Discourse API