growi-client 0.9.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 +7 -0
- data/.gitignore +53 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/LICENSE +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +221 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/growi-client.gemspec +40 -0
- data/lib/growi-client.rb +1 -0
- data/lib/growi/client/apireq/api_request_attachments.rb +140 -0
- data/lib/growi/client/apireq/api_request_base.rb +106 -0
- data/lib/growi/client/apireq/api_request_pages.rb +421 -0
- data/lib/growi/client/client.rb +73 -0
- data/lib/growi/client/model/growi_attachment.rb +36 -0
- data/lib/growi/client/model/growi_model.rb +52 -0
- data/lib/growi/client/model/growi_model_base.rb +12 -0
- data/lib/growi/client/model/growi_page.rb +53 -0
- data/lib/growi/client/model/growi_page_revision.rb +34 -0
- data/lib/growi/client/model/growi_user.rb +35 -0
- data/lib/growi/client/version.rb +5 -0
- data/wercker.yml +89 -0
- metadata +153 -0
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'json'
|
3
|
+
require 'yaml'
|
4
|
+
require 'uri'
|
5
|
+
|
6
|
+
require 'growi/client/apireq/api_request_pages'
|
7
|
+
require 'growi/client/apireq/api_request_attachments'
|
8
|
+
|
9
|
+
# Growi のクライアントクラス
|
10
|
+
class GrowiClient
|
11
|
+
|
12
|
+
# コンストラクタ
|
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?
|
16
|
+
|
17
|
+
@growi_url = growi_url
|
18
|
+
@access_token = access_token
|
19
|
+
@rest_client_param = rest_client_param
|
20
|
+
@cp_entry_point = URI.join(growi_url, '/_api/').to_s
|
21
|
+
end
|
22
|
+
|
23
|
+
# APIリクエストを送信する
|
24
|
+
# @param [ApiRequestBase] req APIリクエスト
|
25
|
+
# @return [String] APIリクエストの応答(JSON形式)
|
26
|
+
def request(req)
|
27
|
+
req.param[:access_token] = @access_token
|
28
|
+
return req.execute URI.join(@cp_entry_point, req.entry_point).to_s,
|
29
|
+
rest_client_param: @rest_client_param
|
30
|
+
end
|
31
|
+
|
32
|
+
# ページIDを取得する
|
33
|
+
# @param [String] path_exp ページパス
|
34
|
+
# @return [String] ページID
|
35
|
+
def page_id(path_exp: nil)
|
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
|
39
|
+
end
|
40
|
+
|
41
|
+
# ページが存在するか調べる
|
42
|
+
# @param [String] path ページパス
|
43
|
+
# @return [true/false] ページの存在
|
44
|
+
def page_exist?(path_exp: nil)
|
45
|
+
return !page_id(path_exp: path_exp).nil?
|
46
|
+
end
|
47
|
+
|
48
|
+
# ページに添付ファイルが存在するか調べる
|
49
|
+
# @param [String] path_exp ページパス(正規表現)
|
50
|
+
# @param [String] attachment_name 添付ファイル名
|
51
|
+
# @return [true/false] 添付ファイルの存在
|
52
|
+
def attachment_exist?(path_exp: nil, attachment_name: nil)
|
53
|
+
ret = request(GApiRequestAttachmentsList.new page_id: page_id(path_exp: path_exp))
|
54
|
+
return ret&.ok && ret&.data&.find { |a| a.originalName == attachment_name } != nil
|
55
|
+
end
|
56
|
+
|
57
|
+
# 指定した添付ファイルのIDを取得する
|
58
|
+
# @param [String] path_exp ページパス(正規表現)
|
59
|
+
# @return [String] attachment's file name
|
60
|
+
def attachment_id(path_exp: nil, attachment_name: nil)
|
61
|
+
ret = request(GApiRequestAttachmentsList.new page_id: page_id(path_exp: path_exp))
|
62
|
+
return ret&.data&.find { |a| a.originalName == attachment_name }&._id
|
63
|
+
end
|
64
|
+
|
65
|
+
# 指定した添付ファイル情報を取得する
|
66
|
+
# @param [String] path_exp ページパス(正規表現)
|
67
|
+
# @return [String] attachment's file name
|
68
|
+
def attachment(path_exp: nil, attachment_name: nil)
|
69
|
+
ret = request(GApiRequestAttachmentsList.new page_id: page_id(path_exp: path_exp))
|
70
|
+
return ret&.data&.find { |a| a.originalName == attachment_name }
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'growi/client/model/growi_model'
|
2
|
+
|
3
|
+
# Growi Attachment model class
|
4
|
+
class GrowiAttachment < GrowiModelBase
|
5
|
+
attr_reader :_id, :fileFormat, :fileName, :originalName, :filePath,
|
6
|
+
:creator, :page, :__v, :createdAt, :fileSize, :url
|
7
|
+
|
8
|
+
# Constractor
|
9
|
+
# @param [Hash] Attachment model shown as hash
|
10
|
+
# @todo Except running register method always called parse method.
|
11
|
+
def initialize(params = {})
|
12
|
+
init_params = {
|
13
|
+
_id: nil, fileFormat: '', fileName: '', originalName: '', filePath: nil,
|
14
|
+
creator: nil, page: '', __v: 0, createdAt: '', fileSize: 0, url: ''
|
15
|
+
}
|
16
|
+
|
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.')
|
20
|
+
end
|
21
|
+
|
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) },
|
26
|
+
})
|
27
|
+
maked_params = {}
|
28
|
+
params.each do |k,v|
|
29
|
+
maker = GrowiModelFactory.instance.maker('attachment_' + k.to_s)
|
30
|
+
maked_params[k] = maker.call(v)
|
31
|
+
end
|
32
|
+
super(maked_params)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
require 'growi/client/model/growi_model_base'
|
4
|
+
require 'growi/client/model/growi_page'
|
5
|
+
require 'growi/client/model/growi_page_revision'
|
6
|
+
require 'growi/client/model/growi_user'
|
7
|
+
require 'growi/client/model/growi_attachment'
|
8
|
+
|
9
|
+
# Growi model factory class
|
10
|
+
# @abstract include singleton class
|
11
|
+
# @attr_reader makers Model maker list
|
12
|
+
class GrowiModelFactory
|
13
|
+
include Singleton
|
14
|
+
attr_reader :makers
|
15
|
+
|
16
|
+
# Constractor
|
17
|
+
def initialize
|
18
|
+
@makers = {}
|
19
|
+
@makers.default = Proc.new { |param|
|
20
|
+
next nil if param == nil
|
21
|
+
case param
|
22
|
+
when Array, String, Integer then
|
23
|
+
ret = param
|
24
|
+
when FalseClass then
|
25
|
+
ret = false
|
26
|
+
when TrueClass then
|
27
|
+
ret = true
|
28
|
+
end
|
29
|
+
next ret
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
# Register model maker
|
34
|
+
# @param [Hash] Model factory list
|
35
|
+
def register(makers = {})
|
36
|
+
makers.each do |model_name, model_make_proc|
|
37
|
+
unless model_make_proc.is_a?(Proc)
|
38
|
+
raise ArgumentError.new('Maker is required sub class of Class.')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
@makers.merge!(makers)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Get model maker
|
45
|
+
# @param [String] model_name Model name
|
46
|
+
# @return [Proc] Model maker
|
47
|
+
def maker(model_name)
|
48
|
+
return @makers[model_name&.to_sym]
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'growi/client/model/growi_model'
|
2
|
+
|
3
|
+
# Growi Page model class
|
4
|
+
class GrowiPage < GrowiModelBase
|
5
|
+
GRANT_PUBLIC = 1.freeze
|
6
|
+
GRANT_RESTRICTED = 2.freeze
|
7
|
+
GRANT_SPECIFIED = 3.freeze
|
8
|
+
GRANT_OWNER = 4.freeze
|
9
|
+
|
10
|
+
STATUS_WIP = 'wip'.freeze
|
11
|
+
STATUS_PUBLISHED = 'published'.freeze
|
12
|
+
STATUS_DELETED = 'deleted'.freeze
|
13
|
+
STATUS_DEPRECATED = 'deprecated'.freeze
|
14
|
+
|
15
|
+
attr_reader :_id, :redirectTo, :updatedAt, :lastUpdateUser,
|
16
|
+
:creator, :path, :__v, :revision, :createdAt,
|
17
|
+
:commentCount, :seenUsers, :liker, :grantedUsers,
|
18
|
+
:grant, :status, :id
|
19
|
+
|
20
|
+
# Constract
|
21
|
+
# @param [Hash] params Prameters data show as Hash
|
22
|
+
# @todo Except running register method always called parse method.
|
23
|
+
def initialize(params = {})
|
24
|
+
init_params = {
|
25
|
+
_id: '', redirectTo: nil, updatedAt: '', lastUpdateUser: '',
|
26
|
+
creator: nil, path: nil, __v: 0, revision: nil, createdAt: '',
|
27
|
+
commentCount: 0, seenUsers: [], liker: [], grantedUsers: [],
|
28
|
+
grant: 0, status: '', id: ''
|
29
|
+
}
|
30
|
+
|
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.')
|
34
|
+
end
|
35
|
+
|
36
|
+
# @note Parameters lastUpdateUser and creator have two patterns ID only or Object.
|
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) },
|
43
|
+
})
|
44
|
+
maked_params = {}
|
45
|
+
params.each do |k,v|
|
46
|
+
maker = GrowiModelFactory.instance.maker('page_' + k.to_s)
|
47
|
+
maked_params[k] = maker.call(v)
|
48
|
+
end
|
49
|
+
super(maked_params)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'growi/client/model/growi_model'
|
2
|
+
|
3
|
+
# Growi Page revision model class
|
4
|
+
class GrowiPageRevision < GrowiModelBase
|
5
|
+
attr_reader :_id, :author, :body, :path, :__v, :createdAt, :format
|
6
|
+
|
7
|
+
# Constractor
|
8
|
+
# @param [Hash] User model shown as hash
|
9
|
+
# @todo Except running register method always called parse method.
|
10
|
+
def initialize(params = {})
|
11
|
+
init_params = {
|
12
|
+
_id: '', author: nil, body: nil, path: nil, __v: 0, createdAt: nil,
|
13
|
+
format: ''
|
14
|
+
}
|
15
|
+
|
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.')
|
19
|
+
end
|
20
|
+
|
21
|
+
GrowiModelFactory.instance.register({
|
22
|
+
page_revision_createdAt: Proc.new { |date_str|
|
23
|
+
date_str != nil && DateTime.parse(date_str) },
|
24
|
+
})
|
25
|
+
maked_params = {}
|
26
|
+
params.each do |k,v|
|
27
|
+
maker = GrowiModelFactory.instance.maker('page_revision_' + k.to_s)
|
28
|
+
maked_params[k] = maker.call(v)
|
29
|
+
end
|
30
|
+
super(maked_params)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'growi/client/model/growi_model'
|
2
|
+
|
3
|
+
# Growi User model class
|
4
|
+
class GrowiUser < GrowiModelBase
|
5
|
+
attr_reader :_id, :email, :username, :name,
|
6
|
+
:admin, :createdAt, :status, :lang, :isGravatarEnabled
|
7
|
+
|
8
|
+
# Constractor
|
9
|
+
# @param [Hash] User model shown as hash
|
10
|
+
# @todo Except running register method always called parse method.
|
11
|
+
def initialize(params = {})
|
12
|
+
init_params = {
|
13
|
+
_id: nil, email: nil, username: nil, name: '',
|
14
|
+
admin: false, createdAt: '', status: 0, lang: '', isGravatarEnabled: false
|
15
|
+
}
|
16
|
+
|
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.')
|
20
|
+
end
|
21
|
+
|
22
|
+
GrowiModelFactory.instance.register({
|
23
|
+
user_createdAt: Proc.new { |date_str|
|
24
|
+
date_str != nil && DateTime.parse(date_str) },
|
25
|
+
})
|
26
|
+
maked_params = {}
|
27
|
+
params.each do |k,v|
|
28
|
+
maker = GrowiModelFactory.instance.maker('user_' + k.to_s)
|
29
|
+
maked_params[k] = maker.call(v)
|
30
|
+
end
|
31
|
+
super(maked_params)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
data/wercker.yml
ADDED
@@ -0,0 +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}®isterForm[username]=${ADMIN_USER_NAME}®isterForm[email]=${ADMIN_USER_NAME}@localhost®isterForm[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
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: growi-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryu Sato
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-01-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.15'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.15'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-json_matcher
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.1'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rest-client
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: json
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.1'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.1'
|
97
|
+
description: growi-client is client of growi with use API.
|
98
|
+
email:
|
99
|
+
- ryu@weseek.co.jp
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".travis.yml"
|
107
|
+
- CODE_OF_CONDUCT.md
|
108
|
+
- Gemfile
|
109
|
+
- LICENSE
|
110
|
+
- LICENSE.txt
|
111
|
+
- README.md
|
112
|
+
- Rakefile
|
113
|
+
- bin/console
|
114
|
+
- bin/setup
|
115
|
+
- growi-client.gemspec
|
116
|
+
- lib/growi-client.rb
|
117
|
+
- lib/growi/client/apireq/api_request_attachments.rb
|
118
|
+
- lib/growi/client/apireq/api_request_base.rb
|
119
|
+
- lib/growi/client/apireq/api_request_pages.rb
|
120
|
+
- lib/growi/client/client.rb
|
121
|
+
- lib/growi/client/model/growi_attachment.rb
|
122
|
+
- lib/growi/client/model/growi_model.rb
|
123
|
+
- lib/growi/client/model/growi_model_base.rb
|
124
|
+
- lib/growi/client/model/growi_page.rb
|
125
|
+
- lib/growi/client/model/growi_page_revision.rb
|
126
|
+
- lib/growi/client/model/growi_user.rb
|
127
|
+
- lib/growi/client/version.rb
|
128
|
+
- wercker.yml
|
129
|
+
homepage: https://github.com/ryu-sato/growi-client
|
130
|
+
licenses:
|
131
|
+
- MIT
|
132
|
+
metadata: {}
|
133
|
+
post_install_message:
|
134
|
+
rdoc_options: []
|
135
|
+
require_paths:
|
136
|
+
- lib
|
137
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
requirements: []
|
148
|
+
rubyforge_project:
|
149
|
+
rubygems_version: 2.7.6
|
150
|
+
signing_key:
|
151
|
+
specification_version: 4
|
152
|
+
summary: Client of growi
|
153
|
+
test_files: []
|