Commit Graph

126 Commits

Author SHA1 Message Date
Aren Patel 3ea9ec4904 Testing and Documentation for UnmarshalManyPayload (#66)
* Added a test for UnmarshalManyPayload

* Document UnmarshalManyPayload in the Readme

* Update the example app to have a UnmarshalManyPayload usage.

* DRY the UnmarshalManyPayload implementation.

* Add a test for grabbing the Links out of a ManyPayload
2017-01-26 15:25:13 -08:00
Lucius Humm 9d919b42a6 Add MarshalManyPayloadWithoutIncluded (#56)
* fix spelling in documentation

* add MarshalManyPayloadWithoutIncluded

does the same as `MarshalOnePayloadWithoutIncluded` but for
MarshalManyPayload

* Refactored MarshalManyPayloadWithoutIncluded to use the MarshalMany func
2017-01-24 14:53:31 -08:00
Aren Patel baa7beb3f7 Update the go versions 2017-01-20 21:36:58 -08:00
Aren Patel 15abc3066a Use constants for status codes, HTTP methods and JSON API media types in comments and readme 2017-01-20 18:06:44 -08:00
Kyle Truscott 46a5b96356 Add support for 'links' via optional interfaces (#57)
* Implement `links` via optional interfaces

* Updating example app to include links

* Update readme with links information

* Exclude a slice relationship only if the slice is empty AND there are no defined links

* Remove `Link` in favor of vanilla `map[string]interface{}`. More flexible for different allowed links spec implementations.

* Update app.go with correct Links methods

* Use LinksObject and LinkObject types along with type assertion to provide errors when marshaling an invalid links JSON API object.

* Renamed LinksObject Links and LinkObject Link

* Added back the relationship link post merge.

* Renamed the JSON* Linkable functions JSONAPI* such that when a library user implements the interface it is clear the functions are used for JSON API as opposed to JSON

* Example cleanup.

* Refactor the example to use constants from jsonapi and http.
2017-01-20 17:55:59 -08:00
Aren Patel 2cb19b89ed Skimata's null relationships + fixes (#62)
* Add support to nullify relationship; http://jsonapi.org/format/#document-resource-object-linkage

* Fixed: [null] is not valid as an empty relationship.

* add support for 'omitempty' on relationships; default behavior of marshalling empty/nil relations (i.e. w/o 'omitempty' tag) marshals with null data relation

* cleanup whitespace

* Added go 1.7 to test versions; fixed the marshaling of empty relations to return an empty array rather than a null/nil. Added a more robust test case for the marshaling of non omitted relations.

* Cleanup.

* Added a comment to UnmarshalMany

* Document the ‘omitempty’ annotation on a relation.

* Add common JSON API values as exported jsonapi pkg constants.
2017-01-20 16:13:04 -08:00
Aren Patel bb88592460 Simplify the MarshalMany implementation. For & range rather than for with int inc; etc. (#59) 2017-01-17 16:04:07 -08:00
Aren Patel 925ebf2136 Added support for string, int(8,16,32,64), uint(8,16,32,64) and each … (#51)
* Added support for string, int(8,16,32,64), uint(8,16,32,64) and each of their ptr types as acceptable to use for the ID field.

* No longer declaring a new idErr var; also eliminate the switch within a switch - if the ID field was a string or *string it will continue. Added a couple extra tests.
2016-09-22 15:02:30 -07:00
Geoff Garside b6c6609ff2 Add support for iso8601 struct tag argument (#47)
* Add support for iso8601 struct tag.

Currently only unix timestamps are supported for serialising time.Time objects. The JSON.API specification doesn't make a specific requirement on time serialisation format, though it does make a recommendation for using ISO8601.

This adds support for an additional struct tag `iso8601` which controls serialisation and deserialisation using the ISO8601 timestamp format.

* Update doc.go with information regarding iso8601 and omitempty tag arguments.
2016-09-22 13:58:07 -07:00
Aren Patel a1fa2c84a0 Feature/marshal many interface (#42)
* add support for direct use of slice of struct pointers for MarshalMany

* Added a test to ensure that whether MarshalManyPayload is called with a []interface{} or []*Struct it will produce the same desired result.

* Added a test to show how the new error type may be returned.

* Ensure the outside accessible Errs have comments.

* Page char width cleanup. Addressed warnings about duplicated "client-id" definition; using the const.
2016-09-12 22:12:42 -07:00
Aren Patel a70d58d3c8 Support pointers as attrs (#40)
* add support to unmarshal attributes to struct field that are ptr types

* Spacing, addressed all the linter warnings, comments to describe errors, cleanup, left a TODO note to resolve the Error messaging.
2016-07-22 18:34:38 -07:00
Aren Patel dd46e31eb5 Updated: build status badge, the go get installation instruction to account for the repo move, readme examples use ID instead of Id (so that they would be linter compliant if copy/pasted). shwoodard/jsonapi => google/jsonapi (#41) 2016-07-22 18:31:33 -07:00
Sam Woodard b4fad2f2e6 Change to force travis to pick up config 2016-07-21 09:00:16 -07:00
Sam Woodard 2eeccd9649 Update License
Process to transfer ownership to google
2016-07-19 13:50:30 -07:00
Aren Patel de4994e265 Feature/omitempty (#35)
* Implemented a failing test demonstrating the intended behaviour of the omitempty annotation.

* Updated the failing test to ensure that unset field without the "omitempty" annotation are not inadvertently omitted.

* Working implementation of the "omitempty" annotation for fields that are of any type.

* Update the readme to include a brief description of how to use the `omitempty` in a attr field.

* Update the json example also using a uint for type variety.
2016-07-16 08:24:21 -07:00
Sam Woodard 3b09fe9cb9 fix the build 2016-07-15 13:40:23 -07:00
Sam Woodard 81169d52b6 Merge pull request #32 from lyoung-uber/id
Update to reflect official Golang naming specifications
2016-07-15 13:32:39 -07:00
Aren Patel 0c87c2c473 Added the MarshalOnePayloadWithoutIncluded method for marshaling sing… (#34)
* Added the MarshalOnePayloadWithoutIncluded method for marshaling single objects and their relations without actually populating the "included" key with the full related object.

* Completed method description.

* Added a test to ensure that the library is capable of Unmarshmaling a payload where the One object in the payload had relationships but did not include them via "included"
2016-07-13 18:32:04 -07:00
Luke Young 57819f3b34 Follow Golang naming specifications 2016-07-05 20:32:15 -05:00
Sam Woodard 5005a0cfae Add method passthrough to runtime 2016-05-25 09:14:49 -07:00
Sam Woodard a337a3bc9f update travis build versions 2016-04-10 05:06:41 -07:00
Sam Woodard ec72d597cc Merge pull request #30 from brandonbloom/messages
Improve ErrTypeMismatch error message
2016-04-09 05:34:35 -07:00
Brandon Bloom 5b0e148a11 Improve ErrTypeMismatch error message 2016-04-08 17:34:02 -07:00
Sam Woodard 564f8a809c Merge pull request #29 from morenoh149/patch-1
fix typo in example script
2016-03-30 07:23:18 -07:00
Harry Moreno 6c6ec44cd3 fix typo in example script 2016-03-27 14:44:52 -04:00
Sam Woodard ffd7d3c05d Merge pull request #26 from sharonjl/master
Added support for int64 and uint64 primary id types
2016-01-26 10:12:38 -08:00
Sam Woodard a2b98a0910 Merge pull request #24 from shwoodard/add-more-numerics
add support for more numeric types and pointers to
2016-01-12 10:05:49 -08:00
Sam Woodard e1b87012d8 add support for more numeric types and pointers to 2016-01-12 10:00:18 -08:00
Sharon Lourduraj 04bf04450b Added support for int64 and uint64 primary id types 2016-01-07 15:14:57 -05:00
Sam Woodard b2e454fb0a Merge pull request #23 from shwoodard/optimizations
optimizations, refactors
2016-01-05 14:14:39 -08:00
Sam Woodard d4c1f40f1d optimizations, refactors 2016-01-05 13:13:24 -08:00
Sam Woodard ae3568a7b2 Merge pull request #20 from shwoodard/string-array-values
fix with included and handle string array value
2015-10-28 10:15:22 -07:00
Sam Woodard d336c1b556 fix with included and handle string array value 2015-10-28 10:08:50 -07:00
Sam Woodard 00f3f5774e Merge pull request #19 from shwoodard/unmarshal-many
Add UnmarshalManyPayload
2015-10-27 09:33:41 -07:00
Sam Woodard 04da7d3cac Add UnmarshalManyPayload 2015-10-27 09:29:56 -07:00
Sam Woodard 53c7c4e5b5 Merge pull request #17 from shwoodard/nil-times
add support for pointers to time and if nil put null in json response
2015-10-27 09:26:49 -07:00
Sam Woodard 438e9b0626 add support for pointers to time and if nil put null in json response 2015-10-13 09:10:10 -07:00
Sam Woodard fd92bd51ba add a go for travis ci to build with 2015-10-12 15:46:56 -07:00
Sam Woodard 4eef9a091e Merge pull request #16 from shwoodard/client-ids
Client ids and refactor
2015-10-12 15:45:42 -07:00
Sam Woodard 509c75ed6b flag in the wrong the place 2015-10-12 15:41:05 -07:00
Sam Woodard 57cb7c9f3f Merge remote-tracking branch 'origin/master' into client-ids
* origin/master:
  Fix issue #10 to avoid panics with invalid JSON
2015-10-12 11:08:23 -07:00
Sam Woodard fb2e4b68ce fix nil pointer panic 2015-10-12 11:05:06 -07:00
Sam Woodard d9645f7f7e major code simplification while making client ids work 2015-09-17 15:55:53 -07:00
Sam Woodard 2b929743a5 Merge pull request #13 from christianklotz/master
Fix issue #10 to avoid panics with invalid JSON
2015-09-12 11:00:52 -07:00
Sam Woodard 10e0987b5d start supporting client ids 2015-09-10 15:55:51 -07:00
Christian Klotz b11e9985b4 Fix issue #10 to avoid panics with invalid JSON 2015-08-29 18:29:58 +01:00
Sam Woodard e93213ecfb Merge pull request #12 from swr/master
Fix typo in example app go get text.
2015-08-25 07:32:51 -07:00
Sean W. Richardson 0f0ccecbdb Fix typo in example app go get text. 2015-08-24 19:53:05 -05:00
Sam Woodard f666c361ea Merge pull request #11 from dennisfaust/master
Small edits to readme. Standardize on JSON API nomenclature.
2015-08-19 07:26:57 -07:00
Dennis Faust 0af952c6c4 Small edits to readme. Standardize on JSON API. 2015-08-18 14:22:19 -07:00