Skip to content

Commit

Permalink
improve documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
SoMuchForSubtlety committed Jan 12, 2020
1 parent 0db937f commit b3e2843
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 1 deletion.
48 changes: 47 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,50 @@

# golark

Golark is a go client for Skylark CMS APIs.
Golark makes it easy to build Skylark API requests in golang.

```go
package main

import (
"github.com/SoMuchForSubtlety/golark"
)

type episode struct {
Title string `json:"title"`
Subtitle string `json:"subtitle"`
UID string `json:"uid"`
DataSourceID string `json:"data_source_id"`
Items []string `json:"items"`
}

func main() {
var ep episode

// request an object
golark.NewRequest("https://test.com/api/", "episodes", "ep_123").
Execute(&ep)

// request an object with only certain fields
golark.NewRequest("https://test.com/api/", "episodes", "ep_123").
AddField(golark.NewField("title")).
AddField(golark.NewField("subtitle")).
AddField(golark.NewField("uid")).
Execute(&ep)

type container struct {
Objects []episode `json:"objects"`
}

var eps container

// request all members of a collection
golark.NewRequest("https://test.com/api/", "episodes", "").
Execute(&eps)

// request all members of a collection with certain properties
golark.NewRequest("https://test.com/api/", "episodes", "").
WithFilter("title", golark.NewFilter(golark.Equals, "test episode title")).
Execute(&eps)
}
```
43 changes: 43 additions & 0 deletions exaple_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,46 @@ func ExampleRequest_all() {
log.Fatal(err)
}
}

// AddField lets you limit requests to certain fields, this can speed them up significanty.
func ExampleRequest_AddField() {
NewRequest("https://test.com/api/", "person", "pers_123").
AddField(NewField("first_name")).
AddField(NewField("last_name"))
}

func ExampleRequest_Expand() {
NewRequest("https://test.com/api/", "person", "pers_123").
Expand(NewField("team_url"))
}

func ExampleRequest_OrderBy() {
NewRequest("https://test.com/api/", "person", "").
OrderBy(NewField("first_name"))
}

// Filters are helpful to search for onjects with knowing their ID
func ExampleRequest_WithFilter() {
NewRequest("https://test.com/api/", "person", "").
WithFilter("first_name", NewFilter(Equals, "Bob"))
}

func ExampleRequest_WithFilter_greater_than() {
NewRequest("https://test.com/api/", "person", "").
WithFilter("salary", NewFilter(GreaterThan, "10000"))
}

// You can use comma separated lists to query multiple objects at once.
func ExampleRequest_WithFilter_multiple() {
NewRequest("https://test.com/api/", "person", "").
WithFilter("first_name", NewFilter(Equals, "Bob,Lucas,Sue"))
}

func ExampleField_WithSubField() {
NewRequest("https://test.com/api/", "person", "").
AddField(NewField("first_name")).
AddField(NewField("team_url").
WithSubField(NewField("name")).
WithSubField(NewField("nation_url").
WithSubField(NewField("name"))))
}

0 comments on commit b3e2843

Please sign in to comment.