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