growi-client 0.9.0 → 1.0.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
  SHA256:
3
- metadata.gz: ac56c4422e6572699058511873cfed8cf01f01fc15b688e4aa13bd8a19fb4592
4
- data.tar.gz: 0eb97e2e86c0ec4fe870ff56e14fe2cf965d5a6d82314bd53465232412c5b9dc
3
+ metadata.gz: 1be36d8f24f482a6ef4619cdd24e2cb0eb9864c8942ca73460041afa7c4bda6e
4
+ data.tar.gz: 1313b309deaad58f062c61c71c1277e34c0b1f1b355bb3f9995946993befec13
5
5
  SHA512:
6
- metadata.gz: ee9245bcda0307298726bda847805cf25b4f02c69e5304f4e7709c2f4142ed52401d118260ebcffeee3a01efb805a51b2da0cbf699e4961f3f607df4f935ee1a
7
- data.tar.gz: 74c8108b80b7623f9494d224ada9404bc4671213bee37ad3679fe3689796c18ca50a9ed1a86ca4bc7fd88d4c9d4efc61abb6a004ff150c40883cf55004684835
6
+ metadata.gz: 129f361ed75e5787dd3e16ae6160a7a5bf65c32cf710531ba380087ec9bcc9334f61d2186fa2c10c647fd8e1187a5a342b67124fe113a12be790f5a58b507750
7
+ data.tar.gz: 0b7639ced1c08bda7d00fb1de4329658bbf73f7b3e1bdb2d3febbffcef8b7cab03d7a86ed4f543816f49576f3c808ecaaffa75d5174c1313b34b30e9f6ece84c
data/README.md CHANGED
@@ -10,6 +10,7 @@ growi-client is passed the test of these Growi versions.
10
10
 
11
11
  |growi-client|Growi|
12
12
  | --- | --- |
13
+ |1.0.0|3.3.3|
13
14
  |0.9.0|3.1.12|
14
15
 
15
16
  ## Installation
@@ -219,3 +220,7 @@ The gem is available as open source under the terms of the [MIT License](http://
219
220
  ## Code of Conduct
220
221
 
221
222
  Everyone interacting in the Growi::Client project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/ryu-satgrowiwi-client/blob/master/CODE_OF_CONDUCT.md).
223
+
224
+ ## TODO
225
+
226
+ - [ ] pagenation に対応する
@@ -23,7 +23,7 @@ class GApiRequestAttachmentsList < GApiRequestBase
23
23
  params = { method: :get, url: entry_point, headers: { params: @param } }.merge(rest_client_param)
24
24
  ret = JSON.parse RestClient::Request.execute params
25
25
  if (ret['ok'] == false)
26
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
26
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
27
27
  end
28
28
  attachments = []
29
29
  ret['attachments'].each do |attachment|
@@ -35,10 +35,10 @@ class GApiRequestAttachmentsList < GApiRequestBase
35
35
  protected
36
36
 
37
37
  # バリデーションエラーを取得する
38
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
38
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
39
39
  def _invalid
40
40
  if ! (@param[:page_id])
41
- CPInvalidRequest.new 'Parameter page_id is required.'
41
+ GCInvalidRequest.new 'Parameter page_id is required.'
42
42
  end
43
43
  end
44
44
 
@@ -76,7 +76,7 @@ class GApiRequestAttachmentsAdd < GApiRequestBase
76
76
  }.merge(rest_client_param)
77
77
  ret = JSON.parse RestClient::Request.execute params
78
78
  if (ret['ok'] == false)
79
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
79
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
80
80
  end
81
81
  return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page']))
82
82
  end
@@ -84,10 +84,10 @@ class GApiRequestAttachmentsAdd < GApiRequestBase
84
84
  protected
85
85
 
86
86
  # バリデーションエラーを取得する
87
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
87
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
88
88
  def _invalid
89
89
  if ! (@param[:file] && @param[:page_id])
90
- CPInvalidRequest.new 'Parameters file and page_id are required.'
90
+ GCInvalidRequest.new 'Parameters file and page_id are required.'
91
91
  end
92
92
  end
93
93
 
@@ -121,7 +121,7 @@ class GApiRequestAttachmentsRemove < GApiRequestBase
121
121
  }.merge(rest_client_param)
122
122
  ret = JSON.parse RestClient::Request.execute params
123
123
  if (ret['ok'] == false)
124
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
124
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
125
125
  end
126
126
  return GApiReturn.new(ok: ret['ok'], data: nil)
127
127
  end
@@ -129,10 +129,10 @@ class GApiRequestAttachmentsRemove < GApiRequestBase
129
129
  protected
130
130
 
131
131
  # バリデーションエラーを取得する
132
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
132
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
133
133
  def _invalid
134
134
  if ! (@param[:attachment_id])
135
- CPInvalidRequest.new 'Parameter attachment_id is required.'
135
+ GCInvalidRequest.new 'Parameter attachment_id is required.'
136
136
  end
137
137
  end
138
138
 
@@ -1,11 +1,12 @@
1
1
  # APIリクエストのバリデーションエラー
