Skip to content

Commit 3205036

Browse files
authored
Initial pass at documentation (#9)
1 parent 6b5b1ac commit 3205036

14 files changed

+438
-34
lines changed

dwapi/datasets.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,31 +26,44 @@ type DatasetService struct {
2626
client *Client
2727
}
2828

29+
// AddFilesFromURLs adds files from URLs to a dataset. This method allows files published on the web
30+
// to be added to a data.world dataset via their URL. This method can also be used to retrieve data
31+
// via web APIs, with advanced options for HTTP method, request payload and authentication.
32+
//
33+
// The source URL will be stored so you can easily update your file anytime it changes via the
34+
// `Sync now` button on the dataset page or by calling `Dataset.Sync()`.
2935
func (s *DatasetService) AddFilesFromURLs(owner, datasetid string, body *[]FileCreateRequest) (
3036
response SuccessResponse, err error) {
3137
return s.client.File.AddFilesFromURLs(owner, datasetid, body)
3238
}
3339

40+
// AssociateDOI associates a DOI (Digital Object Identifier) with a dataset.
3441
func (s *DatasetService) AssociateDOI(owner, datasetid, doi string) (response SuccessResponse, err error) {
3542
return s.client.DOI.Associate(owner, datasetid, doi)
3643
}
3744

45+
// AssociateDOIWithVersion associates a DOI (Digital Object Identifier) with a version of a dataset.
3846
func (s *DatasetService) AssociateDOIWithVersion(owner, datasetid, versionid, doi string) (
3947
response SuccessResponse, err error) {
4048
return s.client.DOI.AssociateWithVersion(owner, datasetid, versionid, doi)
4149
}
4250

51+
// Contributing lists the datasets that the currently authenticated user has access to because
52+
// they are a contributor.
4353
func (s *DatasetService) Contributing() (response []DatasetSummaryResponse, err error) {
4454
return s.client.User.DatasetsContributing()
4555
}
4656

57+
// Create a dataset and associated data.
4758
func (s *DatasetService) Create(owner string, body *DatasetCreateRequest) (response DatasetCreateResponse, err error) {
4859
endpoint := fmt.Sprintf("/datasets/%s", owner)
4960
headers := s.client.buildHeaders(POST, endpoint)
5061
err = s.client.request(headers, body, &response)
5162
return
5263
}
5364

65+
// CreateOrReplace attempts to create a dataset with the given id, and will reset the dataset if it
66+
// already exists, redefining all of its attributes.
5467
func (s *DatasetService) CreateOrReplace(owner, id string, body *DatasetReplaceRequest) (
5568
response SuccessResponse, err error) {
5669
endpoint := fmt.Sprintf("/datasets/%s/%s", owner, id)
@@ -59,58 +72,93 @@ func (s *DatasetService) CreateOrReplace(owner, id string, body *DatasetReplaceR
5972
return
6073
}
6174

75+
// Delete a dataset and associated data.
6276
func (s *DatasetService) Delete(owner, datasetid string) (response SuccessResponse, err error) {
6377
endpoint := fmt.Sprintf("/datasets/%s/%s", owner, datasetid)
6478
headers := s.client.buildHeaders(DELETE, endpoint)
6579
err = s.client.request(headers, nil, &response)
6680
return
6781
}
6882

83+
// DeleteDOI deletes a DOI (Digital Object Identifier) associated with a version of a dataset.
6984
func (s *DatasetService) DeleteDOI(owner, datasetid, doi string) (response SuccessResponse, err error) {
7085
return s.client.DOI.Delete(owner, datasetid, doi)
7186
}
7287

88+
// DeleteDOIAssociatedWithVersion deletes a DOI (Digital Object Identifier) associated with a version
89+
// of a dataset.
7390
func (s *DatasetService) DeleteDOIAssociatedWithVersion(owner, datasetid, versionid, doi string) (
7491
response SuccessResponse, err error) {
7592
return s.client.DOI.DeleteAssociatedWithVersion(owner, datasetid, versionid, doi)
7693
}
7794

95+
// DownloadFile downloads a file within the dataset as originally uploaded.
96+
//
97+
// Prefer `Query.ExecuteSQL()` or `Query.ExecuteSPARQL()` for retrieving clean and structured data.
7898
func (s *DatasetService) DownloadFile(owner, datasetid, filename string) (response io.Reader, err error) {
7999
return s.client.File.Download(owner, datasetid, filename)
80100
}
81101

102+
// DownloadAndSaveFile downloads a file within the dataset as originally uploaded, and saves the results
103+
// to a file.
104+
//
105+
// Prefer `Query.ExecuteSQL()` or `Query.ExecuteSPARQL()` for retrieving clean and structured data.
82106
func (s *DatasetService) DownloadAndSaveFile(owner, datasetid, filename, path string) (
83107
response SuccessResponse, err error) {
84108
return s.client.File.DownloadAndSave(owner, datasetid, filename, path)
85109
}
86110

111+
// Download downloads a .zip file containing all files within a dataset as originally uploaded.
112+
//
113+
// Prefer `Query.ExecuteSQL()` or `Query.ExecuteSPARQL()` for retrieving clean and structured data.
87114
func (s *DatasetService) Download(owner, datasetid, filename string) (response io.Reader, err error) {
88115
return s.client.File.DownloadDataset(owner, datasetid)
89116
}
90117

118+
// DownloadAndSave downloads a .zip file containing all files within a dataset as originally
119+
// uploaded, and saves the results to a file.
120+
//
121+
// Prefer `Query.ExecuteSQL()` or `Query.ExecuteSPARQL()` for retrieving clean and structured data.
91122
func (s *DatasetService) DownloadAndSave(owner, datasetid, path string) (response SuccessResponse, err error) {
92123
return s.client.File.DownloadAndSaveDataset(owner, datasetid, path)
93124
}
94125

126+
// Liked lists the datasets that the currently authenticated user has liked (bookmarked).
95127
func (s *DatasetService) Liked() (response []DatasetSummaryResponse, err error) {
96128
return s.client.User.DatasetsLiked()
97129
}
98130

131+
// ListQueries lists the saved queries associated with a dataset.
132+
//
133+
// Query definitions will be returned, not the query results. To retrieve the query results,
134+
// use `Query.ExecuteSavedQuery`.
99135
func (s *DatasetService) ListQueries(owner, datasetid string) (response []QuerySummaryResponse, err error) {
100136
return s.client.Query.ListQueriesAssociatedWithDataset(owner, datasetid)
101137
}
102138

139+
// Owned lists the datasets that the currently authenticated user has access to because they are
140+
// the owner.
103141
func (s *DatasetService) Owned() (response []DatasetSummaryResponse, err error) {
104142
return s.client.User.DatasetsOwned()
105143
}
106144

145+
// Retrieve fetches a dataset.
146+
//
147+
// The definition will be returned, not the associated data. Use `Query.ExecuteSQL()`
148+
// or `Query.ExecuteSPARQL()` to query the data. You can also download the original
149+
// files with `Dataset.Download` or `Dataset.DownloadFile`.
107150
func (s *DatasetService) Retrieve(owner, datasetid string) (response DatasetSummaryResponse, err error) {
108151
endpoint := fmt.Sprintf("/datasets/%s/%s", owner, datasetid)
109152
headers := s.client.buildHeaders(GET, endpoint)
110153
err = s.client.request(headers, nil, &response)
111154
return
112155
}
113156

157+
// Retrieve fetches a version of a dataset.
158+
//
159+
// The definition will be returned, not the associated data. Use `Query.ExecuteSQL()`
160+
// or `Query.ExecuteSPARQL()` to query the data. You can also download the original
161+
// files with `Dataset.Download` or `Dataset.DownloadFile`.
114162
func (s *DatasetService) RetrieveVersion(owner, datasetid, versionid string) (
115163
response DatasetSummaryResponse, err error) {
116164
endpoint := fmt.Sprintf("/datasets/%s/%s/v/%s", owner, datasetid, versionid)
@@ -119,17 +167,21 @@ func (s *DatasetService) RetrieveVersion(owner, datasetid, versionid string) (
119167
return
120168
}
121169

170+
// Sync files within a dataset. This method will process the latest data available for files added
171+
// from URLs or via streams.
122172
func (s *DatasetService) Sync(owner, datasetid string) (response SuccessResponse, err error) {
123173
return s.client.File.Sync(owner, datasetid)
124174
}
125175

176+
// Update a dataset.
126177
func (s *DatasetService) Update(owner, id string, body *DatasetUpdateRequest) (response SuccessResponse, err error) {
127178
endpoint := fmt.Sprintf("/datasets/%s/%s", owner, id)
128179
headers := s.client.buildHeaders(PATCH, endpoint)
129180
err = s.client.request(headers, body, &response)
130181
return
131182
}
132183

184+
// UploadFile uploads one file at a time to a dataset.
133185
func (s *DatasetService) UploadFile(owner, id, filename, path string, expandArchive bool) (
134186
response SuccessResponse, err error) {
135187
return s.client.File.Upload(owner, id, filename, path, expandArchive)

dwapi/datasets_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package dwapi
1919

2020
import (
2121
"fmt"
22+
"log"
2223
"net/http"
2324
"testing"
2425

@@ -53,6 +54,23 @@ func TestDatasetService_Create(t *testing.T) {
5354
}
5455
}
5556

57+
func ExampleDatasetService_Create() {
58+
owner := "dataset-owner"
59+
request := DatasetCreateRequest{
60+
Title: "My Awesome Dataset",
61+
Description: "A short description",
62+
Summary: "A long description",
63+
Tags: []string{"first", "puppies and kittens"},
64+
License: "PDDL",
65+
Visibility: "PRIVATE",
66+
}
67+
response, err := dw.Dataset.Create(owner, &request)
68+
if err != nil {
69+
log.Fatal(err)
70+
}
71+
fmt.Println("Dataset URI:", response.URI)
72+
}
73+
5674
func TestDatasetService_CreateOrReplace(t *testing.T) {
5775
setup()
5876
defer teardown()

dwapi/dois.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@ type DoiService struct {
2525
client *Client
2626
}
2727

28+
// Associate a DOI (Digital Object Identifier) with a dataset.
2829
func (s *DoiService) Associate(owner, datasetid, doi string) (response SuccessResponse, err error) {
2930
endpoint := fmt.Sprintf("/datasets/%s/%s/dois/%s", owner, datasetid, doi)
3031
headers := s.client.buildHeaders(PUT, endpoint)
3132
err = s.client.request(headers, nil, &response)
3233
return
3334
}
3435

36+
// AssociateWithVersion associates a DOI (Digital Object Identifier) with a version of dataset.
3537
func (s *DoiService) AssociateWithVersion(owner, datasetid, versionid, doi string) (
3638
response SuccessResponse, err error) {
3739
endpoint := fmt.Sprintf("/datasets/%s/%s/v/%s/dois/%s", owner, datasetid, versionid, doi)
@@ -40,13 +42,15 @@ func (s *DoiService) AssociateWithVersion(owner, datasetid, versionid, doi strin
4042
return
4143
}
4244

45+
// Delete a DOI (Digital Object Identifier) associated with a dataset.
4346
func (s *DoiService) Delete(owner, datasetid, doi string) (response SuccessResponse, err error) {
4447
endpoint := fmt.Sprintf("/datasets/%s/%s/dois/%s", owner, datasetid, doi)
4548
headers := s.client.buildHeaders(DELETE, endpoint)
4649
err = s.client.request(headers, nil, &response)
4750
return
4851
}
4952

53+
// DeleteAssociatedWithVersion deletes a DOI (Digital Object Identifier) associated with a dataset.
5054
func (s *DoiService) DeleteAssociatedWithVersion(owner, datasetid, versionid, doi string) (
5155
response SuccessResponse, err error) {
5256
endpoint := fmt.Sprintf("/datasets/%s/%s/v/%s/dois/%s", owner, datasetid, versionid, doi)

dwapi/files.go

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ type FileService struct {
2727
client *Client
2828
}
2929

30+
// AddFilesFromURLs adds files from URLs to a dataset. This method allows files published on the web
31+
// to be added to a data.world dataset via their URL. This method can also be used to retrieve data
32+
// via web APIs, with advanced options for HTTP method, request payload and authentication.
33+
//
34+
// The source URL will be stored so you can easily update your file anytime it changes via the
35+
// `Sync now` button on the dataset page or by calling `File.Sync()`.
3036
func (s *FileService) AddFilesFromURLs(owner, id string, body *[]FileCreateRequest) (
3137
response SuccessResponse, err error) {
3238
endpoint := fmt.Sprintf("/datasets/%s/%s/files", owner, id)
@@ -35,19 +41,27 @@ func (s *FileService) AddFilesFromURLs(owner, id string, body *[]FileCreateReque
3541
return
3642
}
3743

44+
// Delete a single file from a dataset.
3845
func (s *FileService) Delete(owner, id, filename string) (response SuccessResponse, err error) {
3946
endpoint := fmt.Sprintf("/datasets/%s/%s/files/%s", owner, id, filename)
4047
headers := s.client.buildHeaders(DELETE, endpoint)
4148
err = s.client.request(headers, nil, &response)
4249
return
4350
}
4451

52+
// Download a file within the dataset as originally uploaded.
53+
//
54+
// Prefer `Query.ExecuteSQL()` or `Query.ExecuteSPARQL()` for retrieving clean and structured data.
4555
func (s *FileService) Download(owner, id, filename string) (response io.ReadCloser, err error) {
4656
endpoint := fmt.Sprintf("/file_download/%s/%s/%s", owner, id, filename)
4757
headers := s.client.buildHeaders(GET, endpoint)
4858
return s.client.rawRequest(headers, nil)
4959
}
5060

61+
// DownloadAndSave downloads a file within the dataset as originally uploaded, and saves the results
62+
// to a file.
63+
//
64+
// Prefer `Query.ExecuteSQL()` or `Query.ExecuteSPARQL()` for retrieving clean and structured data.
5165
func (s *FileService) DownloadAndSave(owner, id, filename, path string) (response SuccessResponse, err error) {
5266
r, err := s.Download(owner, id, filename)
5367
if err != nil {
@@ -63,12 +77,19 @@ func (s *FileService) DownloadAndSave(owner, id, filename, path string) (respons
6377
}, nil
6478
}
6579

80+
// DownloadDataset downloads a .zip file containing all files within a dataset as originally uploaded.
81+
//
82+
// Prefer `Query.ExecuteSQL()` or `Query.ExecuteSPARQL()` for retrieving clean and structured data.
6683
func (s *FileService) DownloadDataset(owner, id string) (response io.ReadCloser, err error) {
6784
endpoint := fmt.Sprintf("/download/%s/%s", owner, id)
6885
headers := s.client.buildHeaders(GET, endpoint)
6986
return s.client.rawRequest(headers, nil)
7087
}
7188

89+
// DownloadAndSaveDataset downloads a .zip file containing all files within a dataset as originally
90+
// uploaded, and saves the results to a file.
91+
//
92+
// Prefer `Query.ExecuteSQL()` or `Query.ExecuteSPARQL()` for retrieving clean and structured data.
7293
func (s *FileService) DownloadAndSaveDataset(owner, id, path string) (response SuccessResponse, err error) {
7394
r, err := s.DownloadDataset(owner, id)
7495
if err != nil {
@@ -84,13 +105,33 @@ func (s *FileService) DownloadAndSaveDataset(owner, id, path string) (response S
84105
}, nil
85106
}
86107

108+
// Sync files within a dataset. This method will process the latest data available for files added
109+
// from URLs or via streams.
87110
func (s *FileService) Sync(owner, id string) (response SuccessResponse, err error) {
88111
endpoint := fmt.Sprintf("/datasets/%s/%s/sync", owner, id)
89112
headers := s.client.buildHeaders(GET, endpoint)
90113
err = s.client.request(headers, nil, &response)
91114
return
92115
}
93116

117+
// Upload one file at a time to a dataset.
118+
func (s *FileService) Upload(owner, id, filename, path string, expandArchive bool) (
119+
response SuccessResponse, err error) {
120+
f, err := os.Open(path)
121+
if err != nil {
122+
return
123+
}
124+
125+
response, err = s.UploadStream(owner, id, filename, f, expandArchive)
126+
if err != nil {
127+
return
128+
}
129+
130+
err = f.Close()
131+
return
132+
}
133+
134+
// UploadStream uploads the contents of an io.Reader to a file in a dataset.
94135
func (s *FileService) UploadStream(owner, id, filename string, body io.Reader, expandArchive bool) (
95136
response SuccessResponse, err error) {
96137
endpoint := fmt.Sprintf("/uploads/%s/%s/files/%s", owner, id, filename)
@@ -111,19 +152,3 @@ func (s *FileService) UploadStream(owner, id, filename string, body io.Reader, e
111152
r.Close()
112153
return
113154
}
114-
115-
func (s *FileService) Upload(owner, id, filename, path string, expandArchive bool) (
116-
response SuccessResponse, err error) {
117-
f, err := os.Open(path)
118-
if err != nil {
119-
return
120-
}
121-
122-
response, err = s.UploadStream(owner, id, filename, f, expandArchive)
123-
if err != nil {
124-
return
125-
}
126-
127-
err = f.Close()
128-
return
129-
}

0 commit comments

Comments
 (0)