Skip to content
This repository was archived by the owner on Jun 18, 2020. It is now read-only.

Commit c999cc5

Browse files
committed
Allow optional payload for delete
1 parent 7a429c6 commit c999cc5

File tree

6 files changed

+59
-8
lines changed

6 files changed

+59
-8
lines changed

phpstorm-stubs/arangodb/arangodb.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,10 @@ public function connect(): void
6565
* Sends a HTTP DELETE request
6666
*
6767
* @param string $path URI path of ArangoDB Rest API
68+
* @param Vpack $vpack Request data
6869
* @param array $queryParams Map of query params, added to URI path
6970
*/
70-
public function delete(string $path, array $queryParams = null): Response
71+
public function delete(string $path, Vpack $vpack = null, array $queryParams = null): Response
7172
{
7273
}
7374

src/connection.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,13 @@ namespace arangodb { namespace fuerte { namespace php {
182182

183183
Php::Value Connection::methodDelete(Php::Parameters &params)
184184
{
185-
Request request(params[0], params[1]);
185+
if(!params[1].instanceOf("ArangoDb\\Vpack")) {
186+
Request request(params[0]);
187+
request.setHttpMethod(Request::METHOD_DELETE);
188+
return Php::Object("ArangoDb\\Response", this->sendRequest(&request));
189+
}
190+
Request request(params);
186191
request.setHttpMethod(Request::METHOD_DELETE);
187-
188192
return Php::Object("ArangoDb\\Response", this->sendRequest(&request));
189193
}
190194

src/main.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,13 @@ extern "C" {
7373
Php::ByVal("vpack", "ArangoDb\\Vpack", true),
7474
Php::ByVal("queryParams", Php::Type::Array, false)
7575
};
76+
Php::Arguments methodArgsPayloadOptional = {
77+
Php::ByVal("path", Php::Type::String, true),
78+
Php::ByVal("vpack", "ArangoDb\\Vpack", false, false),
79+
Php::ByVal("queryParams", Php::Type::Array, false)
80+
};
7681

77-
connection.method<&arangodb::fuerte::php::Connection::methodDelete>("delete", methodArgs);
82+
connection.method<&arangodb::fuerte::php::Connection::methodDelete>("delete", methodArgsPayloadOptional);
7883
connection.method<&arangodb::fuerte::php::Connection::methodGet>("get", methodArgs);
7984
connection.method<&arangodb::fuerte::php::Connection::methodPost>("post", methodArgsPayload);
8085
connection.method<&arangodb::fuerte::php::Connection::methodPut>("put", methodArgsPayload);

src/request.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
#include "request.h"
22

3+
#include <utility>
4+
35
namespace arangodb { namespace fuerte { namespace php {
46

5-
Request::Request(std::string path, const Vpack* vpack): path(path), builder(vpack->getBuilder())
7+
Request::Request(std::string path, const Vpack* vpack):
8+
path(std::move(path)),
9+
builder(vpack->getBuilder())
10+
{
11+
}
12+
13+
Request::Request(std::string path, const Vpack* vpack, std::map<std::string, std::string> queryParams):
14+
path(std::move(path)),
15+
builder(vpack->getBuilder()),
16+
queryParams(std::move(queryParams))
617
{
718
}
819

9-
Request::Request(std::string path, const Vpack* vpack, std::map<std::string, std::string> queryParams): path(path), builder(vpack->getBuilder()), queryParams(queryParams)
20+
Request::Request(std::string path, std::map<std::string, std::string> queryParams):
21+
path(std::move(path)),
22+
queryParams(std::move(queryParams))
1023
{
1124
}
1225

13-
Request::Request(std::string path, std::map<std::string, std::string> queryParams): path(path), queryParams(queryParams)
26+
Request::Request(std::string path): path(std::move(path))
1427
{
1528
}
1629

src/request.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@ namespace arangodb { namespace fuerte { namespace php {
3131
static const int8_t METHOD_PATCH = 5;
3232
static const int8_t METHOD_OPTIONS = 6;
3333

34-
Request(Php::Parameters params);
34+
explicit Request(Php::Parameters params);
3535
Request(std::string path, const Vpack* vpack);
3636
Request(string path, map<string, string> queryParams);
37+
explicit Request(string path);
3738
Request(std::string path, const Vpack* vpack, std::map<std::string, std::string> queryParams);
3839
Request();
3940

tests/ConnectionTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class ConnectionTest extends TestCase
2020
public function tearDown()
2121
{
2222
if ($this->connection) {
23+
TestUtil::deleteCollection($this->connection, 'delete_collection');
2324
TestUtil::deleteCollection($this->connection, 'event_streams');
2425
TestUtil::deleteCollection($this->connection, 'c6f955fd5efbc2cedbb5f97cfd8890bb98b364c1d');
2526
TestUtil::deleteCollection($this->connection, 'request_failed_exception_test');
@@ -215,4 +216,30 @@ public function it_sends_get_request_with_params()
215216
$this->assertTrue($body['totalAmount'] > 3);
216217
$this->assertCount(2, $body['lid']);
217218
}
219+
220+
/**
221+
* @test
222+
*/
223+
public function it_deletes_without_body()
224+
{
225+
$collection = 'delete_collection';
226+
227+
$this->connection = TestUtil::getConnection();
228+
229+
$response = $this->connection->post(
230+
'/_api/collection',
231+
TestUtil::getVpackCreateCollection($collection)
232+
);
233+
234+
$body = json_decode($response->getBody(), true);
235+
236+
$this->assertNotNull($body);
237+
$this->assertTrue(TestUtil::wasSuccessful($response), var_export($body, true));
238+
239+
$response = $this->connection->delete(
240+
'/_api/collection/' . $collection
241+
);
242+
243+
$this->assertTrue(TestUtil::wasSuccessful($response));
244+
}
218245
}

0 commit comments

Comments
 (0)