Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F12686983
collection.go
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
4 KB
Subscribers
None
collection.go
View Options
package
writeas
import
(
"fmt"
"net/http"
)
type
(
// Collection represents a collection of posts. Blogs are a type of collection
// on Write.as.
Collection
struct
{
Alias
string
`json:"alias"`
Title
string
`json:"title"`
Description
string
`json:"description"`
StyleSheet
string
`json:"style_sheet"`
Private
bool
`json:"private"`
Views
int64
`json:"views"`
Domain
string
`json:"domain,omitempty"`
Email
string
`json:"email,omitempty"`
URL
string
`json:"url,omitempty"`
TotalPosts
int
`json:"total_posts"`
Posts
*
[]
Post
`json:"posts,omitempty"`
}
// CollectionParams holds values for creating a collection.
CollectionParams
struct
{
Alias
string
`json:"alias"`
Title
string
`json:"title"`
}
)
// CreateCollection creates a new collection, returning a user-friendly error
// if one comes up. Requires a Write.as subscription. See
// https://developer.write.as/docs/api/#create-a-collection
func
(
c
*
Client
)
CreateCollection
(
sp
*
CollectionParams
)
(
*
Collection
,
error
)
{
p
:=
&
Collection
{}
env
,
err
:=
c
.
post
(
"/collections"
,
sp
,
p
)
if
err
!=
nil
{
return
nil
,
err
}
var
ok
bool
if
p
,
ok
=
env
.
Data
.(
*
Collection
);
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Wrong data returned from API."
)
}
status
:=
env
.
Code
if
status
!=
http
.
StatusCreated
{
if
status
==
http
.
StatusBadRequest
{
return
nil
,
fmt
.
Errorf
(
"Bad request: %s"
,
env
.
ErrorMessage
)
}
else
if
status
==
http
.
StatusForbidden
{
return
nil
,
fmt
.
Errorf
(
"Casual or Pro user required."
)
}
else
if
status
==
http
.
StatusConflict
{
return
nil
,
fmt
.
Errorf
(
"Collection name is already taken."
)
}
else
if
status
==
http
.
StatusPreconditionFailed
{
return
nil
,
fmt
.
Errorf
(
"Reached max collection quota."
)
}
return
nil
,
fmt
.
Errorf
(
"Problem getting post: %d. %v\n"
,
status
,
err
)
}
return
p
,
nil
}
// GetCollection retrieves a collection, returning the Collection and any error
// (in user-friendly form) that occurs. See
// https://developer.write.as/docs/api/#retrieve-a-collection
func
(
c
*
Client
)
GetCollection
(
alias
string
)
(
*
Collection
,
error
)
{
coll
:=
&
Collection
{}
env
,
err
:=
c
.
get
(
fmt
.
Sprintf
(
"/collections/%s"
,
alias
),
coll
)
if
err
!=
nil
{
return
nil
,
err
}
var
ok
bool
if
coll
,
ok
=
env
.
Data
.(
*
Collection
);
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Wrong data returned from API."
)
}
status
:=
env
.
Code
if
status
==
http
.
StatusOK
{
return
coll
,
nil
}
else
if
status
==
http
.
StatusNotFound
{
return
nil
,
fmt
.
Errorf
(
"Collection not found."
)
}
else
{
return
nil
,
fmt
.
Errorf
(
"Problem getting collection: %d. %v\n"
,
status
,
err
)
}
}
// GetCollectionPosts retrieves a collection's posts, returning the Posts
// and any error (in user-friendly form) that occurs. See
// https://developer.write.as/docs/api/#retrieve-collection-posts
func
(
c
*
Client
)
GetCollectionPosts
(
alias
string
)
(
*
[]
Post
,
error
)
{
coll
:=
&
Collection
{}
env
,
err
:=
c
.
get
(
fmt
.
Sprintf
(
"/collections/%s/posts"
,
alias
),
coll
)
if
err
!=
nil
{
return
nil
,
err
}
var
ok
bool
if
coll
,
ok
=
env
.
Data
.(
*
Collection
);
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Wrong data returned from API."
)
}
status
:=
env
.
Code
if
status
==
http
.
StatusOK
{
return
coll
.
Posts
,
nil
}
else
if
status
==
http
.
StatusNotFound
{
return
nil
,
fmt
.
Errorf
(
"Collection not found."
)
}
else
{
return
nil
,
fmt
.
Errorf
(
"Problem getting collection: %d. %v\n"
,
status
,
err
)
}
}
// GetUserCollections retrieves the authenticated user's collections.
// See https://developers.write.as/docs/api/#retrieve-user-39-s-collections
func
(
c
*
Client
)
GetUserCollections
()
(
*
[]
Collection
,
error
)
{
colls
:=
&
[]
Collection
{}
env
,
err
:=
c
.
get
(
"/me/collections"
,
colls
)
if
err
!=
nil
{
return
nil
,
err
}
var
ok
bool
if
colls
,
ok
=
env
.
Data
.(
*
[]
Collection
);
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Wrong data returned from API."
)
}
status
:=
env
.
Code
if
status
!=
http
.
StatusOK
{
if
c
.
isNotLoggedIn
(
status
)
{
return
nil
,
fmt
.
Errorf
(
"Not authenticated."
)
}
return
nil
,
fmt
.
Errorf
(
"Problem getting collections: %d. %v\n"
,
status
,
err
)
}
return
colls
,
nil
}
// DeleteCollection permanently deletes a collection and makes any posts on it
// anonymous.
//
// See https://developers.write.as/docs/api/#delete-a-collection.
func
(
c
*
Client
)
DeleteCollection
(
alias
string
)
error
{
endpoint
:=
"/collections/"
+
alias
env
,
err
:=
c
.
delete
(
endpoint
,
nil
/* data */
)
if
err
!=
nil
{
return
err
}
status
:=
env
.
Code
switch
status
{
case
http
.
StatusNoContent
:
return
nil
case
http
.
StatusUnauthorized
:
return
fmt
.
Errorf
(
"Not authenticated."
)
case
http
.
StatusBadRequest
:
return
fmt
.
Errorf
(
"Bad request: %s"
,
env
.
ErrorMessage
)
default
:
return
fmt
.
Errorf
(
"Problem deleting collection: %d. %s\n"
,
status
,
env
.
ErrorMessage
)
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Dec 14, 12:26 AM (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3537371
Attached To
rWGO writeas-go
Event Timeline
Log In to Comment