yavsc/yavscclient/MainClass.cs
Paul Schneider 58839ab69c le theme, WIP les cercles
* input.css: refabrication des feuilles de style : la feuille des
  champs de formulaire.

* CircleMember.cs: un membre de cercle est un nom d'utilisateur
  associé au cercle d'un autre utilisateur.

* ICircle.cs: Définit l'interface d'un cercle:
un cercle est identifié par un entier long,
il a un possesseur.

* Makefile: utilise le fichier de conf généré pour débugger.

* NpgsqlContentProvider.cs: bug fix

* README.md: maj priorités

* AccountController.cs: implémente une méthode de l'API pour ajouter
  un utilisateur au cercle

* links.css: Corrige la couleur du boutton de validation des
  formulaire de classe `ActionLink`

* style.css: refabrication: importe la nouvelle feuille de style des
  champs de formulaires

* style.css: nettoyage du thème sombre

* style.css: nettoyage + section principale (`main`) centré

* FrontOfficeController.cs: Repositionne la route vers le devis à
  do/Estimate

* YavscHelpers.cs: corrige ma ré-écriture des helpers html ActionLink

* App.master: formattage du code source

* AppAdmin.master: synchronisation avec la page maître,
beaucoup de changements dans cette page maître pour les
  administrateurs:
* prend en charge les côtes d'article
* utilise les fontes de caractère de la page pour les lien action
* prend en charge les zones de formulaire masquable.

* NoLogin.master: synchronisation avec la page maître

* Performer.ascx: WIP permet d'ajouter un préstataire à un de ses
  cercles.

* YourEstimates.aspx: corrige un lien cassé

* Yavsc.csproj: mise à niveau Npgsql,
renommage Estimate

* packages.config: mise à niveau de la bibliothèque Npgsql (pilote
  d'accès à la base de donnée)

* CircleBase.cs: un objet cercle basique implémente l'interface d'un
  cercle.

* PerformerProfile.cs: s'assure que le nom d'utilisateur utilisé n'est
  pas vide.

* IIdentified.cs: doc xml

* UserNameBase.cs: l'objet base de type "nom d'utilisateur" implémente
  l'interface générique
d'un identifié, par une chaine de caractère.

* YavscModel.csproj: reference les nouvelles definitions :
* un membre de cercle
* l'interface d'un cercle

* MainClass.cs: format du code

* YavscClient.csproj:
* Estimate.aspx: refabrication
2015-12-15 21:36:33 +01:00

95 lines
2.6 KiB
C#

using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Net.Http.Headers;
using System.Collections.Generic;
using Yavsc.Model.FrontOffice;
using Yavsc.Model.FrontOffice.Catalog;
using System.Net.Http.Formatting;
using Newtonsoft.Json;
namespace Yavsc
{
/// <summary>
/// Main class.
/// </summary>
public class MainClass
{
/// <summary>
/// Gets or sets the service URL.
/// </summary>
/// <value>The service URL.</value>
public static string ServiceUrl{ get; set; }
/// <summary>
/// The entry point of the program, where the program control starts and ends.
/// </summary>
/// <param name="args">The command-line arguments.</param>
public static void Main(string [] args)
{
foreach (string s in args) {
if (Uri.IsWellFormedUriString (s,UriKind.Absolute)) {
// TODO create command usage
ServiceUrl = s;
break;
}
}
GetCatalog ();
}
static HttpClient GetClient()
{
HttpClient client = new HttpClient ();
client.BaseAddress = new Uri (ServiceUrl);
// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Add (
new MediaTypeWithQualityHeaderValue ("application/json"));
return client;
}
static void GetCatalog() {
HttpClient client = GetClient ();
HttpResponseMessage response = client.GetAsync("api/FrontOffice/Catalog").Result; // Blocking call!
if (response.IsSuccessStatusCode)
{
var jsonFormatter = new JsonMediaTypeFormatter();
jsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
jsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
// Parse the response body. Blocking!
Catalog cat = response.Content.ReadAsAsync<Catalog>(new List<MediaTypeFormatter>{jsonFormatter},null).Result;
foreach (var p in cat.Brands)
{
Console.WriteLine("{0}\t{1};\t{2}", p.Name, p.Categories.Length, p.Slogan);
}
}
else
{
Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
}
}
/// <summary>
/// Ups the load.
/// </summary>
/// <param name="fileName">File name.</param>
public void UpLoad(string fileName)
{
using (var client = GetClient())
{
using (var content = new MultipartFormDataContent())
{
var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));//();
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = fileName
};
content.Add(fileContent);
var result = client.PostAsync(ServiceUrl, content).Result;
}
}
}
}
}