localwiki_client 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/History.txt +5 -0
- data/README.md +10 -12
- data/examples/localwiki_stats.rb +102 -0
- data/examples/nearby_wiki_pages.rb +48 -0
- data/integration/helper.rb +6 -3
- data/integration/live_test_wiki_spec.rb +2 -2
- data/lib/localwiki/client.rb +33 -14
- data/lib/localwiki/version.rb +1 -1
- data/localwiki_client.gemspec +1 -0
- data/spec/basic_crud_spec.rb +1 -1
- data/spec/basic_spec.rb +1 -1
- data/spec/fetch_version_spec.rb +1 -1
- data/spec/helper.rb +6 -3
- data/spec/list_spec.rb +1 -1
- data/spec/localwiki_client_spec.rb +1 -1
- data/spec/slug_spec.rb +1 -1
- metadata +20 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e86f427d07f0b2f5fdb68ce988290fdca41d3e79
|
4
|
+
data.tar.gz: 1457723a76e10dc292dc4aaeb453e2ac101c7e78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8bd7d85ae999853e62e2de954b71f2c6efbf076546ccd6ed3efd9f3304fa87f26ed45978c71fa20368e8e9591da2c35698939097f9b8749cb65948b8293eb8c
|
7
|
+
data.tar.gz: 65c4b102cc369045bfcf431b1c45a5116eb685fce1b0e9c91b6738bd4ecd8dbc37f568866c94fe512f25474fa09d48ec68796f587cd494a39f0e721eb526432a
|
data/.travis.yml
CHANGED
data/History.txt
CHANGED
data/README.md
CHANGED
@@ -43,6 +43,8 @@ Usage
|
|
43
43
|
response.status
|
44
44
|
=> 201
|
45
45
|
|
46
|
+
More examples scripts can be found in the [examples folder](https://github.com/codeforseattle/localwiki_client/tree/master/examples).
|
47
|
+
|
46
48
|
Features / Problems
|
47
49
|
-------------------
|
48
50
|
|
@@ -63,21 +65,17 @@ Compatibility
|
|
63
65
|
Contributing
|
64
66
|
------------
|
65
67
|
|
66
|
-
To get your improvements included, please fork and submit a pull request.
|
67
|
-
|
68
|
-
|
68
|
+
* To get your improvements included, please fork and submit a pull request.
|
69
|
+
* Bugs and/or failing tests are very appreciated.
|
70
|
+
* See [Contributing to localwiki_client gem](https://github.com/codeforseattle/localwiki_client/wiki/Contributing-to-localwiki_client-gem) for additional details.
|
69
71
|
|
70
72
|
Contributors
|
71
73
|
------------
|
72
|
-
Seth Vincent
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
Jerry Frost
|
79
|
-
|
80
|
-
Matt Adkins
|
74
|
+
* Seth Vincent
|
75
|
+
* Brandon Faloona
|
76
|
+
* Helen Canzler
|
77
|
+
* Jerry Frost
|
78
|
+
* Matt Adkins
|
81
79
|
|
82
80
|
LICENSE
|
83
81
|
-------
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'localwiki_client'
|
2
|
+
|
3
|
+
##
|
4
|
+
# Written by Seth Vincent, Brandon Faloona
|
5
|
+
#
|
6
|
+
# LocalWiki API doc:
|
7
|
+
# localwiki.readthedocs.org/en/latest/api.html
|
8
|
+
|
9
|
+
localwikis = [
|
10
|
+
'wikislo.org',
|
11
|
+
'miamiwiki.org',
|
12
|
+
'oaklandwiki.org',
|
13
|
+
'saltlakewiki.org',
|
14
|
+
'seattlewiki.net',
|
15
|
+
'cuwiki.net',
|
16
|
+
'conway.localwiki.org',
|
17
|
+
'viget.org',
|
18
|
+
'olywiki.org',
|
19
|
+
'www.bmorepipeline.org',
|
20
|
+
'wikikc.com',
|
21
|
+
'toledowiki.net',
|
22
|
+
'arborwiki.org',
|
23
|
+
'oshima-gdm.jp',
|
24
|
+
'dentonwiki.org',
|
25
|
+
'trianglewiki.org',
|
26
|
+
'scruzwiki.org',
|
27
|
+
'boise.localwiki.org',
|
28
|
+
'antarctica.localwiki.org',
|
29
|
+
'sacwiki.org',
|
30
|
+
'denver-wiki.org',
|
31
|
+
'tacoma.localwiki.org',
|
32
|
+
'denver-wiki.org',
|
33
|
+
'taswiki.net',
|
34
|
+
'barkerwiki.org.au',
|
35
|
+
'sydney.localwiki.org',
|
36
|
+
'southshorewiki.ca',
|
37
|
+
'toronto.localwiki.org',
|
38
|
+
'sfwiki.org',
|
39
|
+
'www.sdwiki.org',
|
40
|
+
'www.wikiofgoodliving.org',
|
41
|
+
'chicowiki.org',
|
42
|
+
'foothills.localwiki.org',
|
43
|
+
'www.newbritainwiki.org',
|
44
|
+
'www.gainesvillewiki.org',
|
45
|
+
'www.tallahasseewiki.org',
|
46
|
+
'decorahwiki.org',
|
47
|
+
'cantonwiki.org',
|
48
|
+
'detroitwiki.org',
|
49
|
+
'wiki.betteralamance.org',
|
50
|
+
'wikikc.org',
|
51
|
+
'twincitieswiki.org',
|
52
|
+
'porttownsendwiki.org',
|
53
|
+
'austin.localwiki.org',
|
54
|
+
'www.mac-wiki.org',
|
55
|
+
'tulsawiki.org',
|
56
|
+
'districtcommons.org',
|
57
|
+
'www.utkalen.se',
|
58
|
+
'www.nquarter.co.uk',
|
59
|
+
'hyderabadwiki.com',
|
60
|
+
'sissachwiki.ch',
|
61
|
+
'www.kingslynnwiki.co.uk',
|
62
|
+
'bermudawiki.org'
|
63
|
+
]
|
64
|
+
|
65
|
+
def get_wiki_stats(base_url)
|
66
|
+
|
67
|
+
wiki = LocalwikiClient.new base_url
|
68
|
+
site_thread = Thread.current
|
69
|
+
site_thread[:output] = []
|
70
|
+
|
71
|
+
wiki_name = wiki.site.name << "\n"
|
72
|
+
|
73
|
+
resource_types = ['page', 'user', 'file', 'map']
|
74
|
+
resource_types.collect do |resource|
|
75
|
+
label = " #{resource.to_s}s: "
|
76
|
+
site_thread[:output].push "#{label[0..7]} #{wiki.count(resource).to_s.rjust(6)}"
|
77
|
+
end
|
78
|
+
|
79
|
+
site_thread[:output].sort!.reverse!
|
80
|
+
puts wiki_name << site_thread[:output].join("\n")
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
# for each localwiki, create a thread to collect and print stats
|
85
|
+
site_threads = localwikis.collect do |wiki|
|
86
|
+
|
87
|
+
Thread.new do
|
88
|
+
begin
|
89
|
+
|
90
|
+
sleep 0.05
|
91
|
+
get_wiki_stats(wiki)
|
92
|
+
|
93
|
+
rescue Errno::ETIMEDOUT => timeout
|
94
|
+
puts "#{wiki} timed out."
|
95
|
+
rescue => e
|
96
|
+
puts "#{wiki} returned the error: #{e.message}"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
puts "Collecting stats on #{site_threads.count} wikis ..."
|
102
|
+
site_threads.collect &:join
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'localwiki_client'
|
2
|
+
require 'geocoder'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
def print_help
|
6
|
+
puts 'Return list of wiki pages (that have location information) near a street address.'
|
7
|
+
puts "Parameters:"
|
8
|
+
puts "\thostname: localwiki server, e.g.: seattlewiki.net"
|
9
|
+
puts "\taddress: street address, e.g.: 350 Monroe Avenue NE, Renton WA"
|
10
|
+
puts "\tmiles: number of miles to search (defaults to 1)"
|
11
|
+
puts "Usage:\n\tnearby_wiki_pages <hostname> <street address> <miles>"
|
12
|
+
exit
|
13
|
+
end
|
14
|
+
|
15
|
+
def uri_to_name uri
|
16
|
+
URI.decode(uri.match(/\/([^\/]+)$/)[1]).gsub('_', ' ')
|
17
|
+
end
|
18
|
+
|
19
|
+
print_help if ARGV.length < 2
|
20
|
+
|
21
|
+
hostname, address, miles = ARGV
|
22
|
+
|
23
|
+
coordinates = Geocoder.coordinates address
|
24
|
+
puts "Finding wiki pages within #{miles} miles of #{coordinates.inspect}"
|
25
|
+
|
26
|
+
wiki = LocalwikiClient.new hostname
|
27
|
+
maps = wiki.list :map
|
28
|
+
#puts maps.inspect
|
29
|
+
|
30
|
+
pages = maps.collect do |map|
|
31
|
+
next unless map.single_point?
|
32
|
+
actual_distance = Geocoder::Calculations.distance_between([map.lat, map.long], coordinates.reverse)
|
33
|
+
#puts actual_distance.to_s + ' :: ' + map.page
|
34
|
+
if actual_distance < miles.to_f
|
35
|
+
#print '.'
|
36
|
+
{:dist => actual_distance, :map => map}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
pages.compact!
|
41
|
+
if pages.size < 1
|
42
|
+
puts 'No results found.'
|
43
|
+
else
|
44
|
+
puts "\nMiles :: Page"
|
45
|
+
pages.sort_by{|i|i[:dist]}.each do |entry|
|
46
|
+
puts sprintf("%5.2f", entry[:dist]) + " :: #{uri_to_name(entry[:map].page)}"
|
47
|
+
end
|
48
|
+
end
|
data/integration/helper.rb
CHANGED
@@ -2,8 +2,11 @@ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
|
2
2
|
require 'localwiki_client'
|
3
3
|
|
4
4
|
def test_env_vars_set?
|
5
|
-
return true if ENV['localwiki_client_user'] && ENV['localwiki_client_apikey']
|
5
|
+
return true if ENV['localwiki_client_server'] && ENV['localwiki_client_user'] && ENV['localwiki_client_apikey']
|
6
6
|
puts "\nTo run all tests in the integration folder you need to do two things:"
|
7
|
-
puts "\tContact
|
8
|
-
puts "\tSet these
|
7
|
+
puts "\tContact a test server admin to request the hostname, and a username / apikey for your test server."
|
8
|
+
puts "\tSet these three environment variables (working example given):"
|
9
|
+
puts "\t\texport localwiki_client_server=ec2-54-234-151-52.compute-1.amazonaws.com"
|
10
|
+
puts "\t\texport localwiki_client_user=testuser"
|
11
|
+
puts "\t\texport localwiki_client_apikey=1ff0ed07625365b8d5589f17088f43b5ae227793"
|
9
12
|
end
|
@@ -51,11 +51,11 @@ describe 'LIVE testwiki instance' do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it "returns collection of resources objects" do
|
54
|
-
@response
|
54
|
+
@response.first.class.superclass.should eq Localwiki::Resource
|
55
55
|
end
|
56
56
|
|
57
57
|
it "limit parameter limits number of resources returned" do
|
58
|
-
@response
|
58
|
+
@response.length.should eq 2
|
59
59
|
end
|
60
60
|
|
61
61
|
end
|
data/lib/localwiki/client.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
2
3
|
require 'json'
|
3
4
|
|
4
5
|
module Localwiki
|
@@ -161,7 +162,7 @@ module Localwiki
|
|
161
162
|
# @return [Localwiki::Resource, Faraday::Response] resource object, or http response object
|
162
163
|
def hydrate(resource_type,param)
|
163
164
|
# skip if given an http response object
|
164
|
-
return param if param.
|
165
|
+
return param if param.kind_of? Faraday::Response
|
165
166
|
Localwiki::make_one(resource_type,param)
|
166
167
|
end
|
167
168
|
|
@@ -172,7 +173,7 @@ module Localwiki
|
|
172
173
|
# @return [Array, Faraday::Response] array of resource objects, or http response object
|
173
174
|
def hydrate_list(resource_type,param)
|
174
175
|
# skip if given an http response object
|
175
|
-
return param if param.
|
176
|
+
return param if param.kind_of? Faraday::Response
|
176
177
|
param.collect do |json_hash|
|
177
178
|
Localwiki::make_one(resource_type,json_hash)
|
178
179
|
end
|
@@ -182,8 +183,13 @@ module Localwiki
|
|
182
183
|
# initialize Faraday::Connection instance. set @conn and @site
|
183
184
|
# @param [String] hostname localwiki server hostname
|
184
185
|
def initialize_connection(hostname)
|
185
|
-
@conn = Faraday.new :
|
186
|
+
@conn = Faraday.new url: hostname do |config|
|
187
|
+
config.use FaradayMiddleware::FollowRedirects, limit: 3
|
188
|
+
# config.use Faraday::Response::RaiseError # raise exceptions on 40x, 50x responses
|
189
|
+
config.adapter Faraday.default_adapter
|
190
|
+
end
|
186
191
|
@site = fetch('site','1')
|
192
|
+
raise "Connection failed. #{@site.status} error returned from #{hostname}." if @site.kind_of? Faraday::Response
|
187
193
|
end
|
188
194
|
|
189
195
|
##
|
@@ -204,10 +210,8 @@ module Localwiki
|
|
204
210
|
# @return [Faraday::Response] http response object
|
205
211
|
def http_post(path, json)
|
206
212
|
@conn.post do |req|
|
207
|
-
req
|
208
|
-
req
|
209
|
-
req.headers['Authorization'] = "ApiKey #{@user}:#{@apikey}"
|
210
|
-
req.body = json
|
213
|
+
configure_request req, path, json
|
214
|
+
authorize_request req
|
211
215
|
end
|
212
216
|
end
|
213
217
|
|
@@ -218,10 +222,8 @@ module Localwiki
|
|
218
222
|
# @return [Faraday::Response] http response object
|
219
223
|
def http_put(path, json)
|
220
224
|
@conn.put do |req|
|
221
|
-
req
|
222
|
-
req
|
223
|
-
req.headers['Authorization'] = "ApiKey #{@user}:#{@apikey}"
|
224
|
-
req.body = json
|
225
|
+
configure_request req, path, json
|
226
|
+
authorize_request req
|
225
227
|
end
|
226
228
|
end
|
227
229
|
|
@@ -231,9 +233,8 @@ module Localwiki
|
|
231
233
|
# @return [Faraday::Response] http response object
|
232
234
|
def http_delete(path)
|
233
235
|
@conn.delete do |req|
|
234
|
-
req
|
235
|
-
req
|
236
|
-
req.headers['Authorization'] = "ApiKey #{@user}:#{@apikey}"
|
236
|
+
configure_request req, path
|
237
|
+
authorize_request req
|
237
238
|
end
|
238
239
|
end
|
239
240
|
|
@@ -245,5 +246,23 @@ module Localwiki
|
|
245
246
|
string.to_s.strip.gsub(' ', "_")
|
246
247
|
end
|
247
248
|
|
249
|
+
##
|
250
|
+
# set request parameters
|
251
|
+
# @param req Faraday request object
|
252
|
+
# @param path request path
|
253
|
+
# @param json json string
|
254
|
+
def configure_request(req, path, json=nil)
|
255
|
+
req.headers['Content-Type'] = 'application/json'
|
256
|
+
req.url full_url(path)
|
257
|
+
req.body = json
|
258
|
+
end
|
259
|
+
|
260
|
+
##
|
261
|
+
# set request authorization header
|
262
|
+
# @param req Faraday request object
|
263
|
+
def authorize_request(req)
|
264
|
+
req.headers['Authorization'] = "ApiKey #{@user}:#{@apikey}"
|
265
|
+
end
|
266
|
+
|
248
267
|
end
|
249
268
|
end
|
data/lib/localwiki/version.rb
CHANGED
data/localwiki_client.gemspec
CHANGED
data/spec/basic_crud_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe 'LocalwikiClient' do
|
|
4
4
|
|
5
5
|
before(:all) do
|
6
6
|
VCR.insert_cassette 'basic_crud', :record => :new_episodes
|
7
|
-
@wiki = Localwiki::Client.new '
|
7
|
+
@wiki = Localwiki::Client.new ENV['localwiki_client_server'],
|
8
8
|
ENV['localwiki_client_user'],
|
9
9
|
ENV['localwiki_client_apikey']
|
10
10
|
require 'securerandom'
|
data/spec/basic_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe 'LocalwikiClient' do
|
|
6
6
|
|
7
7
|
before(:all) do
|
8
8
|
VCR.insert_cassette 'basic', :record => :new_episodes
|
9
|
-
@wiki = Localwiki::Client.new '
|
9
|
+
@wiki = Localwiki::Client.new ENV['localwiki_client_server'],
|
10
10
|
ENV['localwiki_client_user'],
|
11
11
|
ENV['localwiki_client_apikey']
|
12
12
|
end
|
data/spec/fetch_version_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe 'LocalwikiClient' do
|
|
4
4
|
|
5
5
|
before(:all) do
|
6
6
|
VCR.insert_cassette 'fetch', :record => :new_episodes
|
7
|
-
@wiki = Localwiki::Client.new '
|
7
|
+
@wiki = Localwiki::Client.new ENV['localwiki_client_server'],
|
8
8
|
ENV['localwiki_client_user'],
|
9
9
|
ENV['localwiki_client_apikey']
|
10
10
|
require 'securerandom'
|
data/spec/helper.rb
CHANGED
@@ -16,8 +16,11 @@ VCR.configure do |c|
|
|
16
16
|
# c.debug_logger = File.open('spec/fixtures/cassettes/debug_vcr.log', 'w')
|
17
17
|
end
|
18
18
|
|
19
|
-
unless ENV['localwiki_client_user'] && ENV['localwiki_client_apikey']
|
19
|
+
unless ENV['localwiki_client_server'] && ENV['localwiki_client_user'] && ENV['localwiki_client_apikey']
|
20
20
|
puts "\nTo add or modify tests in the spec folder you need to do two things:"
|
21
|
-
puts "\tContact
|
22
|
-
puts "\tSet these
|
21
|
+
puts "\tContact a test server admin to request the hostname, and a username / apikey for your test server."
|
22
|
+
puts "\tSet these three environment variables (working example given):"
|
23
|
+
puts "\t\texport localwiki_client_server=ec2-54-234-151-52.compute-1.amazonaws.com"
|
24
|
+
puts "\t\texport localwiki_client_user=testuser"
|
25
|
+
puts "\t\texport localwiki_client_apikey=1ff0ed07625365b8d5589f17088f43b5ae227793"
|
23
26
|
end
|
data/spec/list_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe 'LocalwikiClient' do
|
|
4
4
|
|
5
5
|
before(:all) do
|
6
6
|
VCR.insert_cassette 'list', :record => :new_episodes
|
7
|
-
@wiki = Localwiki::Client.new '
|
7
|
+
@wiki = Localwiki::Client.new ENV['localwiki_client_server'],
|
8
8
|
ENV['localwiki_client_user'],
|
9
9
|
ENV['localwiki_client_apikey']
|
10
10
|
require 'securerandom'
|
@@ -4,7 +4,7 @@ describe 'LocalwikiClient' do
|
|
4
4
|
|
5
5
|
before(:all) do
|
6
6
|
VCR.insert_cassette 'localwiki_client', :record => :new_episodes
|
7
|
-
@wiki = Localwiki::Client.new '
|
7
|
+
@wiki = Localwiki::Client.new ENV['localwiki_client_server']
|
8
8
|
end
|
9
9
|
|
10
10
|
after(:all) do
|
data/spec/slug_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe 'LocalwikiClient' do
|
|
4
4
|
|
5
5
|
before(:all) do
|
6
6
|
VCR.insert_cassette 'slug', :record => :new_episodes
|
7
|
-
@wiki = Localwiki::Client.new '
|
7
|
+
@wiki = Localwiki::Client.new ENV['localwiki_client_server'],
|
8
8
|
ENV['localwiki_client_user'],
|
9
9
|
ENV['localwiki_client_apikey']
|
10
10
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: localwiki_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Faloona
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -25,6 +25,20 @@ dependencies:
|
|
25
25
|
- - '>='
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: faraday_middleware
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
28
42
|
- !ruby/object:Gem::Dependency
|
29
43
|
name: json_pure
|
30
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,6 +227,8 @@ files:
|
|
213
227
|
- History.txt
|
214
228
|
- README.md
|
215
229
|
- Rakefile
|
230
|
+
- examples/localwiki_stats.rb
|
231
|
+
- examples/nearby_wiki_pages.rb
|
216
232
|
- integration/helper.rb
|
217
233
|
- integration/live_saltlake_wiki_spec.rb
|
218
234
|
- integration/live_test_wiki_spec.rb
|
@@ -258,7 +274,7 @@ homepage: http://github.com/bfaloona/localwiki_client
|
|
258
274
|
licenses:
|
259
275
|
- MIT
|
260
276
|
metadata: {}
|
261
|
-
post_install_message: "\n Thank you for installing localwiki_client 0.3.
|
277
|
+
post_install_message: "\n Thank you for installing localwiki_client 0.3.1\n "
|
262
278
|
rdoc_options:
|
263
279
|
- --charset=UTF-8
|
264
280
|
require_paths:
|
@@ -278,6 +294,6 @@ rubyforge_project:
|
|
278
294
|
rubygems_version: 2.0.0
|
279
295
|
signing_key:
|
280
296
|
specification_version: 4
|
281
|
-
summary: localwiki_client-0.3.
|
297
|
+
summary: localwiki_client-0.3.1
|
282
298
|
test_files: []
|
283
299
|
has_rdoc:
|