Compare commits
No commits in common. "develop" and "v0.6.1" have entirely different histories.
@ -23,22 +23,15 @@ func NewClient(options ...func(*Client)) *Client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set defaults
|
// set defaults
|
||||||
var ok bool
|
|
||||||
if c.BaseUrl == "" {
|
if c.BaseUrl == "" {
|
||||||
c.BaseUrl, ok = os.LookupEnv("SN_BASE_URL")
|
|
||||||
if !ok {
|
|
||||||
c.BaseUrl = "https://stacker.news"
|
c.BaseUrl = "https://stacker.news"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if c.ApiKey == "" {
|
if c.ApiKey == "" {
|
||||||
c.ApiKey = os.Getenv("SN_API_KEY")
|
c.ApiKey = os.Getenv("SN_API_KEY")
|
||||||
}
|
}
|
||||||
if c.MediaUrl == "" {
|
if c.MediaUrl == "" {
|
||||||
c.MediaUrl, ok = os.LookupEnv("SN_MEDIA_URL")
|
|
||||||
if !ok {
|
|
||||||
c.MediaUrl = "https://m.stacker.news"
|
c.MediaUrl = "https://m.stacker.news"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
c.ApiUrl = fmt.Sprintf("%s/api/graphql", c.BaseUrl)
|
c.ApiUrl = fmt.Sprintf("%s/api/graphql", c.BaseUrl)
|
||||||
|
|
||||||
return c
|
return c
|
||||||
|
51
items.go
51
items.go
@ -226,17 +226,7 @@ func (c *Client) PostDiscussion(title string, text string, sub string) (int, err
|
|||||||
Query: `
|
Query: `
|
||||||
mutation upsertDiscussion($title: String!, $text: String, $sub: String) {
|
mutation upsertDiscussion($title: String!, $text: String, $sub: String) {
|
||||||
upsertDiscussion(title: $title, text: $text, sub: $sub) {
|
upsertDiscussion(title: $title, text: $text, sub: $sub) {
|
||||||
result {
|
result { id }
|
||||||
id
|
|
||||||
}
|
|
||||||
invoice {
|
|
||||||
id
|
|
||||||
hash
|
|
||||||
bolt11
|
|
||||||
satsRequested
|
|
||||||
expiresAt
|
|
||||||
}
|
|
||||||
paymentMethod
|
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
Variables: map[string]interface{}{
|
Variables: map[string]interface{}{
|
||||||
@ -264,11 +254,6 @@ func (c *Client) PostDiscussion(title string, text string, sub string) (int, err
|
|||||||
return -1, err
|
return -1, err
|
||||||
}
|
}
|
||||||
|
|
||||||
inv := respBody.Data.UpsertDiscussion.Invoice
|
|
||||||
if inv.Id != 0 {
|
|
||||||
return -1, fmt.Errorf("mutation requires %d sats as payment", inv.SatsRequested)
|
|
||||||
}
|
|
||||||
|
|
||||||
return respBody.Data.UpsertDiscussion.Result.Id, nil
|
return respBody.Data.UpsertDiscussion.Result.Id, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,17 +262,7 @@ func (c *Client) PostLink(url string, title string, text string, sub string) (in
|
|||||||
Query: `
|
Query: `
|
||||||
mutation upsertLink($url: String!, $title: String!, $text: String, $sub: String!) {
|
mutation upsertLink($url: String!, $title: String!, $text: String, $sub: String!) {
|
||||||
upsertLink(url: $url, title: $title, text: $text, sub: $sub) {
|
upsertLink(url: $url, title: $title, text: $text, sub: $sub) {
|
||||||
result {
|
result { id }
|
||||||
id
|
|
||||||
}
|
|
||||||
invoice {
|
|
||||||
id
|
|
||||||
hash
|
|
||||||
bolt11
|
|
||||||
satsRequested
|
|
||||||
expiresAt
|
|
||||||
}
|
|
||||||
paymentMethod
|
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
Variables: map[string]interface{}{
|
Variables: map[string]interface{}{
|
||||||
@ -316,11 +291,6 @@ func (c *Client) PostLink(url string, title string, text string, sub string) (in
|
|||||||
return -1, err
|
return -1, err
|
||||||
}
|
}
|
||||||
|
|
||||||
inv := respBody.Data.UpsertLink.Invoice
|
|
||||||
if inv.Id != 0 {
|
|
||||||
return -1, fmt.Errorf("mutation requires %d sats as payment", inv.SatsRequested)
|
|
||||||
}
|
|
||||||
|
|
||||||
return respBody.Data.UpsertLink.Result.Id, nil
|
return respBody.Data.UpsertLink.Result.Id, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,17 +299,7 @@ func (c *Client) CreateComment(parentId int, text string) (int, error) {
|
|||||||
Query: `
|
Query: `
|
||||||
mutation upsertComment($parentId: ID!, $text: String!) {
|
mutation upsertComment($parentId: ID!, $text: String!) {
|
||||||
upsertComment(parentId: $parentId, text: $text) {
|
upsertComment(parentId: $parentId, text: $text) {
|
||||||
result {
|
result { id }
|
||||||
id
|
|
||||||
}
|
|
||||||
invoice {
|
|
||||||
id
|
|
||||||
hash
|
|
||||||
bolt11
|
|
||||||
satsRequested
|
|
||||||
expiresAt
|
|
||||||
}
|
|
||||||
paymentMethod
|
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
Variables: map[string]interface{}{
|
Variables: map[string]interface{}{
|
||||||
@ -366,11 +326,6 @@ func (c *Client) CreateComment(parentId int, text string) (int, error) {
|
|||||||
return -1, err
|
return -1, err
|
||||||
}
|
}
|
||||||
|
|
||||||
inv := respBody.Data.UpsertComment.Invoice
|
|
||||||
if inv.Id != 0 {
|
|
||||||
return -1, fmt.Errorf("mutation requires %d sats as payment", inv.SatsRequested)
|
|
||||||
}
|
|
||||||
|
|
||||||
return respBody.Data.UpsertComment.Result.Id, nil
|
return respBody.Data.UpsertComment.Result.Id, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
16
upload.go
16
upload.go
@ -26,18 +26,12 @@ type GetSignedPOSTResponse struct {
|
|||||||
func (c *Client) UploadImage(img *image.RGBA) (string, error) {
|
func (c *Client) UploadImage(img *image.RGBA) (string, error) {
|
||||||
var (
|
var (
|
||||||
b = img.Bounds()
|
b = img.Bounds()
|
||||||
width = b.Dx()
|
width = b.Max.X
|
||||||
height = b.Dy()
|
height = b.Max.Y
|
||||||
|
size = width * height
|
||||||
type_ = "image/png"
|
type_ = "image/png"
|
||||||
size int
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var imgBuf bytes.Buffer
|
|
||||||
if err := png.Encode(&imgBuf, img); err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
size = imgBuf.Len()
|
|
||||||
|
|
||||||
// get signed URL for S3 upload
|
// get signed URL for S3 upload
|
||||||
body := GqlBody{
|
body := GqlBody{
|
||||||
Query: `
|
Query: `
|
||||||
@ -105,7 +99,9 @@ func (c *Client) UploadImage(img *image.RGBA) (string, error) {
|
|||||||
if fw, err = w.CreateFormFile("file", "image.png"); err != nil {
|
if fw, err = w.CreateFormFile("file", "image.png"); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
fw.Write(imgBuf.Bytes())
|
if err = png.Encode(fw, img); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
if err = w.Close(); err != nil {
|
if err = w.Close(); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
51
user.go
51
user.go
@ -1,57 +1,6 @@
|
|||||||
package sn
|
package sn
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
Id int `json:"id,string"`
|
Id int `json:"id,string"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Privates UserPrivates `json:"privates"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type UserPrivates struct {
|
|
||||||
Sats int `json:"sats"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type MeResponse struct {
|
|
||||||
Errors []GqlError `json:"errors"`
|
|
||||||
Data struct {
|
|
||||||
Me User `json:"me"`
|
|
||||||
} `json:"data"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Client) Me() (*User, error) {
|
|
||||||
body := GqlBody{
|
|
||||||
Query: `
|
|
||||||
query me {
|
|
||||||
me {
|
|
||||||
id
|
|
||||||
name
|
|
||||||
privates {
|
|
||||||
sats
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}`,
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := c.callApi(body)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
var respBody MeResponse
|
|
||||||
err = json.NewDecoder(resp.Body).Decode(&respBody)
|
|
||||||
if err != nil {
|
|
||||||
err = fmt.Errorf("error decoding me: %w", err)
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = c.checkForErrors(respBody.Errors)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &respBody.Data.Me, nil
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user