gyazz 0.0.9 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/Makefile +16 -0
- data/README.md +76 -0
- data/Rakefile +8 -27
- data/gyazz.gemspec +27 -0
- data/lib/gyazz/error.rb +4 -0
- data/lib/gyazz/helper.rb +7 -0
- data/lib/gyazz/page.rb +49 -0
- data/lib/gyazz/version.rb +3 -0
- data/lib/gyazz/wiki.rb +55 -0
- data/lib/gyazz.rb +7 -127
- data/test/test_auth.rb +29 -0
- data/test/test_gyazz.rb +7 -60
- data/test/test_helper.rb +6 -3
- data/test/test_page.rb +46 -0
- data/test/test_wiki.rb +23 -0
- metadata +119 -93
- data/.gemtest +0 -0
- data/Manifest.txt +0 -11
- data/PostInstall.txt +0 -0
- data/README.rdoc +0 -42
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012-2014 Toshiyuki Masui
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Makefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#
|
2
|
+
# バージョンを変えた場合はlib/gyazz/version.rbとMakefileのバージョン番号を変えること
|
3
|
+
#
|
4
|
+
|
5
|
+
push:
|
6
|
+
echo 'make gempush/gitpush'
|
7
|
+
gempush:
|
8
|
+
rake release
|
9
|
+
install:
|
10
|
+
rake install
|
11
|
+
gitpush:
|
12
|
+
git push pitecan.com:/home/masui/git/gyazz-ruby.git
|
13
|
+
git push git@github.com:masui/gyazz-ruby.git
|
14
|
+
|
15
|
+
|
16
|
+
|
data/README.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
Gyazz
|
2
|
+
=====
|
3
|
+
Read/write Gyazz data
|
4
|
+
|
5
|
+
- https://github.com/masui/gyazz-ruby
|
6
|
+
- https://rubygems.org/gems/gyazz
|
7
|
+
|
8
|
+
|
9
|
+
Installation
|
10
|
+
------------
|
11
|
+
|
12
|
+
% gem install gyazz
|
13
|
+
|
14
|
+
|
15
|
+
Usage
|
16
|
+
-----
|
17
|
+
|
18
|
+
read/write data at http://gyazz.com/test/aaa
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
require 'gyazz'
|
22
|
+
|
23
|
+
wiki = Gyazz.wiki('test')
|
24
|
+
page = wiki.page('aaa')
|
25
|
+
|
26
|
+
# read page
|
27
|
+
puts page.text
|
28
|
+
|
29
|
+
# write page
|
30
|
+
page.text = ["Toshiyuki Masui", "masui@pitecan.com", "....."]
|
31
|
+
|
32
|
+
# URL
|
33
|
+
puts page.url ## => "http://gyazz.com/test/aaa"
|
34
|
+
```
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
# page list
|
38
|
+
wiki.pages.each do |page|
|
39
|
+
puts "- #{page.name}"
|
40
|
+
end
|
41
|
+
|
42
|
+
# related pages
|
43
|
+
Gyazz.wiki('test').page('aaa').related_pages.each do |page|
|
44
|
+
puts "-> #{page.name}"
|
45
|
+
end
|
46
|
+
```
|
47
|
+
|
48
|
+
read/write data at http://your-private-gyazz.com/wiki_name/page_name
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
wiki = Gyazz.wiki('wiki_name')
|
52
|
+
wiki.host = 'http://your-private-gyazz.com'
|
53
|
+
wiki.auth = {:username => 'user', :password => 'pass'}
|
54
|
+
puts wiki.page('page_name').text
|
55
|
+
```
|
56
|
+
|
57
|
+
|
58
|
+
Test
|
59
|
+
----
|
60
|
+
|
61
|
+
% gem install bundler
|
62
|
+
% bundle install
|
63
|
+
% bundle exec rake test
|
64
|
+
|
65
|
+
test with local gyazz
|
66
|
+
|
67
|
+
% GYAZZ_HOST="http://localhost:3000" bundle exec rake test
|
68
|
+
|
69
|
+
|
70
|
+
Contributing
|
71
|
+
------------
|
72
|
+
1. Fork it
|
73
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
74
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
75
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
76
|
+
5. Create new Pull Request
|
data/Rakefile
CHANGED
@@ -1,27 +1,8 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
# Hoe.plugin :website
|
10
|
-
# Hoe.plugin :cucumberfeatures
|
11
|
-
|
12
|
-
# Generate all the Rake tasks
|
13
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
14
|
-
$hoe = Hoe.spec 'gyazz' do
|
15
|
-
self.developer 'Toshiyuki Masui', 'masui@pitecan.com'
|
16
|
-
self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
17
|
-
self.rubyforge_name = self.name # TODO this is default value
|
18
|
-
# self.extra_deps = [['activesupport','>= 2.0.2']]
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
require 'newgem/tasks'
|
23
|
-
Dir['tasks/**/*.rake'].each { |t| load t }
|
24
|
-
|
25
|
-
# TODO - want other tests/tasks run by default? Add them to the list
|
26
|
-
# remove_task :default
|
27
|
-
# task :default => [:spec, :features]
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rake/testtask"
|
3
|
+
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.pattern = "test/test_*.rb"
|
6
|
+
end
|
7
|
+
|
8
|
+
task :default => :test
|
data/gyazz.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'gyazz/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "gyazz"
|
8
|
+
spec.version = Gyazz::VERSION
|
9
|
+
spec.authors = ["Toshiyuki Masui", "Sho Hashimoto"]
|
10
|
+
spec.email = ["masui@pitecan.com", "hashimoto@shokai.org"]
|
11
|
+
spec.description = "Read/write Gyazz data"
|
12
|
+
spec.summary = spec.description
|
13
|
+
spec.homepage = "https://github.com/masui/gyazz-ruby"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/).reject{|i| i=="Gemfile.lock" }
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "minitest"
|
24
|
+
|
25
|
+
spec.add_dependency "json"
|
26
|
+
spec.add_dependency "httparty"
|
27
|
+
end
|
data/lib/gyazz/error.rb
ADDED
data/lib/gyazz/helper.rb
ADDED
data/lib/gyazz/page.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
module Gyazz
|
2
|
+
|
3
|
+
class Page
|
4
|
+
|
5
|
+
attr_reader :wiki, :name
|
6
|
+
def initialize(name, wiki)
|
7
|
+
@name = name
|
8
|
+
@wiki = wiki
|
9
|
+
end
|
10
|
+
|
11
|
+
def url
|
12
|
+
"#{@wiki.url}/#{URI.encode @name}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def text
|
16
|
+
@wiki.get("/#{URI.encode @wiki.name}/#{URI.encode @name}/text")
|
17
|
+
end
|
18
|
+
|
19
|
+
def text=(str_or_arr)
|
20
|
+
data = str_or_arr.kind_of?(Array) ? str_or_arr.join("\n") : str_or_arr
|
21
|
+
@wiki.post("/__write__",
|
22
|
+
:body => {
|
23
|
+
:name => @wiki.name,
|
24
|
+
:title => @name,
|
25
|
+
:data => data
|
26
|
+
})
|
27
|
+
end
|
28
|
+
|
29
|
+
def data(opts = {:version => 0})
|
30
|
+
JSON.parse @wiki.get("/#{URI.encode @wiki.name}/#{URI.encode @name}/json/#{opts[:version]}")
|
31
|
+
end
|
32
|
+
|
33
|
+
def access
|
34
|
+
JSON.parse @wiki.get("/#{URI.encode @wiki.name}/#{URI.encode @name}/__access")
|
35
|
+
end
|
36
|
+
|
37
|
+
def modify
|
38
|
+
JSON.parse @wiki.get("/#{URI.encode @wiki.name}/#{URI.encode @name}/__modify")
|
39
|
+
end
|
40
|
+
|
41
|
+
def related_pages
|
42
|
+
url = "/#{URI.encode @wiki.name}/#{URI.encode @name}/related"
|
43
|
+
JSON.parse(@wiki.get(url)).map{|name|
|
44
|
+
Page.new name, @wiki
|
45
|
+
}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
data/lib/gyazz/wiki.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
module Gyazz
|
2
|
+
|
3
|
+
class Wiki
|
4
|
+
|
5
|
+
attr_reader :name, :host
|
6
|
+
|
7
|
+
def initialize(name)
|
8
|
+
@name = name
|
9
|
+
@host = 'http://gyazz.com'
|
10
|
+
end
|
11
|
+
|
12
|
+
def url
|
13
|
+
"#{@host}/#{URI.encode @name}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def host=(host)
|
17
|
+
@host = host
|
18
|
+
end
|
19
|
+
|
20
|
+
def auth=(opts)
|
21
|
+
@basic_auth = opts
|
22
|
+
end
|
23
|
+
|
24
|
+
def page(name)
|
25
|
+
Page.new name, self
|
26
|
+
end
|
27
|
+
|
28
|
+
def get(path)
|
29
|
+
res = HTTParty.get "#{@host}#{path}", :basic_auth => @basic_auth
|
30
|
+
case res.code
|
31
|
+
when 200
|
32
|
+
return res.body
|
33
|
+
else
|
34
|
+
raise Gyazz::Error, res.body
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def post(path, opts)
|
39
|
+
res = HTTParty.post "#{@host}#{path}", opts
|
40
|
+
case res.code
|
41
|
+
when 200
|
42
|
+
return res.body
|
43
|
+
else
|
44
|
+
raise Gyazz::Error, res.body
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def pages
|
49
|
+
JSON.parse(self.get "/#{@name}/__list").map{|i|
|
50
|
+
Page.new(i[0], self)
|
51
|
+
}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
data/lib/gyazz.rb
CHANGED
@@ -1,132 +1,12 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
$:.unshift(File.dirname(__FILE__)) unless
|
3
|
-
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
4
|
-
|
5
|
-
require 'net/http'
|
6
1
|
require 'json'
|
2
|
+
require 'httparty'
|
7
3
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
@user = user
|
14
|
-
@pass = pass
|
15
|
-
@host = (host ? host : 'gyazz.com')
|
16
|
-
end
|
17
|
-
|
18
|
-
def http_get(addr)
|
19
|
-
ret = nil
|
20
|
-
begin
|
21
|
-
Net::HTTP.start(@host, 80) {|http|
|
22
|
-
req = Net::HTTP::Get.new(addr)
|
23
|
-
req.basic_auth @user,@pass if @user
|
24
|
-
response = http.request(req)
|
25
|
-
raise "status code error (#{response.code})" if response.code != "200"
|
26
|
-
ret = response.body
|
27
|
-
}
|
28
|
-
rescue
|
29
|
-
end
|
30
|
-
raise "http_get failed" if ret == nil
|
31
|
-
ret.chomp
|
32
|
-
end
|
33
|
-
|
34
|
-
def list
|
35
|
-
# collect がタイムアウトするので
|
36
|
-
ret = nil
|
37
|
-
begin
|
38
|
-
s = http_get("/#{@name}/__list")
|
39
|
-
ret = []
|
40
|
-
eval(s).each { |e|
|
41
|
-
ret << e[0]
|
42
|
-
}
|
43
|
-
rescue
|
44
|
-
end
|
45
|
-
raise "List failed" if ret == nil
|
46
|
-
return ret
|
47
|
-
end
|
48
|
-
|
49
|
-
def access(title)
|
50
|
-
ret = nil
|
51
|
-
begin
|
52
|
-
s = http_get("/#{@name}/#{title.gsub(/ /,'%20')}/__access")
|
53
|
-
ret = []
|
54
|
-
eval(s).each { |e|
|
55
|
-
ret << e
|
56
|
-
}
|
57
|
-
rescue
|
58
|
-
end
|
59
|
-
raise "Access failed" if ret == nil
|
60
|
-
return ret
|
61
|
-
end
|
62
|
-
|
63
|
-
def modify(title)
|
64
|
-
ret = nil
|
65
|
-
begin
|
66
|
-
s = http_get("/#{@name}/#{title.gsub(/ /,'%20')}/__modify")
|
67
|
-
ret = []
|
68
|
-
eval(s).each { |e|
|
69
|
-
ret << e
|
70
|
-
}
|
71
|
-
rescue
|
72
|
-
end
|
73
|
-
raise "Modify failed" if ret == nil
|
74
|
-
return ret
|
75
|
-
end
|
76
|
-
|
77
|
-
def text(title)
|
78
|
-
s = nil
|
79
|
-
begin
|
80
|
-
s = http_get("/#{@name}/#{title.gsub(/ /,'%20')}/text")
|
81
|
-
rescue
|
82
|
-
end
|
83
|
-
raise "text failed" if s == nil
|
84
|
-
return s
|
85
|
-
end
|
86
|
-
|
87
|
-
def settext(title,val)
|
88
|
-
if val.class == Array then
|
89
|
-
val = val.join("\n")
|
90
|
-
end
|
91
|
-
data = @name + "\n" + title + "\n" + val
|
92
|
-
begin
|
93
|
-
Net::HTTP.start(@host, 80) {|http|
|
94
|
-
req = Net::HTTP::Post.new('/__write__')
|
95
|
-
req.set_form_data('data' => data)
|
96
|
-
req.basic_auth @user,@pass if @user
|
97
|
-
response = http.request(req)
|
98
|
-
raise "status code error (#{response.code})" if response.code != "302"
|
99
|
-
}
|
100
|
-
rescue
|
101
|
-
raise "settext failed"
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def get(title)
|
106
|
-
text(title)
|
107
|
-
end
|
4
|
+
require 'gyazz/version'
|
5
|
+
require 'gyazz/error'
|
6
|
+
require 'gyazz/wiki'
|
7
|
+
require 'gyazz/page'
|
8
|
+
require 'gyazz/helper'
|
108
9
|
|
109
|
-
def set(title,val)
|
110
|
-
settext(title,val)
|
111
|
-
end
|
112
|
-
|
113
|
-
def each
|
114
|
-
list.each { |title|
|
115
|
-
yield title
|
116
|
-
}
|
117
|
-
end
|
118
10
|
|
119
|
-
|
120
|
-
ret = []
|
121
|
-
begin
|
122
|
-
s = http_get("/#{@name}/#{title.gsub(/ /,'%20')}/related")
|
123
|
-
if s.match(/^\[/) then
|
124
|
-
ret = eval(s)
|
125
|
-
end
|
126
|
-
rescue
|
127
|
-
end
|
128
|
-
# raise "Related failed" if ret == nil
|
129
|
-
return ret
|
130
|
-
end
|
131
|
-
|
11
|
+
module Gyazz
|
132
12
|
end
|
data/test/test_auth.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.expand_path 'test_helper', File.dirname(__FILE__)
|
2
|
+
|
3
|
+
class TestWikiAuth < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@wiki = Gyazz::Wiki.new 'test_auth'
|
7
|
+
@wiki.host = ENV['GYAZZ_HOST'] if ENV.has_key? 'GYAZZ_HOST'
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_auth_fail
|
11
|
+
err = nil
|
12
|
+
begin
|
13
|
+
@wiki.pages
|
14
|
+
rescue => e
|
15
|
+
err = e
|
16
|
+
end
|
17
|
+
assert_equal err.class, Gyazz::Error
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_auth
|
21
|
+
@wiki.auth = {:username => 'test_username', :password => 'test_password'}
|
22
|
+
pages = @wiki.pages
|
23
|
+
assert_equal pages.class, Array
|
24
|
+
pages.each do |page|
|
25
|
+
assert_equal page.class, Gyazz::Page
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/test/test_gyazz.rb
CHANGED
@@ -1,66 +1,13 @@
|
|
1
|
-
|
2
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
1
|
+
require File.expand_path 'test_helper', File.dirname(__FILE__)
|
3
2
|
|
4
|
-
class TestGyazz < Test
|
5
|
-
def test_text
|
6
|
-
g = Gyazz.new('test')
|
7
|
-
g.set('test','bbbbb')
|
8
|
-
assert_equal(g.get('test'),"bbbbb")
|
9
|
-
|
10
|
-
val = ["abc", "def"]
|
11
|
-
g.settext('test',val)
|
12
|
-
assert_equal(g.text('test'),"abc\ndef")
|
13
|
-
|
14
|
-
val = ["abc\ndef"]
|
15
|
-
g.settext('test',val)
|
16
|
-
assert_equal(g.text('test'),"abc\ndef")
|
17
|
-
|
18
|
-
list = g.list
|
19
|
-
assert_equal(list.class,Array)
|
20
|
-
assert(list.length > 0)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_auth
|
24
|
-
#
|
25
|
-
# http://Gyazz.com/test_auth/
|
26
|
-
# user: test_username
|
27
|
-
# pass: test_password
|
28
|
-
#
|
29
|
-
g = Gyazz.new('test_auth','test_username','test_password')
|
30
|
-
g.set('test','abcdefg')
|
31
|
-
assert_equal(g.get('test'),'abcdefg')
|
32
|
-
g.set('test','99999')
|
33
|
-
assert_equal(g.get('test'),'99999')
|
3
|
+
class TestGyazz < MiniTest::Test
|
34
4
|
|
35
|
-
|
36
|
-
|
37
|
-
gx.set('test','11111')
|
38
|
-
rescue
|
39
|
-
end
|
40
|
-
assert_equal(g.get('test'),'99999')
|
5
|
+
def test_version
|
6
|
+
assert Gyazz::VERSION >= "0.0.1"
|
41
7
|
end
|
42
8
|
|
43
|
-
def
|
44
|
-
|
45
|
-
g.set('test','[[abc]] [[def]]')
|
46
|
-
related = g.related('test')
|
47
|
-
assert_equal(related.length,2)
|
48
|
-
|
49
|
-
g.set('test','xxx')
|
50
|
-
assert_equal(g.get('test'),"xxx")
|
51
|
-
related = g.related('test')
|
52
|
-
assert_equal(related.length,0)
|
53
|
-
end
|
54
|
-
|
55
|
-
def __test_exception
|
56
|
-
# 通信失敗をエミュレーションするにはどうするのか?
|
57
|
-
error = ''
|
58
|
-
begin
|
59
|
-
g = Gyazz.new('testxxxx')
|
60
|
-
s = g.get('nonexistent page')
|
61
|
-
rescue => e
|
62
|
-
error = e.to_s
|
63
|
-
end
|
64
|
-
assert(error != '')
|
9
|
+
def test_wiki_methods
|
10
|
+
assert Gyazz.wiki('test').class, Gyazz::Wiki
|
65
11
|
end
|
12
|
+
|
66
13
|
end
|
data/test/test_helper.rb
CHANGED
data/test/test_page.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.expand_path 'test_helper', File.dirname(__FILE__)
|
2
|
+
|
3
|
+
class TestPage < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@wiki = Gyazz::Wiki.new('test2')
|
7
|
+
@wiki.host = ENV['GYAZZ_HOST'] if ENV.has_key? 'GYAZZ_HOST'
|
8
|
+
@page = @wiki.page('aaa')
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_url
|
12
|
+
host = ENV['GYAZZ_HOST'] || 'http://gyazz.com'
|
13
|
+
assert_equal @page.url , "#{host}/#{@wiki.name}/#{@page.name}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_get_text
|
17
|
+
assert_equal @page.text.class, String
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_set_text
|
21
|
+
body = ["foo", "bar", Time.now.to_s].join("\n")
|
22
|
+
@page.text = body
|
23
|
+
assert_equal @page.text.strip, body
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_data
|
27
|
+
assert_equal @page.data.class, Hash
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_access
|
31
|
+
assert_equal @page.access.class, Array
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_access
|
35
|
+
assert_equal @page.modify.class, Array
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_related_pages
|
39
|
+
pages = @page.related_pages
|
40
|
+
assert_equal pages.class, Array
|
41
|
+
pages.each do |page|
|
42
|
+
assert_equal page.class, Gyazz::Page
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/test/test_wiki.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path 'test_helper', File.dirname(__FILE__)
|
2
|
+
|
3
|
+
class TestWiki < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@wiki = Gyazz::Wiki.new 'test'
|
7
|
+
@wiki.host = ENV['GYAZZ_HOST'] if ENV.has_key? 'GYAZZ_HOST'
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_url
|
11
|
+
host = ENV['GYAZZ_HOST'] || 'http://gyazz.com'
|
12
|
+
assert_equal @wiki.url , "#{host}/#{@wiki.name}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_pages
|
16
|
+
pages = @wiki.pages
|
17
|
+
assert_equal pages.class, Array
|
18
|
+
pages.each do |page|
|
19
|
+
assert_equal page.class, Gyazz::Page
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
metadata
CHANGED
@@ -1,126 +1,152 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gyazz
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 9
|
10
|
-
version: 0.0.9
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Toshiyuki Masui
|
9
|
+
- Sho Hashimoto
|
14
10
|
autorequire:
|
15
11
|
bindir: bin
|
16
12
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
prerelease: false
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
13
|
+
date: 2014-01-02 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bundler
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
24
18
|
none: false
|
25
|
-
requirements:
|
19
|
+
requirements:
|
26
20
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 3
|
31
|
-
- 10
|
32
|
-
version: "3.10"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.3'
|
33
23
|
type: :development
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: newgem
|
37
24
|
prerelease: false
|
38
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '1.3'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: rake
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
39
34
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
segments:
|
45
|
-
- 1
|
46
|
-
- 5
|
47
|
-
- 3
|
48
|
-
version: 1.5.3
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
49
39
|
type: :development
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: hoe
|
53
40
|
prerelease: false
|
54
|
-
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
55
42
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: minitest
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
64
55
|
type: :development
|
65
|
-
|
66
|
-
|
67
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: json
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :runtime
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: httparty
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :runtime
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
description: Read/write Gyazz data
|
96
|
+
email:
|
68
97
|
- masui@pitecan.com
|
98
|
+
- hashimoto@shokai.org
|
69
99
|
executables: []
|
70
|
-
|
71
100
|
extensions: []
|
72
|
-
|
73
|
-
|
74
|
-
-
|
75
|
-
-
|
76
|
-
- PostInstall.txt
|
77
|
-
files:
|
101
|
+
extra_rdoc_files: []
|
102
|
+
files:
|
103
|
+
- .gitignore
|
104
|
+
- Gemfile
|
78
105
|
- History.txt
|
79
|
-
-
|
80
|
-
-
|
81
|
-
- README.
|
106
|
+
- LICENSE.txt
|
107
|
+
- Makefile
|
108
|
+
- README.md
|
82
109
|
- Rakefile
|
110
|
+
- gyazz.gemspec
|
83
111
|
- lib/gyazz.rb
|
84
|
-
-
|
85
|
-
-
|
86
|
-
-
|
112
|
+
- lib/gyazz/error.rb
|
113
|
+
- lib/gyazz/helper.rb
|
114
|
+
- lib/gyazz/page.rb
|
115
|
+
- lib/gyazz/version.rb
|
116
|
+
- lib/gyazz/wiki.rb
|
117
|
+
- test/test_auth.rb
|
87
118
|
- test/test_gyazz.rb
|
88
119
|
- test/test_helper.rb
|
89
|
-
- .
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
require_paths:
|
120
|
+
- test/test_page.rb
|
121
|
+
- test/test_wiki.rb
|
122
|
+
homepage: https://github.com/masui/gyazz-ruby
|
123
|
+
licenses:
|
124
|
+
- MIT
|
125
|
+
post_install_message:
|
126
|
+
rdoc_options: []
|
127
|
+
require_paths:
|
98
128
|
- lib
|
99
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
130
|
none: false
|
101
|
-
requirements:
|
102
|
-
- -
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
|
105
|
-
|
106
|
-
- 0
|
107
|
-
version: "0"
|
108
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ! '>='
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
136
|
none: false
|
110
|
-
requirements:
|
111
|
-
- -
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
|
114
|
-
segments:
|
115
|
-
- 0
|
116
|
-
version: "0"
|
137
|
+
requirements:
|
138
|
+
- - ! '>='
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
117
141
|
requirements: []
|
118
|
-
|
119
|
-
rubyforge_project: gyazz
|
142
|
+
rubyforge_project:
|
120
143
|
rubygems_version: 1.8.23
|
121
144
|
signing_key:
|
122
145
|
specification_version: 3
|
123
|
-
summary:
|
124
|
-
test_files:
|
146
|
+
summary: Read/write Gyazz data
|
147
|
+
test_files:
|
148
|
+
- test/test_auth.rb
|
125
149
|
- test/test_gyazz.rb
|
126
150
|
- test/test_helper.rb
|
151
|
+
- test/test_page.rb
|
152
|
+
- test/test_wiki.rb
|
data/.gemtest
DELETED
File without changes
|
data/Manifest.txt
DELETED
data/PostInstall.txt
DELETED
File without changes
|
data/README.rdoc
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
= gyazz
|
2
|
-
|
3
|
-
* http://github.com/masui/gyazz-ruby
|
4
|
-
|
5
|
-
== DESCRIPTION:
|
6
|
-
|
7
|
-
* Read/write Gyazz data
|
8
|
-
|
9
|
-
== SYNOPSIS:
|
10
|
-
|
11
|
-
# read/write data at http://Gyazz.com/test/test
|
12
|
-
require 'gyazz'
|
13
|
-
g = Gyazz.new('test')
|
14
|
-
text = g.get('test')
|
15
|
-
g.set('test','abcdefg')
|
16
|
-
list = g.list # => get all titles
|
17
|
-
related = g.related('test') # => get related titles from a title
|
18
|
-
|
19
|
-
== LICENSE:
|
20
|
-
|
21
|
-
(The MIT License)
|
22
|
-
|
23
|
-
Copyright (c) 2012 Toshiyuki Masui
|
24
|
-
|
25
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
26
|
-
a copy of this software and associated documentation files (the
|
27
|
-
'Software'), to deal in the Software without restriction, including
|
28
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
29
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
30
|
-
permit persons to whom the Software is furnished to do so, subject to
|
31
|
-
the following conditions:
|
32
|
-
|
33
|
-
The above copyright notice and this permission notice shall be
|
34
|
-
included in all copies or substantial portions of the Software.
|
35
|
-
|
36
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
37
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
38
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
39
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
40
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
41
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
42
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/script/console
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# File: script/console
|
3
|
-
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
-
|
5
|
-
libs = " -r irb/completion"
|
6
|
-
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
-
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
-
libs << " -r #{File.dirname(__FILE__) + '/../lib/gyazz.rb'}"
|
9
|
-
puts "Loading gyazz gem"
|
10
|
-
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/destroy'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/generate'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Generate.new.run(ARGV)
|