Come promesso svariati post fa, eccomi finalmente a
spiegare come si può creare e soprattutto configurare un publisher custom per il
proprio repository di immagini. Questa tecnica ad esempio consente di pubblicare
i file attraverso un web service piuttosto che agganciandosi alle schermate di
.TEXT per farne l'upload direttamente nelle gallery, per chi ha il coraggio di
cimentarsi in tale arte.
Innanzitutto occorre avere ben presente che un Publisher non è un plugin,
ovvero non eredita direttamente dalla classe plugin che è presente negli
assembly di IMHO. Questo significa due cose: non è sufficiente aggiungere
l'assembly in una cartella, e non si configura direttamente dal pannello dei
plugin. Un Publisher è semplicemente una classe di supporto al plugin Engine
Adapter per cui esso è configurato.
Detto questo, creare un Publisher comporta innanzitutto estendere la classe
Elite.IMHO.Engines.Publishers.Publisher. Questa classe ha una serie di
metodi, che devono essere obbligatoriamente estesi, dato che si tratta di una
classe astratta, ma che non devono necessariamente fare qualcosa. Ad esempio,
per un publisher che si connetta ad un WebService, i metodi Open() e
Close() potrebbero anche non servire, perciò andranno semplicemente
lasciati vuoti. Alla fine dei conti, quello che veramente conta è il metodo
SendFile() che riceve in ingresso il path del file da trasferire e deve
restituire l'url presso cui si troverà il file per mezzo del protocollo
http.
Anche il publisher ha un metodo Configure(). Esso viene chiamato dal
runtime di IMHO, quando, dal pannello dei plugin o da quello degli account, si
accede alle impostazioni di un Adapter. Ad esso viene passata una HashTable che
può essere gestita in proprio per immettere e leggere delle coppie nome-valore
che sono i parametri di configurazione.
Infine volendo (e potendo) gestire il progresso dell'upload dei file sarà
necessario invocare il metodo OnTransferProgressUpdate() cui va passato
un TransferProgressUpdateEventArgs che contiene la percentuale di
avanzamento. Tale metodo non fa altro che invocare un evento della classe
publisher cui i runtime si aggancia.
Compilato e testato il Publisher, rimane solo da agganciarlo ad IMHO. Per
farlo è necessario copiare l'assembly nella cartella di installazione di IMHO, e
aggiungere una chiave al file di configurazione imho.exe.config. Il
nome di questa chiave è legato all'adapter che si vuole usare. Nulla vieta
ovviamente di usare lo stesso Publisher per tutti gli adapter. Per .TEXT la
chiave si chiama DotTextFilePublisher. Gli altri adapter hanno una
chiave che si compone sempre del nome dell'engine e della desinenza
"FilePublisher". Nel valore dovrà essere riportato il nome completo
dell'assembly, composto dal nome della classe comprendente il namespace, una
virgola e il nome dell'assembly senza l'estensione, così come è consueto per i
tipi che vengono istanziati per mezzo di Type.GetType().
Chi riuscisse a creare qualche publisher particolare può contattarmi per
valutare l'inclusione del suo assembly nell'installer della prossima versione di
IMHO. Buon lavoro.
powered by IMHO