2
2
  # @note rescue する必要はないので Exception クラスは継承しない
3
- class CPInvalidRequest
4
- attr_reader :msg
3
+ class GCInvalidRequest
4
+ attr_reader :ok, :msg
5
5
 
6
6
  # コンストラクタ
7
7
  # @param [String] msg エラーメッセージ(原因と対策が分かるとよい)
8
8
  def initialize(msg)
9
+ @ok = false
9
10
  @msg = msg
10
11
  end
11
12
 
@@ -97,9 +98,9 @@ class GApiRequestBase
97
98
  protected
98
99
 
99
100
  # バリデーションエラーを取得する
100
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
101
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
101
102
  def _invalid
102
- return CPInvalidRequest "Invalid API request.";
103
+ return GCInvalidRequest "Invalid API request.";
103
104
  end
104
105
 
105
106
  end
@@ -1,8 +1,9 @@
1
1
  require_relative 'api_request_base'
2
2
  require 'growi/client/model/growi_page'
3
+ require 'growi/client/logger'
3
4
 
4
5
  # ページ一覧リクエスト用クラス
5
- # @ref https://github.com/growi/growi/blob/master/lib/routes/page.js
6
+ # @ref https://github.com/weseek/growi/blob/master/src/server/routes/page.js
6
7
  class GApiRequestPagesList < GApiRequestBase
7
8
 
8
9
  # コンストラクタ
@@ -14,6 +15,7 @@ class GApiRequestPagesList < GApiRequestBase
14
15
  end
15
16
 
16
17
  # リクエストを実行する
18
+ # [TODO] pagination に対応する
17
19
  # @override
18
20
  # @param [String] entry_point APIのエントリーポイントとなるURL(ex. http://localhost:3000/_api/pages.list)
19
21
  # @param [Hash] rest_client_param RestClientのパラメータ
@@ -25,28 +27,44 @@ class GApiRequestPagesList < GApiRequestBase
25
27
  end
26
28
 
27
29
  params = { method: :get, url: entry_point, headers: { params: @param } }.merge(rest_client_param)
28
- ret = JSON.parse RestClient::Request.execute params
29
- if (ret['ok'] == false)
30
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
30
+ GCLogger.logger.debug('Request: ' + params.to_s)
31
+
32
+ begin
33
+ raw_ret = RestClient::Request.execute params
34
+ GCLogger.logger.debug('Return: ' + raw_ret.to_s)
35
+ ret = JSON.parse raw_ret
36
+ rescue Exception => e
37
+ GCLogger.logger.error(e)
38
+ return GCInvalidRequest.new "Unknown error occured: #{e}"
39
+ end
40
+
41
+ if (!ret['ok'].nil? && ret['ok'] == false)
42
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
31
43
  end
32
- pages = []
33
- ret['pages'].each do |page|
34
- pages.push(GrowiPage.new(page))
44
+
45
+ begin
46
+ pages = []
47
+ ret['pages'].each do |page|
48
+ pages.push(GrowiPage.new(page))
49
+ end
50
+ return GApiReturn.new(ok: ret['ok'], data: pages)
51
+ rescue Exception => e
52
+ GCLogger.logger.error(e)
53
+ return GCInvalidRequest.new "Fail to parse: #{e}"
35
54
  end
36
- return GApiReturn.new(ok: ret['ok'], data: pages)
37
55
  end
38
56
 
39
57
  protected
40
58
 
41
59
  # バリデーションエラーを取得する
42
60
  # @override
43
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
61
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
44
62
  def _invalid
45
63
  if ! (@param[:path] || @param[:user])
46
- return CPInvalidRequest.new 'Parameter path or user is required.'
64
+ return GCInvalidRequest.new 'Parameter path or user is required.'
47
65
  end
48
66
  if (@param[:path] && @param[:user])
49
- return CPInvalidRequest.new 'Parameter path and user can not be specified both.'
67
+ return GCInvalidRequest.new 'Parameter path and user can not be specified both.'
50
68
  end
51
69
  end
52
70
 
@@ -76,11 +94,23 @@ class GApiRequestPagesGet < GApiRequestBase
76
94
  if invalid?
77
95
  return validation_msg
78
96
  end
97
+
79
98
  params = { method: :get, url: entry_point, headers: { params: @param } }.merge(rest_client_param)
80
- ret = JSON.parse RestClient::Request.execute params
81
- if (ret['ok'] == false)
82
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
99
+ GCLogger.logger.debug('Request: ' + params.to_s)
100
+
101
+ begin
102
+ raw_ret = RestClient::Request.execute params
103
+ GCLogger.logger.debug('Return: ' + raw_ret.to_s)
104
+ ret = JSON.parse raw_ret
105
+ rescue Exception => e
106
+ GCLogger.logger.error(e)
107
+ return GCInvalidRequest.new "Unknown error occured: #{e}"
108
+ end
109
+
110
+ if (!ret['ok'].nil? && ret['ok'] == false)
111
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
83
112
  end
113
+
84
114
  return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page']))
