Add test for doing geocoding directly from esri
It works at this point.
This commit is contained in:
parent
443a13afcf
commit
63193c5324
2 changed files with 86 additions and 18 deletions
|
|
@ -63,6 +63,23 @@ type OAuthTokenResponse struct {
|
|||
Username string `json:"username"`
|
||||
}
|
||||
|
||||
func GetOAuthForOrg(ctx context.Context, org *models.Organization) (*models.OauthToken, error) {
|
||||
users, err := org.User().All(ctx, db.PGInstance.BobDB)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Failed to query all users for org: %w", err)
|
||||
}
|
||||
for _, user := range users {
|
||||
oauths, err := user.UserOauthTokens(models.SelectWhere.OauthTokens.InvalidatedAt.IsNull()).All(ctx, db.PGInstance.BobDB)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Failed to query all oauth tokens for org: %w", err)
|
||||
}
|
||||
for _, oauth := range oauths {
|
||||
return oauth, nil
|
||||
}
|
||||
}
|
||||
return nil, &NoOAuthForOrg{}
|
||||
}
|
||||
|
||||
func HandleOauthAccessCode(ctx context.Context, user *models.User, code string) error {
|
||||
baseURL := "https://www.arcgis.com/sharing/rest/oauth2/token/"
|
||||
|
||||
|
|
@ -415,23 +432,6 @@ func maybeCreateWebhook(ctx context.Context, client *fieldseeker.FieldSeeker) {
|
|||
}
|
||||
}
|
||||
|
||||
func getOAuthForOrg(ctx context.Context, org *models.Organization) (*models.OauthToken, error) {
|
||||
users, err := org.User().All(ctx, db.PGInstance.BobDB)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Failed to query all users for org: %w", err)
|
||||
}
|
||||
for _, user := range users {
|
||||
oauths, err := user.UserOauthTokens(models.SelectWhere.OauthTokens.InvalidatedAt.IsNull()).All(ctx, db.PGInstance.BobDB)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Failed to query all oauth tokens for org: %w", err)
|
||||
}
|
||||
for _, oauth := range oauths {
|
||||
return oauth, nil
|
||||
}
|
||||
}
|
||||
return nil, &NoOAuthForOrg{}
|
||||
}
|
||||
|
||||
func periodicallyExportFieldseeker(ctx context.Context, org *models.Organization) error {
|
||||
pollTicker := time.NewTicker(1)
|
||||
for {
|
||||
|
|
@ -439,7 +439,7 @@ func periodicallyExportFieldseeker(ctx context.Context, org *models.Organization
|
|||
case <-ctx.Done():
|
||||
return nil
|
||||
case <-pollTicker.C:
|
||||
oauth, err := getOAuthForOrg(ctx, org)
|
||||
oauth, err := GetOAuthForOrg(ctx, org)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Failed to get oauth for org: %w", err)
|
||||
}
|
||||
|
|
|
|||
68
cmd/geocode-test/main.go
Normal file
68
cmd/geocode-test/main.go
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
//"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/Gleipnir-Technology/arcgis-go"
|
||||
//fslayer "github.com/Gleipnir-Technology/arcgis-go/fieldseeker/layer"
|
||||
"github.com/Gleipnir-Technology/nidus-sync/background"
|
||||
"github.com/Gleipnir-Technology/nidus-sync/config"
|
||||
"github.com/Gleipnir-Technology/nidus-sync/db"
|
||||
"github.com/Gleipnir-Technology/nidus-sync/db/models"
|
||||
"github.com/alexedwards/scs/v2"
|
||||
//"github.com/google/uuid"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
var sessionManager *scs.SessionManager
|
||||
|
||||
var BaseURL, ClientID, ClientSecret, Environment, FieldseekerSchemaDirectory, MapboxToken string
|
||||
|
||||
func main() {
|
||||
org_id := flag.Int("org", 0, "The ID of the organization to use")
|
||||
flag.Parse()
|
||||
if org_id == nil || *org_id == 0 {
|
||||
log.Error().Msg("You must specify -org_id")
|
||||
os.Exit(1)
|
||||
}
|
||||
err := config.Parse()
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Failed to parse config")
|
||||
os.Exit(2)
|
||||
}
|
||||
log.Info().Msg("Starting...")
|
||||
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
|
||||
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
|
||||
|
||||
err = db.InitializeDatabase(context.TODO(), config.PGDSN)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Failed to connect to database")
|
||||
os.Exit(3)
|
||||
}
|
||||
|
||||
ctx := context.TODO()
|
||||
org, err := models.FindOrganization(ctx, db.PGInstance.BobDB, int32(*org_id))
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Failed to get org")
|
||||
os.Exit(4)
|
||||
}
|
||||
|
||||
oauth, err := background.GetOAuthForOrg(ctx, org)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Failed to get oauth for org")
|
||||
os.Exit(5)
|
||||
}
|
||||
ar := arcgis.NewArcGIS(
|
||||
arcgis.AuthenticatorOAuth{
|
||||
AccessToken: oauth.AccessToken,
|
||||
AccessTokenExpires: oauth.AccessTokenExpires,
|
||||
RefreshToken: oauth.RefreshToken,
|
||||
RefreshTokenExpires: oauth.RefreshTokenExpires,
|
||||
},
|
||||
)
|
||||
ar.GeocodeFindAddressCandidates("1 Infinite Loop, Cupertino, CA")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue