1
0
Fork 0

Implemented connect check, fixed smaller issues

This commit is contained in:
マリウス 2023-01-06 23:48:21 -05:00
parent df13d05bd9
commit 32b1ffe1f0
No known key found for this signature in database
GPG Key ID: 272ED814BF63261F
9 changed files with 60 additions and 6 deletions

View File

@ -55,7 +55,7 @@ func (a *Aggregator) ListPosts() ([]post.Post, []error) {
var posts []post.Post var posts []post.Post
// TODO: Clean up implementation // TODO: Clean up implementation
if os.Getenv("neonmodem_TEST") == "true" { if os.Getenv("NEONMODEM_TEST") == "true" {
jsonPosts, err := os.ReadFile("posts.db") jsonPosts, err := os.ReadFile("posts.db")
if err == nil { if err == nil {
err = json.Unmarshal(jsonPosts, &posts) err = json.Unmarshal(jsonPosts, &posts)
@ -86,9 +86,11 @@ func (a *Aggregator) ListPosts() ([]post.Post, []error) {
}) })
// TODO: Clean up implementation // TODO: Clean up implementation
jsonPosts, err := json.Marshal(posts) if os.Getenv("NEONMODEM_TEST") == "true" {
if err == nil { jsonPosts, err := json.Marshal(posts)
os.WriteFile("posts.db", jsonPosts, 0600) if err == nil {
os.WriteFile("posts.db", jsonPosts, 0600)
}
} }
return posts, errs return posts, errs

View File

@ -2,7 +2,9 @@ package cmd
import ( import (
"fmt" "fmt"
"net/url"
"os" "os"
"strings"
"github.com/mrusme/neonmodem/config" "github.com/mrusme/neonmodem/config"
"github.com/mrusme/neonmodem/system" "github.com/mrusme/neonmodem/system"
@ -25,6 +27,7 @@ func connectBase() *cobra.Command {
Long: "Add a new connection to a BBS.", Long: "Add a new connection to a BBS.",
PreRun: func(cmd *cobra.Command, args []string) { PreRun: func(cmd *cobra.Command, args []string) {
sysType, _ := cmd.Flags().GetString("type") sysType, _ := cmd.Flags().GetString("type")
sysType = strings.ToLower(sysType)
if sysType != "hackernews" { if sysType != "hackernews" {
cmd.MarkFlagRequired("url") cmd.MarkFlagRequired("url")
} }
@ -36,6 +39,36 @@ func connectBase() *cobra.Command {
LOG.Panicln(err) LOG.Panicln(err)
} }
sysURLparsed, err := url.Parse(sysURL)
if err != nil {
fmt.Print(err)
os.Exit(1)
}
if caps := sys.GetCapabilities(); !caps.IsCapableOf("connect:multiple") {
for _, existingSys := range CFG.Systems {
if existingSys.Type == sysType {
existingSysURL, ok := existingSys.Config["url"]
if !ok {
fmt.Println("Cannot add multiple instances of this system!")
os.Exit(1)
}
existingSysURLparsed, err := url.Parse(existingSysURL.(string))
if err != nil {
fmt.Print(err)
os.Exit(1)
}
//&& existingSysURLparsed.RequestURI() == sysURLparsed.RequestURI()
if existingSysURLparsed.Host == sysURLparsed.Host {
fmt.Println("Cannot add multiple instances of this system!")
os.Exit(1)
}
}
}
}
if err := sys.Connect(sysURL); err != nil { if err := sys.Connect(sysURL); err != nil {
LOG.Panicln(err) LOG.Panicln(err)
} }

View File

@ -131,7 +131,7 @@ func (c *Client) NewRequest(
return nil, err return nil, err
} }
req.Header.Add("User-Agent", "neonmodem") req.Header.Add("User-Agent", "Neon Modem Overdrive")
req.Header.Add("Accept", "application/json") req.Header.Add("Accept", "application/json")
req.Header.Add("Content-Type", "application/json") req.Header.Add("Content-Type", "application/json")
req.Header.Add("User-Api-Client-Id", c.credentials["client_id"]) req.Header.Add("User-Api-Client-Id", c.credentials["client_id"])

View File

@ -50,6 +50,10 @@ func (sys *System) GetCapabilities() adapter.Capabilities {
var caps []adapter.Capability var caps []adapter.Capability
caps = append(caps, caps = append(caps,
adapter.Capability{
ID: "connect:multiple",
Name: "Connect Multiple",
},
adapter.Capability{ adapter.Capability{
ID: "list:forums", ID: "list:forums",
Name: "List Forums", Name: "List Forums",

View File

@ -9,6 +9,7 @@ func (sys *System) Connect(sysURL string) error {
if sys.config == nil { if sys.config == nil {
sys.config = make(map[string]interface{}) sys.config = make(map[string]interface{})
} }
sys.config["url"] = "https://news.ycombinator.com"
sys.config["credentials"] = credentials sys.config["credentials"] = credentials
return nil return nil

View File

@ -48,6 +48,11 @@ func (sys *System) GetCapabilities() adapter.Capabilities {
var caps []adapter.Capability var caps []adapter.Capability
caps = append(caps, caps = append(caps,
// TODO: Requires accounts
// adapter.Capability{
// ID: "connect:multiple",
// Name: "Connect Multiple",
// },
adapter.Capability{ adapter.Capability{
ID: "list:forums", ID: "list:forums",
Name: "List Forums", Name: "List Forums",

View File

@ -47,6 +47,10 @@ func (sys *System) GetCapabilities() adapter.Capabilities {
var caps []adapter.Capability var caps []adapter.Capability
caps = append(caps, caps = append(caps,
adapter.Capability{
ID: "connect:multiple",
Name: "Connect Multiple",
},
adapter.Capability{ adapter.Capability{
ID: "list:forums", ID: "list:forums",
Name: "List Forums", Name: "List Forums",

View File

@ -128,7 +128,7 @@ func (c *Client) NewRequest(
return nil, err return nil, err
} }
req.Header.Add("User-Agent", "neonmodem") req.Header.Add("User-Agent", "Neon Modem Overdrive")
req.Header.Add("Accept", "application/json") req.Header.Add("Accept", "application/json")
req.Header.Add("Content-Type", "application/json") req.Header.Add("Content-Type", "application/json")

View File

@ -49,6 +49,11 @@ func (sys *System) GetCapabilities() adapter.Capabilities {
var caps []adapter.Capability var caps []adapter.Capability
caps = append(caps, caps = append(caps,
// TODO: Requires accounts
// adapter.Capability{
// ID: "connect:multiple",
// Name: "Connect Multiple",
// },
adapter.Capability{ adapter.Capability{
ID: "list:forums", ID: "list:forums",
Name: "List Forums", Name: "List Forums",