spacialdb 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/spacialdb/client.rb +22 -2
- data/lib/spacialdb/command.rb +5 -6
- data/lib/spacialdb/command/base.rb +1 -1
- data/lib/spacialdb/command/db.rb +1 -1
- data/lib/spacialdb/command/help.rb +1 -1
- data/lib/spacialdb/command/layers.rb +64 -0
- data/lib/spacialdb/version.rb +1 -1
- data/lib/vendor/okjson.rb +3 -4
- data/spec/auth_spec.rb +5 -0
- data/spec/spec_helper.rb +21 -8
- metadata +9 -6
data/lib/spacialdb/client.rb
CHANGED
@@ -52,6 +52,27 @@ class Spacialdb::Client
|
|
52
52
|
delete("/api/databases/#{name}", :accept => 'json').to_s
|
53
53
|
end
|
54
54
|
|
55
|
+
# Get a list of layers on the database
|
56
|
+
def list_layers()
|
57
|
+
json_decode get("/api/layers", :accept => 'json').to_s
|
58
|
+
end
|
59
|
+
|
60
|
+
def show_layer(name)
|
61
|
+
json_decode get("/api/layers/#{name}", :accept => 'json').to_s
|
62
|
+
end
|
63
|
+
|
64
|
+
def add_layer(name, database, table_name=nil, srid=4326)
|
65
|
+
payload = {:name => name, :database => database}
|
66
|
+
payload.merge!(:table_name => table_name) unless table_name == nil
|
67
|
+
payload.merge!(:srid => srid) unless srid == 4326
|
68
|
+
|
69
|
+
post('/api/layers', payload, :accept => 'json')
|
70
|
+
end
|
71
|
+
|
72
|
+
def remove_layer(name)
|
73
|
+
delete("/api/layers/#{name}", :accept => 'json').to_s
|
74
|
+
end
|
75
|
+
|
55
76
|
def get(uri, extra_headers={}) # :nodoc:
|
56
77
|
process(:get, uri, extra_headers)
|
57
78
|
end
|
@@ -105,8 +126,7 @@ class Spacialdb::Client
|
|
105
126
|
def resource(uri, options={})
|
106
127
|
RestClient.proxy = ENV['HTTP_PROXY'] || ENV['http_proxy']
|
107
128
|
resource = RestClient::Resource.new(realize_full_uri(uri),
|
108
|
-
:user => login,
|
109
|
-
:password => password
|
129
|
+
options.merge(:user => login, :password => password)
|
110
130
|
)
|
111
131
|
resource
|
112
132
|
end
|
data/lib/spacialdb/command.rb
CHANGED
@@ -103,7 +103,9 @@ module Spacialdb
|
|
103
103
|
run "login"
|
104
104
|
retry
|
105
105
|
rescue RestClient::ResourceNotFound => e
|
106
|
-
error
|
106
|
+
error extract_error(e.http_body) {
|
107
|
+
e.http_body =~ /^[\w\s]+ not found$/ ? e.http_body : "Resource not found"
|
108
|
+
}
|
107
109
|
rescue RestClient::Locked => e
|
108
110
|
db = e.response.headers[:x_confirmation_required]
|
109
111
|
message = extract_error(e.response.body)
|
@@ -127,12 +129,9 @@ module Spacialdb
|
|
127
129
|
commands[cmd] || commands[command_aliases[cmd]]
|
128
130
|
end
|
129
131
|
|
130
|
-
def self.extract_not_found(body)
|
131
|
-
body =~ /^[\w\s]+ not found$/ ? body : "Resource not found"
|
132
|
-
end
|
133
|
-
|
134
132
|
def self.extract_error(body)
|
135
|
-
|
133
|
+
default_error = block_given? ? yield : "Internal server error"
|
134
|
+
msg = parse_error_json(body) || parse_error_plain(body) || default_error
|
136
135
|
msg.split("\n").map { |line| ' ! ' + line }.join("\n")
|
137
136
|
end
|
138
137
|
|
data/lib/spacialdb/command/db.rb
CHANGED
@@ -0,0 +1,64 @@
|
|
1
|
+
require "spacialdb/command/base"
|
2
|
+
|
3
|
+
# manage layers (list, create, destroy)
|
4
|
+
#
|
5
|
+
class Spacialdb::Command::Layers < Spacialdb::Command::Base
|
6
|
+
|
7
|
+
# layers
|
8
|
+
#
|
9
|
+
# list your layers
|
10
|
+
#
|
11
|
+
def index
|
12
|
+
display spacialdb.list_layers.join("\n")
|
13
|
+
end
|
14
|
+
|
15
|
+
# layers:add NAME
|
16
|
+
#
|
17
|
+
# add a new layer to a database
|
18
|
+
#
|
19
|
+
# NAME should be the name of the layer.
|
20
|
+
#
|
21
|
+
# --db DATABASE # name of the database
|
22
|
+
# --tablename TABLENAME # name of the table in the database (defaults to NAME)
|
23
|
+
# --srid SRID # srid (defaults to 4326)
|
24
|
+
#
|
25
|
+
def add
|
26
|
+
tablename = extract_option('--tablename', nil)
|
27
|
+
srid = extract_option('--srid') || 4326
|
28
|
+
srid = srid.to_i rescue 4326
|
29
|
+
|
30
|
+
name = args.shift.downcase.strip rescue ''
|
31
|
+
raise(Spacialdb::Command::CommandFailed, "Invalid name.") if name == ''
|
32
|
+
|
33
|
+
database = extract_option('--db', nil)
|
34
|
+
raise(Spacialdb::Command::CommandFailed, "Invalid database.") if database == nil
|
35
|
+
|
36
|
+
display spacialdb.add_layer(name, database, tablename, srid)
|
37
|
+
end
|
38
|
+
|
39
|
+
# layers:info NAME
|
40
|
+
#
|
41
|
+
# show the layer info
|
42
|
+
#
|
43
|
+
# NAME should be the name of the layer.
|
44
|
+
#
|
45
|
+
def info
|
46
|
+
name = args.shift.downcase.strip rescue ''
|
47
|
+
raise(Spacialdb::Command::CommandFailed, "Invalid name.") if name == ''
|
48
|
+
|
49
|
+
display spacialdb.show_layer(name)
|
50
|
+
end
|
51
|
+
|
52
|
+
# layers:remove NAME
|
53
|
+
#
|
54
|
+
# remove a layer
|
55
|
+
#
|
56
|
+
# NAME should be the name of the layer.
|
57
|
+
#
|
58
|
+
def remove
|
59
|
+
name = args.shift.downcase.strip rescue ''
|
60
|
+
raise(Spacialdb::Command::CommandFailed, "Invalid name.") if name == ''
|
61
|
+
|
62
|
+
display spacialdb.remove_layer(name)
|
63
|
+
end
|
64
|
+
end
|
data/lib/spacialdb/version.rb
CHANGED
data/lib/vendor/okjson.rb
CHANGED
@@ -28,7 +28,6 @@ require 'stringio'
|
|
28
28
|
module OkJson
|
29
29
|
extend self
|
30
30
|
|
31
|
-
class ParserError < ::StandardError; end
|
32
31
|
|
33
32
|
# Decodes a json document in string s and
|
34
33
|
# returns the corresponding ruby value.
|
@@ -166,7 +165,7 @@ module OkJson
|
|
166
165
|
end
|
167
166
|
|
168
167
|
|
169
|
-
#
|
168
|
+
# Scans s and returns a list of json tokens,
|
170
169
|
# excluding white space (as defined in RFC 4627).
|
171
170
|
def lex(s)
|
172
171
|
ts = []
|
@@ -186,7 +185,7 @@ module OkJson
|
|
186
185
|
|
187
186
|
# Scans the first token in s and
|
188
187
|
# returns a 3-element list, or nil
|
189
|
-
# if
|
188
|
+
# if s does not begin with a valid token.
|
190
189
|
#
|
191
190
|
# The first list element is one of
|
192
191
|
# '{', '}', ':', ',', '[', ']',
|
@@ -579,4 +578,4 @@ module OkJson
|
|
579
578
|
Spc = ' '[0]
|
580
579
|
Unesc = {?b=>?\b, ?f=>?\f, ?n=>?\n, ?r=>?\r, ?t=>?\t}
|
581
580
|
Hex = '0123456789abcdef'
|
582
|
-
end
|
581
|
+
end
|
data/spec/auth_spec.rb
CHANGED
@@ -5,7 +5,12 @@ module Spacialdb
|
|
5
5
|
describe Auth do
|
6
6
|
before do
|
7
7
|
@cli = Spacialdb::Auth
|
8
|
+
@cli.stub!(:check)
|
9
|
+
@cli.stub!(:display)
|
10
|
+
@cli.stub!(:running_on_a_mac?).and_return(false)
|
8
11
|
@cli.stub!(:set_credentials_permissions)
|
12
|
+
@cli.credentials = nil
|
13
|
+
|
9
14
|
FakeFS.activate!
|
10
15
|
|
11
16
|
File.open(@cli.credentials_file, "w") do |file|
|
data/spec/spec_helper.rb
CHANGED
@@ -29,27 +29,25 @@ def execute(command_line)
|
|
29
29
|
Spacialdb::Command.load
|
30
30
|
object, method = Spacialdb::Command.prepare_run(command, args)
|
31
31
|
|
32
|
-
$command_output =
|
32
|
+
$command_output = ""
|
33
33
|
|
34
34
|
def object.print(line=nil)
|
35
|
-
|
36
|
-
last_line.concat(line)
|
37
|
-
$command_output.push last_line
|
35
|
+
$command_output << "#{line}"
|
38
36
|
end
|
39
37
|
|
40
38
|
def object.puts(line=nil)
|
41
|
-
|
39
|
+
print("#{line}\n")
|
42
40
|
end
|
43
41
|
|
44
42
|
def object.error(line=nil)
|
45
|
-
|
43
|
+
puts(line)
|
46
44
|
end
|
47
45
|
|
48
46
|
object.send(method)
|
49
47
|
end
|
50
48
|
|
51
49
|
def output
|
52
|
-
|
50
|
+
$command_output.gsub(/\n$/, '')
|
53
51
|
end
|
54
52
|
|
55
53
|
def run(command_line)
|
@@ -68,11 +66,26 @@ def capture_stdout(&block)
|
|
68
66
|
fake.string
|
69
67
|
end
|
70
68
|
|
69
|
+
def fail_command(message)
|
70
|
+
raise_error(Spacialdb::Command::CommandFailed, message)
|
71
|
+
end
|
72
|
+
|
73
|
+
def stub_core
|
74
|
+
stubbed_core = nil
|
75
|
+
any_instance_of(Spacialdb::Client) do |core|
|
76
|
+
stubbed_core = stub(core)
|
77
|
+
end
|
78
|
+
stub(Spacialdb::Auth).user.returns("user")
|
79
|
+
stub(Spacialdb::Auth).password.returns("pass")
|
80
|
+
stub(Spacialdb::Client).auth.returns("apikey01")
|
81
|
+
stubbed_core
|
82
|
+
end
|
83
|
+
|
71
84
|
module Spacialdb::Helpers
|
72
85
|
def display(msg, newline=true)
|
73
86
|
end
|
74
87
|
end
|
75
88
|
|
76
|
-
|
89
|
+
RSpec.configure do |config|
|
77
90
|
config.color_enabled = true
|
78
91
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: spacialdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Shoaib Burq
|
@@ -11,7 +11,8 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-08-26 00:00:00 +02:00
|
15
|
+
default_executable:
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: rest-client
|
@@ -24,7 +25,7 @@ dependencies:
|
|
24
25
|
version: "0"
|
25
26
|
type: :runtime
|
26
27
|
version_requirements: *id001
|
27
|
-
description:
|
28
|
+
description: Client gem for SpacialDB a cloud hosted Geospatial data store.
|
28
29
|
email:
|
29
30
|
- shoaib@nomad-labs.com
|
30
31
|
- kashif@nomad-labs.com
|
@@ -43,6 +44,7 @@ files:
|
|
43
44
|
- lib/spacialdb/command/base.rb
|
44
45
|
- lib/spacialdb/command/db.rb
|
45
46
|
- lib/spacialdb/command/help.rb
|
47
|
+
- lib/spacialdb/command/layers.rb
|
46
48
|
- lib/spacialdb/command/version.rb
|
47
49
|
- lib/spacialdb/command.rb
|
48
50
|
- lib/spacialdb/deprecated/help.rb
|
@@ -59,7 +61,8 @@ files:
|
|
59
61
|
- spec/command/version_spec.rb
|
60
62
|
- spec/commmad_spec.rb
|
61
63
|
- spec/spec_helper.rb
|
62
|
-
|
64
|
+
has_rdoc: true
|
65
|
+
homepage: http://spacialdb.com/
|
63
66
|
licenses: []
|
64
67
|
|
65
68
|
post_install_message:
|
@@ -82,10 +85,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
85
|
requirements: []
|
83
86
|
|
84
87
|
rubyforge_project:
|
85
|
-
rubygems_version: 1.
|
88
|
+
rubygems_version: 1.6.2
|
86
89
|
signing_key:
|
87
90
|
specification_version: 3
|
88
|
-
summary:
|
91
|
+
summary: Ruby CLI for SpacialDB.
|
89
92
|
test_files:
|
90
93
|
- spec/auth_spec.rb
|
91
94
|
- spec/client_spec.rb
|