iArxiuClient
============

0.- Connexions segures (https)

	En el cas que el servidor Core iArxiu es trobi en una connexi segura shaur denregistrar el servidor com a entitat de confiana.
	s necessari obtenir el certificat que el Core iArxiu usar per identificar-se envers el client i afegir-lo a larxiu segur de claus de Windows.

	Hi ha vries possibilitats per enregistrar un certificat en el sistema:
  	 a. Accedint al men contextual de larxiu de certificat i executar lopci per a installar el certificat
	 b. Accedint a lassistent de configuraci dInternet; desprs a la pestanya de connexions; i finalment opci de certificats

1.- URLs del servei
	
	- En el cas d'estar treballant a l'entorn de preproducci d'iArxiu (per defecte en el client d'exemple), haurem d'especificar la seva URL corresponent: https://www.preproduccio.iarxiu.eacat.cat/core/soap

	- En el cas d'estar treballant a l'entorn de producci d'iArxiu, haurem d'especificar la seva URL corresponent: https://www.iarxiu.eacat.cat/core/soap

	Aquesta URL s'especifica en les primeres linies de codi de cada classe que realitzar la transacci a iArxiu:

	    IngestService proxy = new IngestService();
            proxy.Url = "https://www.preproduccio.iarxiu.eacat.cat/core/soap";
            proxy.SetPolicy("CorePolicy");
	    ........

2.- Certificat de proves i claus pbliques

	A la carpeta "ExtrasToInstall" trobareu un certificat de proves per fer les proves d'integraci contra l'entorn de preproducci:
	
		- 20140919_114230_PKCS12_Aplicacio_prova.p12 (password: bIof4Ion)
	
	Tamb us deixem les claus pbliques de l'entorn de preproducci i de producci en un fitxer trustore.jks
	
	

3- iArxiu.NETGuide/iArxiuClientPolicies.config
	
	Shaur de configurar aquest fitxer canviant llias del certificat que us deixem per fer les proves d'integraci amb iArxiu (CN=Aplicaci de prova, OU=Vegeu https://www.catcert.cat/verCDA-1 (c)03, OU=Serveis Pblics de Certificaci CDA-1, OU=Departament de prova, O=Consorci Administraci Oberta de Catalunya, C=ES") pel del vostre ens (certificat ens.p12). Aquest certificat que haureu de tenir instal.lat al magatzem de windows, t un lies que es posa en el segent camp:

	.....
	subjectDN="..."/>
    </SignaturePolicyAssertion>
	.....

	Per calcular l'lies mitjanant el keytool:

		keytool list keystore [NOM ARXIU] storetype pkcs12
		(Demanar el password)

	Aix generar una sortida com aquesta:
	<<cn=cpisr-1 c jokin barbarias berecibar, oid.2.5.4.5=44330313k, oid.2.5.4.12=continuador procediment contractaci, oid.2.5.4.42=jokin, oid.2.5.4.4=barbarias
	berecibar, ou=vegeu https://www.catcert.net/vercpisr-1carrecsafp (c)05, ou=serveis publics de certificacio cpisr-1 amb carrec, ou=rea d'atenci al 
	client, o=sadiel, c=es>>, 22-oct-2008, PrivateKeyEntry, Huella digital de certificado (MD5): 2E:BC:DC:D6:D5:90:AA:F8:00:34:21:7C:36:45:37:BD

	Lalias correspon al text marcat entre << i >>

	Nota: Accents i carcters estranys, la comanda els retorna amb la seva codificaci, s'han de substituir pels seus valors reals. Per exemple, en el resultat anterior, contractaci s'haur de canviar per contractaci.

	Val a dir que tamb est el fitxer iArxiuClientPolicies_PRO.config amb la configuraci per tal d'atacar a l'entorn de iArxiu Producci. Solament canviar el fet de que aqu s que es necessitar el certificat del vostre ens per tal d'accedir.


3.- Classes de test:

- Classes que precissen de la classe IngestService.cs:

	*Operaci d'ingrs offline d'un PIT a iArxiu:
	Ing_Ingressa_Offline_Mets.cs

	*Operaci d'ingrs offline d'un PIT a iArxiu (fitxer zip):
	Ing_Ingressa_Offline_Mets_ZIP.cs
	
	*Operaci d'ingrs d'un PIT de gran tamany (necessita tamb la classe HttpClient.cs):
	Ing_Ingressa_Mets_Upload.cs
	   - En aquesta classe disposem de les lnies de codi segents, les quals fan un bucle per pujar cada fitxer que volguem fer Upload, tots els fitxers amb els quals farem l'Upload s'afegiran a una carpeta (p.e. anomenada en el codi Append)
             amb la qual es far un bucle per poder afegir cada arxiu 
			  --> 
				string[] filePaths = Directory.GetFiles("C:\\Users\\tllebaria\\Desktop\\Appends");
		                int i = 0;
    			        while (i < filePaths.GetLength(0))
			        {
			                httpClient.Parts.Add(new HttpFilePart(filePaths[i].Substring(32), filePaths[i]));
			                i++;
			        }

                              on per cada fitxer el seu nom ha de coincidir amb el nom que rep en la secci "xlin:href=" del mets.xml, per exemple, si disposem d'un mets d'exemple com l'adjuntat en la carpeta docs, amb:
			      <mets:FLocat LOCTYPE="URL" xlin:href="jpeg.jpeg" xmlns....>, el fitxer s'haur de dir jpeg.jpeg per a que el bucle faci l'Upload correctament.

	*Operaci d'ingrs d'un PIT a iArxiu (fitxer zip):
	Ing_Consulta_Estat_Ingres_Offline.cs

  En aquestes classes, si els mets a ingressar disposa de carcters extranys generats, per exemple pel qualsevol aplicaci de
  Microsoft Office, hi ha unes linees de codi per tal de filtrar aquests mets i generar-ne un altre ja filtrat.
  Passem a comentar el codi ja afegit a les classes d'ingres offline:

  //Amb filtre dels carcters
            string inputMets = fileName;
            string outputMets = "C:/filtered.xml";

            UTF8Filter filter = new UTF8Filter();
            string line;

            using (StreamReader input = new StreamReader(inputMets))
            {
                using (StreamWriter output = new StreamWriter(outputMets))
                {
                    while ((line = input.ReadLine()) != null)
                    {
                        line = filter.Execute(line);
                        output.WriteLine(line);
                    }
                }
            }
            TextReader reader = new StreamReader(outputMets);
  //Fi del filtre

  Amb aquest codi aconseguim filtrar el mets original (fileName) i en generem un de nou ja filtrat (C:/filtered.xml), el qual ser el
  que enviarem a ingressar a iArxiu.

  La classe addicional UTF8Filter.cs marcar els carcters conflictius que s'hauran de filtrar, per exemple:

	/* Conflicts */
            translation.Add('\u2013', '-');
            translation.Add('\u2019', '\'');
            translation.Add('\u201C', '"');
            translation.Add('\u201D', '"');
            translation.Add('\u20AC', '');
            translation.Add('\u0040', '@');
            translation.Add('\u0026', '&');