85
115
  end
86
116
 
@@ -88,10 +118,10 @@ protected
88
118
 
89
119
  # バリデーションエラーを取得する
90
120
  # @override
91
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
121
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
92
122
  def _invalid
93
123
  if ! (@param[:path] || @param[:page_id])
94
- return CPInvalidRequest.new 'Parameter path or page_id is required.'
124
+ return GCInvalidRequest.new 'Parameter path or page_id is required.'
95
125
  end
96
126
  end
97
127
 
@@ -125,10 +155,21 @@ class GApiRequestPagesCreate < GApiRequestBase
125
155
  payload: @param.to_json,
126
156
  headers: { content_type: :json, accept: :json }
127
157
  }.merge(rest_client_param)
128
- ret = JSON.parse RestClient::Request.execute params
129
- if (ret['ok'] == false)
130
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
158
+ GCLogger.logger.debug('Request: ' + params.to_s)
159
+
160
+ begin
161
+ raw_ret = RestClient::Request.execute params
162
+ GCLogger.logger.debug('Return: ' + raw_ret.to_s)
163
+ ret = JSON.parse raw_ret
164
+ rescue Exception => e
165
+ GCLogger.logger.error(e)
166
+ return GCInvalidRequest.new "Unknown error occured: #{e}"
131
167
  end
168
+
169
+ if (!ret['ok'].nil? && ret['ok'] == false)
170
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
171
+ end
172
+
132
173
  return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page']))
133
174
  end
134
175
 
@@ -136,10 +177,10 @@ protected
136
177
 
137
178
  # バリデーションエラーを取得する
138
179
  # @override
139
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
180
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
140
181
  def _invalid
141
182
  if ! (@param[:body] && @param[:path])
142
- return CPInvalidRequest.new 'Parameters body and path are required.'
183
+ return GCInvalidRequest.new 'Parameters body and path are required.'
143
184
  end
144
185
  end
145
186
 
@@ -172,10 +213,21 @@ class GApiRequestPagesUpdate < GApiRequestBase
172
213
  payload: @param.to_json,
173
214
  headers: { content_type: :json, accept: :json }
174
215
  }.merge(rest_client_param)
175
- ret = JSON.parse RestClient::Request.execute params
176
- if (ret['ok'] == false)
177
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
216
+ GCLogger.logger.debug('Request: ' + params.to_s)
217
+
218
+ begin
219
+ raw_ret = RestClient::Request.execute params
220
+ GCLogger.logger.debug('Return: ' + raw_ret.to_s)
221
+ ret = JSON.parse raw_ret
222
+ rescue Exception => e
223
+ GCLogger.logger.error(e)
224
+ return GCInvalidRequest.new "Unknown error occured: #{e}"
225
+ end
226
+
227
+ if (!ret['ok'].nil? && ret['ok'] == false)
228
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
178
229
  end
230
+
179
231
  return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page']))
180
232
  end
181
233
 
@@ -183,10 +235,10 @@ protected
183
235
 
184
236
  # バリデーションエラーを取得する
185
237
  # @override
186
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
238
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
187
239
  def _invalid
188
- if ! (@param[:page_id] && @param[:body])
189
- return CPInvalidRequest.new 'Parameters page_id and body are required.'
240
+ if ! (@param[:page_id] && @param[:revision_id] && @param[:body])
241
+ return GCInvalidRequest.new 'Parameters page_id, revision_id and body are required.'
190
242
  end
191
243
  end
192
244
 
@@ -218,21 +270,40 @@ class GApiRequestPagesSeen < GApiRequestBase
218
270
  payload: @param.to_json,
219
271
  headers: { content_type: :json, accept: :json }
220
272
  }.merge(rest_client_param)
221
- ret = JSON.parse RestClient::Request.execute params
222
- if (ret['ok'] == false)
223
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
273
+ GCLogger.logger.debug('Request: ' + params.to_s)
274
+
275
+ begin
276
+ raw_ret = RestClient::Request.execute params
277
+ GCLogger.logger.debug('Return: ' + raw_ret.to_s)
278
+ ret = JSON.parse raw_ret
279
+ rescue Exception => e
280
+ GCLogger.logger.error(e)
281
+ return GCInvalidRequest.new "Unknown error occured: #{e}"
282
+ end
283
+
284
+ if (!ret['ok'].nil? && ret['ok'] == false)
285
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
286
+ end
287
+
288
+ begin
289
+ users = ret['seenUser'].map do |user|
290
+ user.is_a?(String) ? user : GrowiUser.new(user)
291
+ end
292
+ return GApiReturn.new(ok: ret['ok'], data: users)
293
+ rescue Exception => e
294
+ GCLogger.logger.error(e)
295
+ return GCInvalidRequest.new "Fail to parse: #{e}"
224
296
  end
225
- return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['seenUser']))
226
297
  end
227
298
 
228
299
  protected
229
300
 
230
301
  # バリデーションエラーを取得する
231
302
  # @override
232
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
303
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
233
304
  def _invalid
234
305
  if ! (@param[:page_id])
