/// <summary> /// Gets an array of cards pending to be printed. /// </summary> /// <param name="printerId"></param> /// <returns></returns> public MabelResponse GetPendingPrints(int printerId) { MabelResponse response = MakeRequest(new MabelRequest(this, "cardHandler.getPendingPrints", new MabelGetPendingPrints(printerId))); return(response); }
/// <summary> /// Sets the token on the last card that a printer requested. /// </summary> /// <param name="token"></param> /// <param name="printerId"></param> /// <returns></returns> public MabelResponse SetToken(String token, int printerId) { MabelResponse response = MakeRequest(new MabelRequest(this, "cardHandler.capturedRFID", new MabelSetTokenParams(token, printerId))); return(response); }
/// <summary> /// Gets the next card enqueued to be printed /// </summary> /// <param name="printerId">The ID of the printer who is requesting the card</param> /// <returns></returns> public MabelCard GetNextJob(int printerId) { MabelRequest request = new MabelRequest(this, "cardHandler.getNextPrintJob", new MabelGetNextJobParams(printerId)); MabelResponse response = MakeRequest(request); if (response.code == 200) { if (response.results == null) { // The API is OK, there's just no cards to print :) return(null); } } else { //Something has gone wrong, best ignore and hope for the best, but exit out this time around // throw an exception probably? throw new Exception("Problem with request to API: " + response.message); } // otherwise... MabelCard card = new MabelCard(); card.card_id = (int)response.results.SelectToken("cardId"); card.member_id = response.results.SelectToken("memberId").ToString(); card.card_front_image_encoded = (string)response.results.SelectToken("imageFront"); card.card_back_image_encoded = (string)response.results.SelectToken("imageBack"); return(card); }
private void UpdateMabelStatus() { MabelAPI mabel_api = new MabelAPI(); MabelResponse resp = mabel_api.MabelSays(); if (manager == null) { return; } if (!resp.isError) { tbMabelStatus.Text = resp.message; tbMabelStatus.BackColor = Color.LightGreen; // get the number of pending prints MabelResponse pendingResp = mabel_api.GetPendingPrints(manager.GetPrinterId()); if (!pendingResp.isError) { tbQueueSize.Text = pendingResp.count.ToString(); } } else { tbMabelStatus.Text = resp.message; tbMabelStatus.BackColor = Color.LightPink; } }
private void btnTestMabelConn_Click(object sender, EventArgs e) { MabelAPI mabel_api = new MabelAPI(); mabel_api.setBaseUrl(tbMabelUrl.Text); try { MabelResponse resp = mabel_api.MabelSays(); tbTestResponse.Text = "MABEL Response: " + resp.message; if (!resp.isError) { testWorks = true; tbTestResponse.BackColor = Color.LightGreen; settingsErrorProvider.SetError(tbTestResponse, ""); } else { if (resp.results != null) { tbTestResponse.Text += resp.results; } testWorks = false; tbTestResponse.BackColor = Color.LightPink; settingsErrorProvider.SetError(tbTestResponse, "Error connecting to MABEL"); } } catch (Exception ex) { testWorks = false; tbTestResponse.Text = ex.Message; tbTestResponse.BackColor = Color.LightPink; settingsErrorProvider.SetError(tbTestResponse, "Error connecting to MABEL"); } }
/// <summary> /// Sets a card's status to printed via the API. /// </summary> /// <param name="printerId"></param> /// <param name="card"></param> /// <returns></returns> public MabelResponse SetCardPrinted(int printerId, MabelCard card) { MabelResponse response = MakeRequest(new MabelRequest(this, "cardHandler.setPrinted", new MabelSetCardPrinterParams(card.card_id) )); return(response); }
public MabelResponse MabelSays() { MabelResponse response = MakeRequest( new MabelRequest( this, "mabelSays", null)); return(response); }
/// <summary> /// Sets a card's RFID via the API (deprecated) /// </summary> /// <param name="printerId"></param> /// <param name="card"></param> /// <param name="rfid"></param> /// <returns></returns> public MabelResponse SetCardRfid(int printerId, MabelCard card, String rfid) { MabelResponse response = MakeRequest( new MabelRequest( this, "cardPrinter.setStatus", new MabelSetCardRfidParams(printerId, card.card_id, rfid) ) ); return(response); }
/// <summary> /// Sets the status of a card via the API /// </summary> /// <param name="printerId"></param> /// <param name="card"></param> /// <param name="status"></param> /// <returns></returns> public MabelResponse SetCardStatus(int printerId, MabelCard card, string status) { MabelResponse response = MakeRequest( new MabelRequest( this, "cardHandler.setStatus", new MabelSetCardStatusParams(card.card_id, status) ) ); return(response); }
/// <summary> /// Checks the version of the API (not implemented) /// </summary> /// <returns></returns> public MabelResponse CheckVersion() { MabelResponse response = MakeRequest( new MabelRequest( this, "cardPrinter.checkVersion", null) ); return(response); }
/// <summary> /// Unregisters a printer /// </summary> /// <param name="printerId">The printer's ID</param> /// <returns></returns> public MabelResponse UnregisterPrinter(int printerId) { MabelResponse response = MakeRequest( new MabelRequest( this, "cardPrinter.unregister", new MabelPrinterUnregisterParams(printerId) ) ); return(response); }
// API Functions // /// <summary> /// Registers the printer /// </summary> /// <param name="printerId">The printer ID to register</param> /// <param name="printerName">The "name" of the printer (as in windows)</param> /// <param name="printerLocation">The location of the printer</param> /// <param name="printerModel">The model of the printer</param> /// <returns></returns> public MabelResponse RegisterPrinter(int printerId, string printerName, string printerLocation, PrinterInfo info) { MabelResponse response = MakeRequest( new MabelRequest( this, "cardPrinter.register", new MabelPrinterRegisterParams(printerId, printerName, printerLocation, new MabelPrinterInfo(info)) ) ); return(response); }
/// <summary> /// Sets the status of a printer. /// </summary> /// <param name="printerId"></param> /// <param name="status"></param> /// <returns></returns> public MabelResponse SetPrinterStatus(int printerId, string status) { MabelResponse response = MakeRequest(new MabelRequest( this, "cardPrinter.printerSetStatus", new MabelPrinterSetStatus(printerId, status) ) ); return(response); }
public bool Unregister() { MabelResponse resp = mabel_api.UnregisterPrinter(printer_id); _registered = false; if (resp.isError) { OnUnregisterError(new PrinterEventArgs(null, "Unregister failed " + resp.message, _printerInfo)); return(false); } else { OnUnregistered(new PrinterEventArgs(null, "Unregistered Successfully", _printerInfo)); _state = PrinterState.UNREGISTERED; return(true); } }
/// <summary> /// Makess a request to the Mabel API, using the specified request object /// </summary> /// <param name="mabelRequest">A build MabelRequest object with the desired params for the function call.</param> /// <returns></returns> private MabelResponse MakeRequest( MabelRequest mabelRequest) { ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true; String url = mabelRequest.buildURL(); WebRequest request = WebRequest.Create(url); request.Timeout = 3000; //request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested; //request.Credentials = new NetworkCredential(Properties.Settings.Default.Username, Properties.Settings.Default.Password, Properties.Settings.Default.Domain); //request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; // Get the response. lastRequest = mabelRequest; MabelResponse mabelResponse = new MabelResponse(); HttpWebResponse response = null; try { response = (HttpWebResponse)request.GetResponse(); lastResponse = mabelResponse; } catch (Exception ex) { mabelResponse.isError = true; mabelResponse.message = "HTTP EXCEPTION:" + ex.Message; // this may be overridden later... ? } if (response != null) { Stream dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. string responseFromServer = reader.ReadToEnd(); // Display the content. // Clean up the streams and the response. reader.Close(); response.Close(); mabelResponse._raw = responseFromServer; } else { // if there's no content, then the HTTP exception is as good as we're going to get OnDebug(new MabelEventArgs(url, mabelRequest, mabelResponse)); return mabelResponse; } // Get the stream containing content returned by the server. JObject o; try { o = JObject.Parse(mabelResponse._raw); } catch (Exception ex) { mabelResponse.isError = true; mabelResponse.message = "JSON Exception: " + ex.Message; OnDebug(new MabelEventArgs(url, mabelRequest, mabelResponse)); return mabelResponse; } try { mabelResponse.code = (int)o["meta"]["status"]; mabelResponse.message = (string)o["meta"]["msg"]; mabelResponse.count = (int)o["meta"]["count"]; } catch (Exception ex2) { mabelResponse.isError = true; mabelResponse.message = "JSON Exception: meta fields: " + ex2.Message; OnDebug(new MabelEventArgs(url, mabelRequest, mabelResponse)); return mabelResponse; } if (mabelResponse.code != 200) { // it's an error, return it now, don't bother looking for results mabelResponse.isError = true; } else { mabelResponse.isError = false; } // otherwise, hand back the results :) if (o["result"].Type != JTokenType.Null) { mabelResponse.results = o["result"]; } else { mabelResponse.results = null; } OnDebug(new MabelEventArgs(url, mabelRequest, mabelResponse)); return mabelResponse; }
/// <summary> /// Makess a request to the Mabel API, using the specified request object /// </summary> /// <param name="mabelRequest">A build MabelRequest object with the desired params for the function call.</param> /// <returns></returns> private MabelResponse MakeRequest(MabelRequest mabelRequest) { ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true; String url = mabelRequest.buildURL(); WebRequest request = WebRequest.Create(url); request.Timeout = 3000; //request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested; //request.Credentials = new NetworkCredential(Properties.Settings.Default.Username, Properties.Settings.Default.Password, Properties.Settings.Default.Domain); //request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; // Get the response. lastRequest = mabelRequest; MabelResponse mabelResponse = new MabelResponse(); HttpWebResponse response = null; try { response = (HttpWebResponse)request.GetResponse(); lastResponse = mabelResponse; } catch (Exception ex) { mabelResponse.isError = true; mabelResponse.message = "HTTP EXCEPTION:" + ex.Message; // this may be overridden later... ? } if (response != null) { Stream dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. string responseFromServer = reader.ReadToEnd(); // Display the content. // Clean up the streams and the response. reader.Close(); response.Close(); mabelResponse._raw = responseFromServer; } else { // if there's no content, then the HTTP exception is as good as we're going to get OnDebug(new MabelEventArgs(url, mabelRequest, mabelResponse)); return(mabelResponse); } // Get the stream containing content returned by the server. JObject o; try { o = JObject.Parse(mabelResponse._raw); } catch (Exception ex) { mabelResponse.isError = true; mabelResponse.message = "JSON Exception: " + ex.Message; OnDebug(new MabelEventArgs(url, mabelRequest, mabelResponse)); return(mabelResponse); } try { mabelResponse.code = (int)o["meta"]["status"]; mabelResponse.message = (string)o["meta"]["msg"]; mabelResponse.count = (int)o["meta"]["count"]; } catch (Exception ex2) { mabelResponse.isError = true; mabelResponse.message = "JSON Exception: meta fields: " + ex2.Message; OnDebug(new MabelEventArgs(url, mabelRequest, mabelResponse)); return(mabelResponse); } if (mabelResponse.code != 200) { // it's an error, return it now, don't bother looking for results mabelResponse.isError = true; OnError(new MabelEventArgs(url, mabelRequest, mabelResponse)); } else { mabelResponse.isError = false; } // otherwise, hand back the results :) if (o["result"].Type != JTokenType.Null) { mabelResponse.results = o["result"]; } else { mabelResponse.results = null; } OnDebug(new MabelEventArgs(url, mabelRequest, mabelResponse)); return(mabelResponse); }
public MabelEventArgs(String URL, MabelRequest request, MabelResponse response) { this.URL = URL; this.request = request; this.response = response; }