0
0
mirror of https://github.com/mrusme/neonmodem.git synced 2025-06-30 22:18:39 -04:00

Implemented #1 for Discourse, Lobsters

This commit is contained in:
マリウス 2023-01-10 18:56:02 -05:00
parent dbcf566574
commit 71c86c4a56
No known key found for this signature in database
GPG Key ID: 272ED814BF63261F
6 changed files with 78 additions and 24 deletions

View File

@ -78,6 +78,11 @@ func load() {
} }
defer logger.Sync() defer logger.Sync()
LOG = logger.Sugar() LOG = logger.Sugar()
if CFG.Proxy != "" {
LOG.Debugf("set proxy: %s", CFG.Proxy)
os.Setenv("HTTP_PROXY", CFG.Proxy)
}
} }
func loadSystems(c *ctx.Ctx) []error { func loadSystems(c *ctx.Ctx) []error {
@ -85,6 +90,7 @@ func loadSystems(c *ctx.Ctx) []error {
for _, sysCfg := range c.Config.Systems { for _, sysCfg := range c.Config.Systems {
c.Logger.Debugf("loading system of type %s ...", sysCfg.Type) c.Logger.Debugf("loading system of type %s ...", sysCfg.Type)
sysCfg.Config["proxy"] = CFG.Proxy
sys, err := system.New(sysCfg.Type, &sysCfg.Config, LOG) sys, err := system.New(sysCfg.Type, &sysCfg.Config, LOG)
if err != nil { if err != nil {
c.Logger.Errorf("error loading system: %s", err) c.Logger.Errorf("error loading system: %s", err)

View File

@ -41,6 +41,7 @@ type ThemeItemConfig struct {
type Config struct { type Config struct {
Debug bool Debug bool
Log string Log string
Proxy string
RenderImages bool RenderImages bool
@ -185,6 +186,7 @@ func (cfg *Config) Save() error {
func SetDefaults(cacheDir string) { func SetDefaults(cacheDir string) {
viper.SetDefault("Debug", "false") viper.SetDefault("Debug", "false")
viper.SetDefault("Log", path.Join(cacheDir, "neonmodem.log")) viper.SetDefault("Log", path.Join(cacheDir, "neonmodem.log"))
viper.SetDefault("Proxy", "")
viper.SetDefault("RenderImages", "true") viper.SetDefault("RenderImages", "true")

View File

@ -11,6 +11,7 @@ import (
"net/http" "net/http"
"net/url" "net/url"
"strings" "strings"
"time"
"github.com/hashicorp/go-retryablehttp" "github.com/hashicorp/go-retryablehttp"
) )
@ -74,13 +75,34 @@ type Client struct {
func NewDefaultClientConfig( func NewDefaultClientConfig(
endpoint string, endpoint string,
proxy string,
credentials map[string]string, credentials map[string]string,
logger Logger, logger Logger,
) ClientConfig { ) ClientConfig {
var httpClient *http.Client = nil
var httpTransport *http.Transport = nil
if proxy != "" {
proxyURL, err := url.Parse(proxy)
if err != nil {
logger.Error(err)
} else {
logger.Debugf("setting up http proxy transport: %s\n", proxyURL.String())
httpTransport = &http.Transport{
Proxy: http.ProxyURL(proxyURL),
}
}
}
httpClient = &http.Client{
Transport: httpTransport,
Timeout: time.Second * 10,
}
return ClientConfig{ return ClientConfig{
Endpoint: endpoint, Endpoint: endpoint,
Credentials: credentials, Credentials: credentials,
HTTPClient: http.DefaultClient, HTTPClient: httpClient,
Logger: logger, Logger: logger,
} }
} }

View File

@ -3,7 +3,6 @@ package discourse
import ( import (
"context" "context"
"fmt" "fmt"
"net/http"
"net/url" "net/url"
"strconv" "strconv"
"time" "time"
@ -20,10 +19,11 @@ import (
) )
type System struct { type System struct {
ID int ID int
config map[string]interface{} config map[string]interface{}
logger *zap.SugaredLogger logger *zap.SugaredLogger
client *api.Client client *api.Client
clientCfg api.ClientConfig
} }
func (sys *System) GetID() int { func (sys *System) GetID() int {
@ -113,12 +113,13 @@ func (sys *System) Load() error {
credentials[k] = v.(string) credentials[k] = v.(string)
} }
sys.client = api.NewClient(&api.ClientConfig{ sys.clientCfg = api.NewDefaultClientConfig(
Endpoint: url.(string), url.(string),
Credentials: credentials, sys.config["proxy"].(string),
HTTPClient: http.DefaultClient, credentials,
Logger: sys.logger, sys.logger,
}) )
sys.client = api.NewClient(&sys.clientCfg)
return nil return nil
} }

View File

@ -8,6 +8,7 @@ import (
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"net/url" "net/url"
"time"
"github.com/hashicorp/go-retryablehttp" "github.com/hashicorp/go-retryablehttp"
) )
@ -70,13 +71,34 @@ type Client struct {
func NewDefaultClientConfig( func NewDefaultClientConfig(
endpoint string, endpoint string,
proxy string,
credentials map[string]string, credentials map[string]string,
logger Logger, logger Logger,
) ClientConfig { ) ClientConfig {
var httpClient *http.Client = nil
var httpTransport *http.Transport = nil
if proxy != "" {
proxyURL, err := url.Parse(proxy)
if err != nil {
logger.Error(err)
} else {
logger.Debugf("setting up http proxy transport: %s\n", proxyURL.String())
httpTransport = &http.Transport{
Proxy: http.ProxyURL(proxyURL),
}
}
}
httpClient = &http.Client{
Transport: httpTransport,
Timeout: time.Second * 10,
}
return ClientConfig{ return ClientConfig{
Endpoint: endpoint, Endpoint: endpoint,
Credentials: credentials, Credentials: credentials,
HTTPClient: http.DefaultClient, HTTPClient: httpClient,
Logger: logger, Logger: logger,
} }
} }

View File

@ -3,7 +3,6 @@ package lobsters
import ( import (
"context" "context"
"fmt" "fmt"
"net/http"
"net/url" "net/url"
"time" "time"
@ -19,10 +18,11 @@ import (
) )
type System struct { type System struct {
ID int ID int
config map[string]interface{} config map[string]interface{}
logger *zap.SugaredLogger logger *zap.SugaredLogger
client *api.Client client *api.Client
clientCfg api.ClientConfig
} }
func (sys *System) GetID() int { func (sys *System) GetID() int {
@ -110,12 +110,13 @@ func (sys *System) Load() error {
credentials := make(map[string]string) credentials := make(map[string]string)
sys.client = api.NewClient(&api.ClientConfig{ sys.clientCfg = api.NewDefaultClientConfig(
Endpoint: url.(string), url.(string),
Credentials: credentials, sys.config["proxy"].(string),
HTTPClient: http.DefaultClient, credentials,
Logger: sys.logger, sys.logger,
}) )
sys.client = api.NewClient(&sys.clientCfg)
return nil return nil
} }