-
Notifications
You must be signed in to change notification settings - Fork 284
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
correct URL encoding for a REST path parameters
- Loading branch information
1 parent
9fcf224
commit 8a78d18
Showing
4 changed files
with
83 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
1140 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ | ||
"name": "1140", | ||
"dependencies": { | ||
"vibe-d": { "path": "../../" } | ||
}, | ||
"versions": ["VibeDefaultMain"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
import std.datetime; | ||
import vibe.d; | ||
|
||
interface IOrientDBRoot | ||
{ | ||
@property IOrientDBQuery query(); | ||
} | ||
|
||
interface IOrientDBQuery | ||
{ | ||
@method(HTTPMethod.GET) | ||
@path(":db_name/sql/:query/:result_set_size") | ||
Json sql(string _db_name, string _query, int _result_set_size); | ||
|
||
@method(HTTPMethod.GET) | ||
@path(":db_name/sql2/:query/:result_set_size") | ||
Json sql2(string _db_name, string _query, int _result_set_size); | ||
} | ||
|
||
class OrientDBRoot : IOrientDBRoot { | ||
private OrientDBQuery m_query; | ||
override @property IOrientDBQuery query() { return m_query; } | ||
public this() { this.m_query = new OrientDBQuery(); } | ||
} | ||
|
||
class OrientDBQuery : IOrientDBQuery { | ||
override Json sql(string _db_name, string _query, int _result_set_size) { | ||
assert(_db_name == Param1, _db_name); | ||
assert(_query == Param2, _query); | ||
assert(_result_set_size == Param3, to!string(_result_set_size)); | ||
return Json.emptyObject; | ||
} | ||
|
||
override Json sql2(string _db_name, string _query, int _result_set_size) { | ||
assert(_db_name == Param1, _db_name); | ||
assert(_query == Param2ALT, _query); | ||
assert(_result_set_size == Param3, to!string(_result_set_size)); | ||
return Json.emptyObject; | ||
} | ||
} | ||
|
||
enum Param1 = "twitter_data"; | ||
enum Param2 = "select DownloadedDateTime from Message"; | ||
enum Param2ALT = "tricky/param/eter"; | ||
enum Param3 = 1; | ||
|
||
shared static this() | ||
{ | ||
auto settings = new HTTPServerSettings; | ||
// 10k + issue number -> Avoid bind errors | ||
settings.port = 11140; | ||
settings.bindAddresses = ["::1", "127.0.0.1"]; | ||
|
||
auto router = new URLRouter; | ||
router.registerRestInterface(new OrientDBRoot); | ||
listenHTTP(settings, router); | ||
|
||
setTimer(1.seconds, { | ||
scope (exit) exitEventLoop(true); | ||
auto api = new RestInterfaceClient!IOrientDBRoot( | ||
"http://127.0.0.1:11140/"); | ||
api.query.sql(Param1, Param2, Param3); | ||
api.query.sql2(Param1, Param2ALT, Param3); | ||
}); | ||
} |