Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F14754425
post.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
post.go
View Options
package
writeas
import
(
"fmt"
"net/http"
"time"
)
type
(
// Post represents a published Write.as post, whether anonymous, owned by a
// user, or part of a collection.
Post
struct
{
ID
string
`json:"id"`
Slug
string
`json:"slug"`
Token
string
`json:"token"`
Font
string
`json:"appearance"`
Language
*
string
`json:"language"`
RTL
*
bool
`json:"rtl"`
Listed
bool
`json:"listed"`
Created
time
.
Time
`json:"created"`
Title
string
`json:"title"`
Content
string
`json:"body"`
Views
int64
`json:"views"`
Tags
[]
string
`json:"tags"`
Images
[]
string
`json:"images"`
OwnerName
string
`json:"owner,omitempty"`
Collection
*
Collection
`json:"collection,omitempty"`
}
// PostParams holds values for creating or updating a post.
PostParams
struct
{
// Parameters only for updating
ID
string
`json:"-"`
Token
string
`json:"token,omitempty"`
// Parameters for creating or updating
Title
string
`json:"title,omitempty"`
Content
string
`json:"body,omitempty"`
Font
string
`json:"font,omitempty"`
IsRTL
*
bool
`json:"rtl,omitempty"`
Language
*
string
`json:"lang,omitempty"`
Crosspost
[]
map
[
string
]
string
`json:"crosspost,omitempty"`
}
)
// GetPost retrieves a published post, returning the Post and any error (in
// user-friendly form) that occurs. See
// https://writeas.github.io/docs/#retrieve-a-post.
func
(
c
*
Client
)
GetPost
(
id
string
)
(
*
Post
,
error
)
{
p
:=
&
Post
{}
env
,
err
:=
c
.
get
(
fmt
.
Sprintf
(
"/posts/%s"
,
id
),
p
)
if
err
!=
nil
{
return
nil
,
err
}
var
ok
bool
if
p
,
ok
=
env
.
Data
.(
*
Post
);
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Wrong data returned from API."
)
}
status
:=
env
.
Code
if
status
==
http
.
StatusOK
{
return
p
,
nil
}
else
if
status
==
http
.
StatusNotFound
{
return
nil
,
fmt
.
Errorf
(
"Post not found."
)
}
else
if
status
==
http
.
StatusGone
{
return
nil
,
fmt
.
Errorf
(
"Post unpublished."
)
}
else
{
return
nil
,
fmt
.
Errorf
(
"Problem getting post: %s. %v\n"
,
status
,
err
)
}
return
p
,
nil
}
// CreatePost publishes a new post, returning a user-friendly error if one comes
// up. See https://writeas.github.io/docs/#publish-a-post.
func
(
c
*
Client
)
CreatePost
(
sp
*
PostParams
)
(
*
Post
,
error
)
{
p
:=
&
Post
{}
env
,
err
:=
c
.
post
(
"/posts"
,
sp
,
p
)
if
err
!=
nil
{
return
nil
,
err
}
var
ok
bool
if
p
,
ok
=
env
.
Data
.(
*
Post
);
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Wrong data returned from API."
)
}
status
:=
env
.
Code
if
status
==
http
.
StatusCreated
{
return
p
,
nil
}
else
if
status
==
http
.
StatusBadRequest
{
return
nil
,
fmt
.
Errorf
(
"Bad request: %s"
,
env
.
ErrorMessage
)
}
else
{
return
nil
,
fmt
.
Errorf
(
"Problem getting post: %s. %v\n"
,
status
,
err
)
}
return
p
,
nil
}
// UpdatePost updates a published post with the given PostParams. See
// https://writeas.github.io/docs/#update-a-post.
func
(
c
*
Client
)
UpdatePost
(
sp
*
PostParams
)
(
*
Post
,
error
)
{
p
:=
&
Post
{}
env
,
err
:=
c
.
put
(
fmt
.
Sprintf
(
"/posts/%s"
,
sp
.
ID
),
sp
,
p
)
if
err
!=
nil
{
return
nil
,
err
}
var
ok
bool
if
p
,
ok
=
env
.
Data
.(
*
Post
);
!
ok
{
return
nil
,
fmt
.
Errorf
(
"Wrong data returned from API."
)
}
status
:=
env
.
Code
if
status
==
http
.
StatusOK
{
return
p
,
nil
}
else
if
c
.
isNotLoggedIn
(
status
)
{
return
nil
,
fmt
.
Errorf
(
"Not authenticated."
)
}
else
if
status
==
http
.
StatusBadRequest
{
return
nil
,
fmt
.
Errorf
(
"Bad request: %s"
,
env
.
ErrorMessage
)
}
else
{
return
nil
,
fmt
.
Errorf
(
"Problem getting post: %s. %v\n"
,
status
,
err
)
}
return
p
,
nil
}
// DeletePost permanently deletes a published post. See
// https://writeas.github.io/docs/#delete-a-post.
func
(
c
*
Client
)
DeletePost
(
sp
*
PostParams
)
error
{
env
,
err
:=
c
.
delete
(
fmt
.
Sprintf
(
"/posts/%s"
,
sp
.
ID
),
map
[
string
]
string
{
"token"
:
sp
.
Token
,
})
if
err
!=
nil
{
return
err
}
status
:=
env
.
Code
if
status
==
http
.
StatusNoContent
{
return
nil
}
else
if
c
.
isNotLoggedIn
(
status
)
{
return
fmt
.
Errorf
(
"Not authenticated."
)
}
else
if
status
==
http
.
StatusBadRequest
{
return
fmt
.
Errorf
(
"Bad request: %s"
,
env
.
ErrorMessage
)
}
return
fmt
.
Errorf
(
"Problem getting post: %s. %v\n"
,
status
,
err
)
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 24, 1:20 PM (1 d, 8 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3674233
Attached To
rWGO writeas-go
Event Timeline
Log In to Comment