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