235
- return CPInvalidRequest.new 'Parameter page_id required.'
306
+ return GCInvalidRequest.new 'Parameter page_id required.'
236
307
  end
237
308
  end
238
309
 
@@ -259,14 +330,26 @@ class GApiRequestLikesAdd < GApiRequestBase
259
330
  if invalid?
260
331
  return validation_msg
261
332
  end
333
+
262
334
  params = { method: :post, url: entry_point,
263
335
  payload: @param.to_json,
264
336
  headers: { content_type: :json, accept: :json }
265
337
  }.merge(rest_client_param)
266
- ret = JSON.parse RestClient::Request.execute params
267
- if (ret['ok'] == false)
268
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
338
+ GCLogger.logger.debug('Request: ' + params.to_s)
339
+
340
+ begin
341
+ raw_ret = RestClient::Request.execute params
342
+ GCLogger.logger.debug('Return: ' + raw_ret.to_s)
343
+ ret = JSON.parse raw_ret
344
+ rescue Exception => e
345
+ GCLogger.logger.error(e)
346
+ return GCInvalidRequest.new "Unknown error occured: #{e}"
347
+ end
348
+
349
+ if (!ret['ok'].nil? && ret['ok'] == false)
350
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
269
351
  end
352
+
270
353
  return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page']))
271
354
  end
272
355
 
@@ -274,10 +357,10 @@ protected
274
357
 
275
358
  # バリデーションエラーを取得する
276
359
  # @override
277
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
360
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
278
361
  def _invalid
279
362
  if ! (@param[:page_id])
280
- return CPInvalidRequest.new 'Parameter page_id required.'
363
+ return GCInvalidRequest.new 'Parameter page_id required.'
281
364
  end
282
365
  end
283
366
 
@@ -308,10 +391,21 @@ class GApiRequestLikesRemove < GApiRequestBase
308
391
  payload: @param.to_json,
309
392
  headers: { content_type: :json, accept: :json }
310
393
  }.merge(rest_client_param)
311
- ret = JSON.parse RestClient::Request.execute params
312
- if (ret['ok'] == false)
313
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
394
+ GCLogger.logger.debug('Request: ' + params.to_s)
395
+
396
+ begin
397
+ raw_ret = RestClient::Request.execute params
398
+ GCLogger.logger.debug('Return: ' + raw_ret.to_s)
399
+ ret = JSON.parse raw_ret
400
+ rescue Exception => e
401
+ GCLogger.logger.error(e)
402
+ return GCInvalidRequest.new "Unknown error occured: #{e}"
403
+ end
404
+
405
+ if (!ret['ok'].nil? && ret['ok'] == false)
406
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
314
407
  end
408
+
315
409
  return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page']))
316
410
  end
317
411
 
@@ -319,10 +413,10 @@ protected
319
413
 
320
414
  # バリデーションエラーを取得する
321
415
  # @override
322
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
416
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
323
417
  def _invalid
324
418
  if ! (@param[:page_id])
325
- return CPInvalidRequest.new 'Parameter page_id required.'
419
+ return GCInvalidRequest.new 'Parameter page_id required.'
326
420
  end
327
421
  end
328
422
 
@@ -351,25 +445,41 @@ class GApiRequestPagesUpdatePost < GApiRequestBase
351
445
  return validation_msg
352
446
  end
353
447
  params = { method: :get, url: entry_point, headers: { params: @param } }.merge(rest_client_param)
354
- ret = JSON.parse RestClient::Request.execute params
355
- if (ret['ok'] == false)
356
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
448
+ GCLogger.logger.debug('Request: ' + params.to_s)
449
+
450
+ begin
451
+ raw_ret = RestClient::Request.execute params
452
+ GCLogger.logger.debug('Return: ' + raw_ret.to_s)
453
+ ret = JSON.parse raw_ret
454
+ rescue Exception => e
455
+ GCLogger.logger.error(e)
456
+ return GCInvalidRequest.new "Unknown error occured: #{e}"
457
+ end
458
+
459
+ if (!ret['ok'].nil? && ret['ok'] == false)
460
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
357
461
  end
358
- posts = []
359
- ret['updatePost'].each do |post|
360
- pages.push(GrowiPage.new(post))
462
+
463
+ begin
464
+ posts = []
465
+ ret['updatePost'].each do |post|
466
+ pages.push(GrowiPage.new(post))
467
+ end
468
+ return GApiReturn.new(ok: ret['ok'], data: posts)
469
+ rescue Exception => e
470
+ GCLogger.logger.error(e)
471
+ return GCInvalidRequest.new "Fail to parse: #{e}"
361
472
  end
362
- return GApiReturn.new(ok: ret['ok'], data: posts)
363
473
  end
364
474
 
365
475
  protected
366
476
 
367
477
  # バリデーションエラーを取得する
368
478
  # @override
369
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
479
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
370
480
  def _invalid
371
481
  if ! (@param[:path])
372
- return CPInvalidRequest.new 'Parameter path required.'
482
+ return GCInvalidRequest.new 'Parameter path required.'
373
483
  end
