Commit Graph
281 Commits
Author SHA1 Message Date
SteveBashandJoe Nelson 8593600cfa Transition IN operator and select query param to new block delimiters 2017-05-13 16:49:25 -05:00
SteveBashandJoe Nelson b8eb2cd9c1 Add and/or params for complex boolean logic
* Add support for and/or params in GET, POST, PATCH and DELETE
* Restrict usage of IN in and/or to be inside parens e.g. in.(1,2,3)
* Allow quoting operators for values that have ',)' chars
  inside and/or e.g. eq."(entity,1)"
2017-05-13 16:49:25 -05:00
SteveBashandJoe Nelson 59abecaf5b Add missing tests for NOT IN accepting empty values and refactor
Go back to operators map since the previously defined
Operator constructors added innecesary complexity also
rename Path to EmbedPath
2017-05-13 16:49:25 -05:00
Steve ChávezandJoe Nelson 0a9d9cdded Fix #701: allow quoted values for IN operator, refactor and Fix #641: allow IN filter to have no values (#854) 2017-04-11 00:57:44 -05:00
Ruslan TalpaandJoe Nelson 5fffbbe381 Make HTTP headers available as GUCs #800 (#849) 2017-04-10 19:23:48 -05:00
Marios KoulakisandJoe Nelson 8557ee55f5 Update with empty json (#852) 2017-04-07 22:21:50 -05:00
Marios KoulakisandJoe Nelson 9b4b45671c Accept empty string as empty json body when calling an rpc (#832) 2017-03-27 21:34:03 -07:00
Steve ChávezandJoe Nelson 47b023e858 Fix proc resource embedding issue with search_path and refactor return type (#831) 2017-03-20 23:50:42 -07:00
Diogo BiazusandJoe Nelson 206ab163b6 Refactor error type and fix nested error message [fix #791] (#829) 2017-03-12 22:02:13 -07:00
Diogo BiazusandJoe Nelson 728e40c96c Update hspec-wai to 0.8.0 (#799) 2017-02-14 21:18:01 -08:00
Steve ChávezandJoe Nelson 98438c437f Proposal for binary output (#802) 2017-02-14 20:36:51 -08:00
Joe NelsonandGitHub 84f68c68cb Public schema table embedding (#803)
* Alter fixture to test objects in public schema

Properly erase and restore the public schema -- requires permissions to install pgcrypto each time.

* Test for fks through public schema tables

* Thanks @fab1an
2017-02-12 16:32:15 -08:00
Steve ChávezandJoe Nelson 7e2cb5fe1c Fix alias in select for mutate queries and small refactor (#779) 2017-01-16 23:20:02 -08:00
Joe NelsonandGitHub 104a7ed4fa Use a mime type to request singular JSON responses (#763) 2017-01-16 15:11:37 -08:00
Ruslan TalpaandJoe Nelson 16fd3a57ff Fix #746 (#769)
also fix broken text env

After the last couple of commits the tests ran correctly only on a
fresh db, in addition, the roles within the db were not created/dropped
on each request and we need that since their privileges differ and we
need to to have an absolute clean db on each execution
2016-12-18 15:46:53 -08:00
Trevor BasingerandJoe Nelson e364cbc3ff Support binary (b64) JWT secrets (#772) 2016-12-11 09:01:03 -08:00
Diogo BiazusandJoe Nelson 649a841ef4 Fix embeded relations error message (#767) 2016-12-10 11:59:17 -08:00
dsimunicandJoe Nelson ae40641963 Introduce new 'Prefer' header, params=single-object (#739) 2016-11-20 14:14:39 -08:00
Joe NelsonandGitHub 74e68408e6 Bring packages up to date (#722)
* Bring packages up to date

* New LTS includes deps now

Use stack to select most versions

* Alphabetize packages

* Strip down packages

Switch tests to protolude

* Appease cabal check with base version constraint
2016-10-19 22:25:58 -07:00
Joe Nelson 5d904dfd66 Merge PR #713
Resolve petty CHANGELOG conflict
2016-10-12 20:52:40 -07:00
SteveBash 191601f129 Add ability to order by jsonb keys, fix #644 2016-10-05 14:46:12 -05:00
Ruslan Talpa 211e3d4141 fix relation detection bug and allow offset on lower levels 2016-10-05 11:34:07 +03:00
SteveBash 50ae48295d Allow using nulls order without explicit order direction, fix #552 2016-10-04 16:11:19 -05:00
Joe Nelson 5a166e8e80 Fix custom pre-request handler
Uses Ruslan's technique
2016-09-27 23:17:08 -07:00
Joe Nelson 06363ccc77 WIP: add argument for custom pre-request handler 2016-09-27 00:19:05 -07:00
Joe Nelson 71bc666a8e Forgot jwt fixture, also hlint fix 2016-09-24 21:32:47 -07:00
Joe Nelson 12a8c682bd Use sql to generate jwt, rather than custom haskell 2016-09-24 21:32:47 -07:00
Joe Nelson 62ed9e2c4d Do not require jwt secret, but die on auth without it 2016-09-24 21:28:08 -07:00
Joe Nelson 7bf5b0106d Semantic WWW-Authenticate headers for problematic JWT
Adapting an OAuth 2.0 convention from RFC 6750 for use with JWT
2016-09-24 21:28:08 -07:00
Joe Nelson fb5fce026d Issue http 401 for expired jwt
Fixes #512
2016-09-24 21:28:08 -07:00
Joe Nelson a88a704bef Parse proc arg definitions that have multi-word types 2016-09-22 23:30:47 -07:00
Joe Nelson 539df21627 WIP: more comprehensive test of rpc args
Breaks toks2arg
2016-09-21 23:54:08 -07:00
Joe Nelson 0314f4bdea First test of OpenAPI RPC params 2016-09-21 20:34:03 -07:00
Joe NelsonandGitHub f3b79bcc40 Use table alias unlikely to conflict with a column name (#705) 2016-09-08 08:16:47 -07:00
Joe NelsonandGitHub af75988dd4 No count by default (#700)
* WIP: disable counting total table size by default

* Remove commented tests since PUT is no longer supported

* Fix tests for invalid range which require count

* Do not report count in PATCH response if not asked

* Return count of deleted items only if asked

* Return count for bulk insert when requested

* Changelog entry
2016-09-04 10:31:24 -07:00
Joe NelsonandGitHub 7278507c42 Use comma rather than semicolon to split header values (#698) 2016-08-21 15:26:00 -07:00
Joe NelsonandGitHub 1d5a0e4316 Per-route content negotiation, and OpenAPI only for root (#693)
* WIP: remove non-openapi root spec

* Refactor ContentType

Different endpoints will favor one type over another

* Permit different Accept headers per endpoint

* Lint

* Add charset to Content-Type only when used as a header

Keep it out of error messages

* Accept: */* is last resort, not first

* Changelog

* makeMimeList consistently

* Remove schema description from OPTIONS response
2016-08-19 16:07:22 -07:00
Erlend HambergandJoe Nelson 35c5b190b4 Singular response for PATCH request (#634)
* Allow a singular entity to be returned from an update

Since a `PATCH` will be an update that could affect many rows, there might be
more than one object returned. By allowing asking for a singular response,
the/an object will be returned instead of a list. This is useful in cases when
the `PATCH` is against single entity (i.e. `/items?pkey=eq.99`).

* Add tests for plurality=singular for `PATCH` requests

* Disallow updating more than one row if `plurality=singular`

As discussed in #634, we don't want to allow updating several rows with
a `PATCH` request when the `Prefer` header specifies
`return=representation;plurality=singular` as this would almost
certainly be a client error.

* Add test for patching multiple objects with singular response

Patching > 1 object with `return=representation;plurality=singular`
should return `400 Bad Request`.

* Only add singleton range for read API requests

* Disallow inserting more than one row if `plurality=singular`

Disallow inserting several rows with a `POST` request when the `Prefer`
header specifies `return=representation;plurality=singular` as this
would almost certainly be a client error.

* Only import `q` from `Text.InterpolatedString.Perl6`

* Update OpenAPI response for PATCH/POST to mention `plurality=singular`

The OpenAPI response for PATCH/POST requests now includes the `Prefer` value
`return=representation;plurality=singular`.

* Add entry in changelog
2016-08-19 14:02:14 -07:00
Joe NelsonandGitHub b5d720e091 Merge pull request #649 from hudayou/proxy-awareness
Add proxy awareness for OpenAPI spec generation
2016-07-07 08:25:30 -07:00
Jacky Hu 1fef1991ef Add proxy awareness for OpenAPI spec generation
Proxy uri from command line options takes precedence over host and port
2016-07-07 19:20:40 +08:00
Joe Nelson e4cf1ce207 Translate raise_exception to http 400
Fixes #661
2016-07-06 21:48:32 -07:00
Ruslan Talpa 430baf23b9 embed entities to the results returned by procs 2016-06-28 12:09:58 +03:00
Ruslan Talpa 2f166088c8 response shaping and filtering for rpc proc calls 2016-06-28 12:09:58 +03:00
Ruslan Talpa a253ff325d don't check if proc exists, just call it and return 400 if it does not 2016-06-28 12:09:57 +03:00
Joe NelsonandGitHub acd75a3997 Merge pull request #639 from hudayou/swagger2
Provide a swagger2 spec for the dynamic API
2016-06-20 15:12:58 -07:00
Martin GammelsæterandJoe Nelson 46b3ce5631 Name custom types and domains on OPTIONS requests (#640) 2016-06-20 09:49:52 -07:00
Jacky Hu 1a25bb501f Add 415 test for openapi req on none root path 2016-06-18 10:18:43 +08:00
Jacky Hu 0220040341 Add test to validate openapi spec 2016-06-18 10:18:43 +08:00
Jacky Hu c10bde8d65 Add a simple test for openapi 2016-06-18 10:18:43 +08:00
Jacky Hu d1ed884a8d Introduce the OpenAPI header
Also bring back the original behavior of GET "/"
2016-06-18 10:18:43 +08:00