added first query to get categories
moved piwigo context to the upper package piwigo
This commit is contained in:
parent
f65698c587
commit
e6e7e46fd1
@ -6,7 +6,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/localFileStructure"
|
"haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/localFileStructure"
|
||||||
|
"haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/piwigo"
|
||||||
"haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/piwigo/authentication"
|
"haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/piwigo/authentication"
|
||||||
|
"haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/piwigo/category"
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -28,7 +30,8 @@ func Run() {
|
|||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
//ScanLocalDirectories(context)
|
//ScanLocalDirectories(context)
|
||||||
//GetAllCategoriesFromServer()
|
|
||||||
|
GetAllCategoriesFromServer(context)
|
||||||
|
|
||||||
//FindMissingAlbums()
|
//FindMissingAlbums()
|
||||||
//CreateMissingAlbums()
|
//CreateMissingAlbums()
|
||||||
@ -48,10 +51,13 @@ func ScanLocalDirectories(context *AppContext) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetAllCategoriesFromServer() {
|
func GetAllCategoriesFromServer(context *AppContext) {
|
||||||
// get all categories from server and flatten structure to match directory names
|
|
||||||
// 2018/2018 album blah
|
err := category.GetAllCategories(context.Piwigo)
|
||||||
logrus.Warnln("Loading all categories from the server (NotImplemented)")
|
if err != nil {
|
||||||
|
os.Exit(3)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func FindMissingAlbums() {
|
func FindMissingAlbums() {
|
||||||
@ -87,7 +93,7 @@ func configureContext() (*AppContext, error) {
|
|||||||
|
|
||||||
context := new(AppContext)
|
context := new(AppContext)
|
||||||
context.LocalRootPath = *imagesRootPath
|
context.LocalRootPath = *imagesRootPath
|
||||||
context.Piwigo = new(authentication.PiwigoContext)
|
context.Piwigo = new(piwigo.PiwigoContext)
|
||||||
context.Piwigo.Url = fmt.Sprintf("%s/ws.php?format=json", *piwigoUrl)
|
context.Piwigo.Url = fmt.Sprintf("%s/ws.php?format=json", *piwigoUrl)
|
||||||
context.Piwigo.Username = *piwigoUser
|
context.Piwigo.Username = *piwigoUser
|
||||||
context.Piwigo.Password = *piwigoPassword
|
context.Piwigo.Password = *piwigoPassword
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import "haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/piwigo/authentication"
|
import (
|
||||||
|
"haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/piwigo"
|
||||||
|
)
|
||||||
|
|
||||||
type AppContext struct {
|
type AppContext struct {
|
||||||
Piwigo *authentication.PiwigoContext
|
Piwigo *piwigo.PiwigoContext
|
||||||
SessionId string
|
SessionId string
|
||||||
LocalRootPath string
|
LocalRootPath string
|
||||||
ChunkSizeBytes int
|
ChunkSizeBytes int
|
||||||
|
@ -5,13 +5,14 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
"haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/piwigo"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/cookiejar"
|
"net/http/cookiejar"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Login(context *PiwigoContext) error {
|
func Login(context *piwigo.PiwigoContext) error {
|
||||||
logrus.Debugf("Logging in to %s using user %s", context.Url, context.Username)
|
logrus.Debugf("Logging in to %s using user %s", context.Url, context.Username)
|
||||||
|
|
||||||
if !strings.HasPrefix(context.Url, "https") {
|
if !strings.HasPrefix(context.Url, "https") {
|
||||||
@ -50,7 +51,7 @@ func Login(context *PiwigoContext) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Logout(context *PiwigoContext) error {
|
func Logout(context *piwigo.PiwigoContext) error {
|
||||||
logrus.Debugf("Logging out from %s", context.Url)
|
logrus.Debugf("Logging out from %s", context.Url)
|
||||||
|
|
||||||
initializeCookieJarIfRequired(context)
|
initializeCookieJarIfRequired(context)
|
||||||
@ -80,7 +81,7 @@ func Logout(context *PiwigoContext) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetStatus(context *PiwigoContext) (*GetStatusResponse, error) {
|
func GetStatus(context *piwigo.PiwigoContext) (*GetStatusResponse, error) {
|
||||||
|
|
||||||
logrus.Debugln("Getting current login state...")
|
logrus.Debugln("Getting current login state...")
|
||||||
|
|
||||||
@ -112,7 +113,7 @@ func GetStatus(context *PiwigoContext) (*GetStatusResponse, error) {
|
|||||||
return &statusResponse, nil
|
return &statusResponse, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func initializeCookieJarIfRequired(context *PiwigoContext) {
|
func initializeCookieJarIfRequired(context *piwigo.PiwigoContext) {
|
||||||
if context.Cookies != nil {
|
if context.Cookies != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,5 @@
|
|||||||
package authentication
|
package authentication
|
||||||
|
|
||||||
import "net/http/cookiejar"
|
|
||||||
|
|
||||||
type PiwigoContext struct {
|
|
||||||
Url string
|
|
||||||
Username string
|
|
||||||
Password string
|
|
||||||
Cookies *cookiejar.Jar
|
|
||||||
}
|
|
||||||
|
|
||||||
type LoginResponse struct {
|
type LoginResponse struct {
|
||||||
Status string `json:"stat"`
|
Status string `json:"stat"`
|
||||||
Result bool `json:"result"`
|
Result bool `json:"result"`
|
||||||
|
48
internal/pkg/piwigo/category/query.go
Normal file
48
internal/pkg/piwigo/category/query.go
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
package category
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
"haefelfinger.net/piwigo/DirectoriesToAlbums/internal/pkg/piwigo"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetAllCategories(context *piwigo.PiwigoContext) error {
|
||||||
|
logrus.Debugln("Starting GetAllCategories")
|
||||||
|
if context.Cookies == nil {
|
||||||
|
return errors.New("Not logged in and no cookies found! Can not get the category list!")
|
||||||
|
}
|
||||||
|
|
||||||
|
formData := url.Values{}
|
||||||
|
formData.Set("method", "pwg.categories.getList")
|
||||||
|
formData.Set("recursive", "true")
|
||||||
|
|
||||||
|
client := http.Client{Jar: context.Cookies}
|
||||||
|
response, err := client.PostForm(context.Url, formData)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
logrus.Errorln("The HTTP request failed with error %s", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var statusResponse getCategoryListResponse
|
||||||
|
if err := json.NewDecoder(response.Body).Decode(&statusResponse); err != nil {
|
||||||
|
logrus.Errorln(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if statusResponse.Status != "ok" {
|
||||||
|
logrus.Errorf("Got state %s while loading categories", statusResponse.Status)
|
||||||
|
return errors.New("Could not load categories")
|
||||||
|
}
|
||||||
|
|
||||||
|
logrus.Infof("Successfully got all categories from %s", context.Url)
|
||||||
|
|
||||||
|
for _, category := range statusResponse.Result.Categories {
|
||||||
|
logrus.Debugf("Category %d - %s", category.ID, category.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
@ -1,7 +1,31 @@
|
|||||||
package category
|
package category
|
||||||
|
|
||||||
type PiwigoCategory struct {
|
type PiwigoCategory struct {
|
||||||
id int
|
Id int
|
||||||
name string
|
Name string
|
||||||
key string
|
Key string
|
||||||
|
}
|
||||||
|
|
||||||
|
type getCategoryListResponse struct {
|
||||||
|
Status string `json:"stat"`
|
||||||
|
Result struct {
|
||||||
|
Categories []struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Comment string `json:"comment"`
|
||||||
|
Permalink interface{} `json:"permalink"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
Uppercats string `json:"uppercats"`
|
||||||
|
GlobalRank string `json:"global_rank"`
|
||||||
|
IDUppercat interface{} `json:"id_uppercat"`
|
||||||
|
NbImages int `json:"nb_images"`
|
||||||
|
TotalNbImages int `json:"total_nb_images"`
|
||||||
|
RepresentativePictureID string `json:"representative_picture_id"`
|
||||||
|
DateLast interface{} `json:"date_last"`
|
||||||
|
MaxDateLast string `json:"max_date_last"`
|
||||||
|
NbCategories int `json:"nb_categories"`
|
||||||
|
URL string `json:"url"`
|
||||||
|
TnURL string `json:"tn_url"`
|
||||||
|
} `json:"categories"`
|
||||||
|
} `json:"result"`
|
||||||
}
|
}
|
||||||
|
10
internal/pkg/piwigo/types.go
Normal file
10
internal/pkg/piwigo/types.go
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package piwigo
|
||||||
|
|
||||||
|
import "net/http/cookiejar"
|
||||||
|
|
||||||
|
type PiwigoContext struct {
|
||||||
|
Url string
|
||||||
|
Username string
|
||||||
|
Password string
|
||||||
|
Cookies *cookiejar.Jar
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user