374
484
  end
375
485
 
@@ -398,11 +508,23 @@ class GApiRequestPagesRemove < GApiRequestBase
398
508
  if invalid?
399
509
  return validation_msg
400
510
  end
511
+
401
512
  param = { method: :get, url: entry_point, headers: { params: @param } }.merge(rest_client_param)
402
- ret = JSON.parse RestClient::Request.execute param
403
- if (ret['ok'] == false)
404
- return CPInvalidRequest.new "API return false with msg: #{ret['msg']}"
513
+ GCLogger.logger.debug('Request: ' + params.to_s)
514
+
515
+ begin
516
+ raw_ret = RestClient::Request.execute params
517
+ GCLogger.logger.debug('Return: ' + raw_ret.to_s)
518
+ ret = JSON.parse raw_ret
519
+ rescue Exception => e
520
+ GCLogger.logger.error(e)
521
+ return GCInvalidRequest.new "Unknown error occured: #{e}"
522
+ end
523
+
524
+ if (!ret['ok'].nil? && ret['ok'] == false)
525
+ return GCInvalidRequest.new "API return false with msg: #{ret['msg']}"
405
526
  end
527
+
406
528
  return GApiReturn.new(ok: ret['ok'], data: GrowiPage.new(ret['page']))
407
529
  end
408
530
 
@@ -410,10 +532,10 @@ protected
410
532
 
411
533
  # バリデーションエラーを取得する
412
534
  # @override
413
- # @return [nil/CPInvalidRequest] バリデーションエラー結果
535
+ # @return [nil/GCInvalidRequest] バリデーションエラー結果
414
536
  def _invalid
415
537
  if ! (@param[:page_id] || @param[:revision_id])
416
- return CPInvalidRequest.new 'Parameter page_id or revision_id is required.'
538
+ return GCInvalidRequest.new 'Parameter page_id or revision_id is required.'
417
539
  end
418
540
  end
419
541
 
@@ -11,8 +11,8 @@ class GrowiClient
11
11
 
12
12
  # コンストラクタ
13
13
  def initialize(growi_url: '', access_token: '', rest_client_param: {})
14
- raise ArgumentError, 'Config `growi_url` is required.' if growi_url.empty?
15
- raise ArgumentError, 'Config `access_token` is required.' if access_token.empty?
14
+ raise ArgumentError, 'Config `growi_url` is required.' if growi_url.nil?
15
+ raise ArgumentError, 'Config `access_token` is required.' if access_token.nil?
16
16
 
17
17
  @growi_url = growi_url
18
18
  @access_token = access_token
@@ -34,8 +34,8 @@ class GrowiClient
34
34
  # @return [String] ページID
35
35
  def page_id(path_exp: nil)
36
36
  ret = request(GApiRequestPagesList.new path_exp: path_exp)
37
- return nil if (ret.kind_of? CPInvalidRequest || ret.data.nil?)
38
- return ret.data.find { |page| URI.unescape(page.path) == path_exp }&.id
37
+ return nil if (ret.kind_of? GCInvalidRequest || ret.data.nil?)
38
+ return ret.data.find { |page| URI.unescape(page.path) == path_exp }&._id
39
39
  end
40
40
 
41
41
  # ページが存在するか調べる
@@ -0,0 +1,19 @@
1
+ require 'logger'
2
+ require 'singleton'
3
+
4
+ # Logger
5
+ class GCLogger
6
+ include Singleton
7
+ attr_reader :logger
8
+
9
+ # Constractor
10
+ def initialize(logdev = STDOUT, shift_age = 0, shift_size = 1048576, params = {})
11
+ init_params = { level: ENV['GC_LOG_LEVEL'] || Logger::Severity::ERROR }
12
+ @logger = Logger.new(logdev, init_params.merge(params).compact)
13
+ end
14
+
15
+ # instance of Logger
16
+ def self.logger
17
+ instance.logger
18
+ end
19
+ end
@@ -15,14 +15,13 @@ class GrowiAttachment < GrowiModelBase
15
15
  }
16
16
 
17
17
  params = init_params.merge(params.map { |k,v| [k.to_sym, v] }.to_h)
18
- if (params[:_id] == nil)
19
- raise ArgumentError.new('Parameters id is required.')
18
+ if (params[:_id].nil?)
19
+ raise ArgumentError.new('Parameter _id is required.')
20
20
  end
21
21
 
22
22
  GrowiModelFactory.instance.register({
23
- attachment_creator: Proc.new { |param| param != nil && param.is_a?(String) ? param : GrowiUser.new(param) },
24
- attachment_createdAt: Proc.new { |date_str|
25
- date_str != nil && DateTime.parse(date_str) },
23
+ attachment_creator: Proc.new { |param| !param.nil? && param.is_a?(String) ? param : GrowiUser.new(param) },
24
+ attachment_createdAt: Proc.new { |date_str| !date_str.nil? && date_str != "" ? DateTime.parse(date_str) : "" },
26
25
  })
27
26
  maked_params = {}
28
27
  params.each do |k,v|
@@ -15,7 +15,8 @@ class GrowiPage < GrowiModelBase
15
15
  attr_reader :_id, :redirectTo, :updatedAt, :lastUpdateUser,
16
16
  :creator, :path, :__v, :revision, :createdAt,
17
17
  :commentCount, :seenUsers, :liker, :grantedUsers,
18
- :grant, :status, :id
18
+ :grant, :status, :extended,
19
+ :pageIdOnHackmd, :revisionHackmdSynced, :hasDraftOnHackmd
19
20
 
20
21
  # Constract
21
22
  # @param [Hash] params Prameters data show as Hash
@@ -25,21 +26,22 @@ class GrowiPage < GrowiModelBase
25
26
  _id: '', redirectTo: nil, updatedAt: '', lastUpdateUser: '',
26
27
  creator: nil, path: nil, __v: 0, revision: nil, createdAt: '',
27
28
  commentCount: 0, seenUsers: [], liker: [], grantedUsers: [],
28
- grant: 0, status: '', id: ''
29
+ grant: 0, status: ''
29
30
  }
30
-
31
31
  params = init_params.merge(params.map { |k,v| [k.to_sym, v] }.to_h)
32
- if (params[:_id] == nil || params[:path] == nil || params[:id] == nil)
33
- raise ArgumentError.new('Parameters _id, path and id are required.')
32
+ if (params[:_id].nil?)
33
+ raise ArgumentError.new('Parameter _id is required.')
34
34
  end
35
35
 
36
36
  # @note Parameters lastUpdateUser and creator have two patterns ID only or Object.
37
37
  GrowiModelFactory.instance.register({
38
- page_updatedAt: Proc.new { |str| str != nil && DateTime.parse(str) },
39
- page_lastUpdateUser: Proc.new { |param| param != nil && param.is_a?(String) ? param : GrowiUser.new(param) },
40
- page_creator: Proc.new { |param| param != nil && param.is_a?(String) ? param : GrowiUser.new(param) },
41
- page_createdAt: Proc.new { |str| str != nil && DateTime.parse(str) },
42
- page_revision: Proc.new { |param| param != nil && GrowiPageRevision.new(param) },
38
+ page_updatedAt: Proc.new { |str| !str.nil? && str != "" ? DateTime.parse(str) : "" },
39
+ page_lastUpdateUser: Proc.new { |param| !param.nil? && param.is_a?(String) ? param : GrowiUser.new(param) },
40
+ page_creator: Proc.new { |param| !param.nil? && param.is_a?(String) ? param : GrowiUser.new(param) },
41
+ page_createdAt: Proc.new { |str| !str.nil? && str != "" ? DateTime.parse(str) : "" },
42
+
43
+ # revision が文字列のみ(IDだけの場合)であれば _id のみを格納し、ハッシュ化されていればすべて読み込む
44
+ page_revision: Proc.new { |param| !param.nil? && GrowiPageRevision.new(param.is_a?(String) ? { _id: param } : param) },
43
45
  })
44
46
  maked_params = {}
45
47
  params.each do |k,v|
@@ -50,4 +52,3 @@ class GrowiPage < GrowiModelBase
50
52
  end
51
53
 
52
54
  end
53
-
@@ -14,13 +14,12 @@ class GrowiPageRevision < GrowiModelBase
14
14
  }
15
15
 
16
16
  params = init_params.merge(params.map { |k,v| [k.to_sym, v] }.to_h)
17
- if (params[:_id] == nil || params[:path] == nil)
18
- raise ArgumentError.new('Parameters _id and path are required.')
17
+ if (params[:_id].nil?)
18
+ raise ArgumentError.new('Parameter _id is required.')
19
19
  end
20
20
 
21
21
  GrowiModelFactory.instance.register({
22
- page_revision_createdAt: Proc.new { |date_str|
23
- date_str != nil && DateTime.parse(date_str) },
22
+ page_revision_createdAt: Proc.new { |date_str| !date_str.nil? && date_str != "" ? DateTime.parse(date_str) : "" },
24
23
  })
25
24
  maked_params = {}
26
25
  params.each do |k,v|
@@ -15,13 +15,12 @@ class GrowiUser < GrowiModelBase
15
15
  }
16
16
 
17
17
  params = init_params.merge(params.map { |k,v| [k.to_sym, v] }.to_h)
18
- if (params[:_id] == nil || params[:email] == nil || params[:username] == nil)
19
- raise ArgumentError.new('Parameters id and email and name are required.')
18
+ if (params[:_id].nil?)
19
+ raise ArgumentError.new('Parameter _id is required.')
20
20
  end
21
21
 
22
22
  GrowiModelFactory.instance.register({
23
- user_createdAt: Proc.new { |date_str|
24
- date_str != nil && DateTime.parse(date_str) },
23
+ user_createdAt: Proc.new { |date_str| !date_str.nil? && date_str != "" ? DateTime.parse(date_str) : "" },
25
24
  })
26
25
  maked_params = {}
27
26
  params.each do |k,v|