- Classes que precissen de la classe DisseminationService.cs:
	
	*Operaci de recuperaci d'un determinat binari que forma part d'un paquet a iArxiu:
	Dis_Consulta_Binary.cs

	*Operaci de recuperaci d'un determinat binari que forma part d'un paquet a iArxiu i migrar-lo a una altre format de fitxer:
	Dis_Consulta_Migrate_Binary.cs

	*Operaci de recuperaci d'un determinat vocabulari de metadades que forma part d'un paquet a iArxiu:
	Dis_Consulta_MD.cs

	*Operaci de recuperaci d'un paquet a iArxiu. El format en qu es recupera s METS:
	Dis_Consulta_Mets.cs

	*Operaci de cerca de paquets a iArxiu que acompleixen certs criteris de metadades:
	Dis_Consulta_Find.cs

	*Operaci de recuperaci d'un paquet a iArxiu, en format zip:
	Dis_Consulta_Mets_ZIP.cs

	*Operaci de sollicitud de l'informe d'evidncies d'un paquet a iArxiu:
	Dis_Consulta_Evidencia.cs

	*Operaci de sollicitud d'una cpia original del document ingressat a iArxiu:
	Dis_Consulta_CopiaOriginal.cs

- Classes que precissen de la classe AdministrationService.cs:
	
	*Operaci de inserci d'una poltica a iArxiu:
	Adm_Afegeix_Politica.cs

	*Operaci d'actualitzaci d'una determinada poltica que forma part d'iArxiu:
	Adm_Actualitza_Politica.cs

	*Operaci de canvi d'estat d'una determinada poltica que forma part d'iArxiu:
	Adm_CanviaEstat_Politica.cs

	*Operaci de recuperaci d'una poltica a iArxiu:
	Adm_Consulta_Politica.cs

	*Operaci que cerca les execucions d'una determinada poltica a iArxiu:
	Adm_Consulta_ExecucioPolitica.cs

	*Operaci de recuperaci de la llista de poltiques determinada per un ens i un fons:
	Adm_Consulta_LlistaPolitiques.cs

	*Operaci de consulta dels events determinats per un ens i un fons:
	Adm_Consulta_Events.cs

	*Operaci d'esborrat d'una determinada poltica a iArxiu:
	Adm_Esborra_Politica.cs

	*Operaci d'esborrat d'un METS determinat a iArxiu:
	Adm_Esborra_METS.cs

	*Operaci de inserci d'una poltica d'accs a iArxiu:
	Adm_Access_Afegeix_Politica.cs

	*Operaci d'actualitzaci d'una determinada poltica d'accs que forma part d'iArxiu:
	Adm_Access_Actualitza_Politica.cs

	*Operaci de recuperaci d'una poltica d'accs a iArxiu:
	Adm_Access_Consulta_Politica.cs

	*Operaci de recuperaci de la llista de poltiques d'accs determinada per un ens i un fons:
	Adm_Access_Consulta_LlistaPolitiques.cs

	*Operaci d'esborrat d'una determinada poltica d'accs a iArxiu:
	Adm_Access_Esborra_Politica.cs


4.- Interceptor SAML:

Classe: SamlSoapExtension.cs

Cal configurar els valors segents, canviant els valors corresponents pels de cada ens, al client (veure apartat 3.2.4 de la Gua d'Integradors) i que el Consorci AOC us proporcionar a l'inici de la integraci.

 	    NameIDType subjectName = new NameIDType();
            subjectName.Value = "Username"; -> nom d'usuari


            AttributeType organization = CreateAttribute("urn:iarxiu:2.0:names:organizationAlias", "ens_prova_catcert"); -> lies de l'organitzaci
            AttributeType fonds = CreateAttribute("urn:iarxiu:2.0:names:fondsAlias", "fons_prova_catcert"); -> fons
            AttributeType memberOf = CreateAttribute("urn:iarxiu:2.0:names:member-of", "archivists"); -> grup

	    attributeStatement.Items = new object[] { organization, fonds, memberOf };

            assertion.Items = new AttributeStatementType[] { attributeStatement };



5.- Carpeta "docs".

Cont exemples de METS per carregar a iArxiu.