@@ -1,5 +1,5 @@
1
1
  module Growi
2
2
  module Client
3
- VERSION = "0.9.0"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
@@ -1,89 +1,89 @@
1
- box: ruby:2.5.1
2
-
3
- # Run weseek/growi, mongo, elasticsearch
4
- services:
5
- - name: mongo
6
- id: mongo:3.4
7
-
8
- build:
9
- # Steps make up the actions in your pipeline
10
- # Read more about steps on our dev center:
11
- # http://devcenter.wercker.com/docs/steps/index.html
12
- steps:
13
- - bundle-install
14
-
15
- - script:
16
- name: "Install utility tools"
17
- code: |
18
- apt-get update
19
- apt-get install -y netcat
20
-
21
- - script:
22
- name: "Wait for MongoDB connection"
23
- code: |
24
- echo Wait for connect to $MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT
25
- while ! nc -q 1 $MONGO_PORT_27017_TCP_ADDR $MONGO_PORT_27017_TCP_PORT </dev/null; do
26
- echo "...waiting 3s"; sleep 3;
27
- done
28
-
29
- - internal/docker-run:
30
- image: weseek/growi:3.1.12
31
- name: growi
32
- env: >
33
- MONGO_URI=mongodb://$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/growi
34
- PASSWORD_SEED=empty
35
- FILE_UPLOAD=local
36
-
37
- - script:
38
- name: "Wait for GROWI connection"
39
- code: |
40
- echo Wait for connect to growi:3000
41
- while ! nc -q 1 growi 3000 < /dev/null; do
42
- echo "...waiting 3s"; sleep 3;
43
- done
44
- export GROWI_URL=http://growi:3000
45
-
46
- - script:
47
- name: "Create admin user"
48
- code: |
49
- export ADMIN_USER_NAME=admin1
50
- export ADMIN_USER_PASS=admin1pass
51
- LOGIN_COOKIE=login.cookie
52
- OUTPUT_PAGE_NAME=installer.html
53
- curl $GROWI_URL/installer -c ${LOGIN_COOKIE} -o ${OUTPUT_PAGE_NAME}
54
- CSRF=`grep data-csrftoken ${OUTPUT_PAGE_NAME} | awk -F'=' '{ print $2 }' | sed -e s/\"//g`
55
- curl $GROWI_URL/installer/createAdmin -b ${LOGIN_COOKIE} -X POST \
56
- -d "registerForm[name]=${ADMIN_USER_NAME}&registerForm[username]=${ADMIN_USER_NAME}&registerForm[email]=${ADMIN_USER_NAME}@localhost&registerForm[password]=${ADMIN_USER_PASS}&_csrf=${CSRF}"
57
-
58
- - script:
59
- name: "Login as admin1"
60
- code: |
61
- OUTPUT_PAGE_NAME=login.html
62
- curl $GROWI_URL/login -c ${LOGIN_COOKIE} -o ${OUTPUT_PAGE_NAME}
63
- CSRF=`grep data-csrftoken ${OUTPUT_PAGE_NAME} | awk -F'=' '{ print $2 }' | sed -e s/\"//g`
64
- curl $GROWI_URL/login -b ${LOGIN_COOKIE} -X POST -d "loginForm[username]=${ADMIN_USER_NAME}&loginForm[password]=${ADMIN_USER_PASS}&_csrf=${CSRF}"
65
-
66
- - script:
67
- name: "Generate API token"
68
- code: |
69
- OUTPUT_PAGE_NAME=apiToken.html
70
- curl $GROWI_URL/me/apiToken -b ${LOGIN_COOKIE} -o ${OUTPUT_PAGE_NAME}
71
- CSRF=`grep data-csrftoken ${OUTPUT_PAGE_NAME} | awk -F'=' '{ print $2 }' | sed -e s/\"//g`
72
- curl $GROWI_URL/me/apiToken -b ${LOGIN_COOKIE} -X POST -d "apiTokenForm[confirm]=1&_csrf=${CSRF}"
73
- curl $GROWI_URL/me/apiToken -b ${LOGIN_COOKIE} -o ${OUTPUT_PAGE_NAME}
74
- export APITOKEN=`grep -A 10 'Current API Token' ${OUTPUT_PAGE_NAME} | grep '<input' | awk -F'value=' '{ print $2 }' | awk -F'"' '{ print $2 }'`
75
-
76
- - script:
77
- name: "Export environment variables"
78
- code: |
79
- export GROWI_URL=$GROWI_URL
80
- export GROWI_ACCESS_TOKEN=$APITOKEN
81
-
82
- - script:
83
- name: "View environment variables"
84
- code: |
85
- env
86
-
87
- - script:
88
- name: rspec
89
- code: bundle exec rspec
1
+ box: ruby:2.5.1
2
+
3
+ # Run weseek/growi, mongo, elasticsearch
4
+ services:
5
+ - name: mongo
6
+ id: mongo:3.4
7
+
8
+ build:
9
+ # Steps make up the actions in your pipeline
10
+ # Read more about steps on our dev center:
11
+ # http://devcenter.wercker.com/docs/steps/index.html
12
+ steps:
13
+ - bundle-install
14
+
15
+ - script:
16
+ name: "Install utility tools"
17
+ code: |
18
+ apt-get update
19
+ apt-get install -y netcat
20
+
21
+ - script:
22
+ name: "Wait for MongoDB connection"
23
+ code: |
24
+ echo Wait for connect to $MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT
25
+ while ! nc -q 1 $MONGO_PORT_27017_TCP_ADDR $MONGO_PORT_27017_TCP_PORT </dev/null; do
26
+ echo "...waiting 3s"; sleep 3;
27
+ done
28
+
29
+ - internal/docker-run:
30
+ image: weseek/growi:3.3.3
31
+ name: growi
32
+ env: >
33
+ MONGO_URI=mongodb://$MONGO_PORT_27017_TCP_ADDR:$MONGO_PORT_27017_TCP_PORT/growi
34
+ PASSWORD_SEED=empty
35
+ FILE_UPLOAD=local
36
+
37
+ - script:
38
+ name: "Wait for GROWI connection"
39
+ code: |
40
+ echo Wait for connect to growi:3000
41
+ while ! nc -q 1 growi 3000 < /dev/null; do
42
+ echo "...waiting 3s"; sleep 3;
43
+ done
44
+ export GROWI_URL=http://growi:3000
45
+
46
+ - script:
47
+ name: "Create admin user"
48
+ code: |
49
+ export ADMIN_USER_NAME=admin1
50
+ export ADMIN_USER_PASS=admin1pass
51
+ LOGIN_COOKIE=login.cookie
52
+ OUTPUT_PAGE_NAME=installer.html
53
+ curl $GROWI_URL/installer -c ${LOGIN_COOKIE} -o ${OUTPUT_PAGE_NAME}
54
+ CSRF=`grep data-csrftoken ${OUTPUT_PAGE_NAME} | awk -F'=' '{ print $2 }' | sed -e s/\"//g`
55
+ curl $GROWI_URL/installer/createAdmin -b ${LOGIN_COOKIE} -X POST \
56
+ -d "registerForm[name]=${ADMIN_USER_NAME}&registerForm[username]=${ADMIN_USER_NAME}&registerForm[email]=${ADMIN_USER_NAME}@localhost&registerForm[password]=${ADMIN_USER_PASS}&_csrf=${CSRF}"
57
+
58
+ - script:
59
+ name: "Login as admin1"
60
+ code: |
61
+ OUTPUT_PAGE_NAME=login.html
62
+ curl $GROWI_URL/login -c ${LOGIN_COOKIE} -o ${OUTPUT_PAGE_NAME}
63
+ CSRF=`grep data-csrftoken ${OUTPUT_PAGE_NAME} | awk -F'=' '{ print $2 }' | sed -e s/\"//g`
64
+ curl $GROWI_URL/login -b ${LOGIN_COOKIE} -X POST -d "loginForm[username]=${ADMIN_USER_NAME}&loginForm[password]=${ADMIN_USER_PASS}&_csrf=${CSRF}"
65
+
66
+ - script:
67
+ name: "Generate API token"
68
+ code: |
69
+ OUTPUT_PAGE_NAME=apiToken.html
70
+ curl $GROWI_URL/me/apiToken -b ${LOGIN_COOKIE} -o ${OUTPUT_PAGE_NAME}
71
+ CSRF=`grep data-csrftoken ${OUTPUT_PAGE_NAME} | awk -F'=' '{ print $2 }' | sed -e s/\"//g`
72
+ curl $GROWI_URL/me/apiToken -b ${LOGIN_COOKIE} -X POST -d "apiTokenForm[confirm]=1&_csrf=${CSRF}"
73
+ curl $GROWI_URL/me/apiToken -b ${LOGIN_COOKIE} -o ${OUTPUT_PAGE_NAME}
74
+ export APITOKEN=`grep -A 10 'Current API Token' ${OUTPUT_PAGE_NAME} | grep '<input' | awk -F'value=' '{ print $2 }' | awk -F'"' '{ print $2 }'`
75
+
76
+ - script:
77
+ name: "Export environment variables"
78
+ code: |
79
+ export GROWI_URL=$GROWI_URL
80
+ export GROWI_ACCESS_TOKEN=$APITOKEN
81
+
82
+ - script:
83
+ name: "View environment variables"
84
+ code: |
85
+ env
86
+
87
+ - script:
88
+ name: rspec
89
+ code: bundle exec rspec
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: growi-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryu Sato
@@ -118,6 +118,7 @@ files:
118
118
  - lib/growi/client/apireq/api_request_base.rb
119
119
  - lib/growi/client/apireq/api_request_pages.rb
120
120
  - lib/growi/client/client.rb
121
+ - lib/growi/client/logger.rb
121
122
  - lib/growi/client/model/growi_attachment.rb
122
123
  - lib/growi/client/model/growi_model.rb
123
124
  - lib/growi/client/model/growi_model_base.rb