For a more in depth and other programming language samples, download the Sample Client Install
C# | ![]() |
---|---|
using FaxWSConsoleApplication.FaxWSReference; using System; using System.IO; using System.Net; namespace FaxWSConsoleApplication { public static class SendFaxBroadcastExClass { const string oauthUrl = "https://login.concord.net/v1/connect/token"; const string faxWSUrl = "https://ws.concordfax.com/fax/v5"; public static void SendFaxBroadcastEx() { string username = "c00XXXXXXXX"; // FB Id. string password = "XXXX"; WSError wsError = null; /////////////////////////////////////////////////////////// ///OAuth 2.0 Authentication Start, ///Comment this block out if you are using username and password authentication // Get an access token from Concord Identity Server string grantType = "password"; string scope = "FaxWS"; string faxWSClientId = "A9F528F9-0000-4B70-0000-078C23030424-ConcordApiFaxWS"; string faxWSClientSecret = ""; AccessTokenRequest accessTokenRequest = null; AccessTokenResponse accessTokenResponse = null; TokenManager tokenManager = new TokenManager(oauthUrl); accessTokenRequest = new AccessTokenRequest( clientId: faxWSClientId, clientSecret: faxWSClientSecret, username: username, password: password, grantType: grantType, scope: scope, redirectUri: null, code: null, refreshToken: null, state: null); ///OAuth 2.0 Authentication End /////////////////////////////////////////////////////////// using(FaxWSAuthWrapper ws = new FaxWSAuthWrapper()) { ws.Url = faxWSUrl; FaxBroadcastJob broadcastJob = new FaxBroadcastJob(); broadcastJob.SenderName = "Sender Name"; broadcastJob.SenderCSID = "SenderCSID"; string recipCSVFIle = "c:\\Recipients.csv"; FileStream inputCSVFile = new FileStream(recipCSVFIle, FileMode.Open, FileAccess.Read); byte[] CSVFile = new Byte[inputCSVFile.Length]; inputCSVFile.Read(CSVFile, 0, (int)inputCSVFile.Length); // Read file inputCSVFile.Close(); FaxJobFile[] faxFiles = new FaxJobFile[1]; faxFiles[0] = new FaxJobFile(); string faxFileName = "c:\\FaxImage.tif"; FileStream inputFile = new FileStream(faxFileName, FileMode.Open, FileAccess.Read); faxFiles[0].FileData = new Byte[inputFile.Length]; faxFiles[0].FileIndex = 1; // first file in the list faxFiles[0].FileTypeId = GetFileType(faxFileName); inputFile.Read(faxFiles[0].FileData, 0, (int)inputFile.Length); // Read file inputFile.Close(); string jobId; try { // Get an access token from Cache OR request one from the Identity Server accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest); if(accessTokenResponse == null) { Console.WriteLine("Failed to get an AccessToken, returned null"); return; } // Check to see if we failed to get an Access token via a Refresh token that has expired or been revoked, if so we need to re-authenticate if(accessTokenResponse.HttpStatusCode == HttpStatusCode.BadRequest && accessTokenResponse.Error == "invalid_grant") { Console.WriteLine("Refresh token expired, attempting to get a new Access Token"); accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest, ignoreCache: true); } if(accessTokenResponse.HttpStatusCode != HttpStatusCode.OK) { Console.WriteLine("AccessToken not valid, Error Code: {0}, Error Description: {1}", accessTokenResponse.Error, accessTokenResponse.ErrorDescription); return; } // User Name and Password authentication //if (ws.SendFaxBroadcastEx(username, password, CSVFile, faxFiles, broadcastJob, out jobId, out wsError)) // OAuth 2.0 Authentication requires that you pass in an access token as part of the Authorization: header // (No Password required) ws.AccessToken = accessTokenResponse.AccessToken; if(!ws.SendFaxBroadcastEx(UserID: username, strPIN: "", CSVFile: CSVFile, FaxJobFiles: faxFiles, JobDetails: broadcastJob, FaxJobId: out jobId, WSError: out wsError)) { Console.WriteLine("SendFaxBroadcastEx Failed"); Console.WriteLine("Error Code: {0} Error Description: {1}", wsError.ErrorCode, wsError.ErrorString); // Check to see if response indicates access token has expired, if so attempt to Refresh or Get New OAuth access token and try method call again if(wsError.ErrorCode == -5059) { Console.WriteLine("AccessToken is not valid"); // Attempt to get a new access token or use a refresh token, if we fail we should stop accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest); if(accessTokenResponse == null) { Console.WriteLine("Failed to get an AccessToken, returned null"); return; } if(accessTokenResponse.HttpStatusCode != HttpStatusCode.OK) { Console.WriteLine("AccessToken not valid, Error Code: {0}, Error Description: {1}", accessTokenResponse.Error, accessTokenResponse.ErrorDescription); return; } } return; } Console.WriteLine("JobId: " + jobId); } catch(Exception ex) { Console.WriteLine("Error while calling SendFaxBroadcastEx : " + ex.Message); } } } /// <summary> /// returns the file type based on file extension /// </summary> /// <param name="ex"></param> /// <returns></returns> public static int GetFileType(string filename) { if(string.IsNullOrEmpty(filename)) throw new ArgumentNullException("filename"); string extension = Path.GetExtension(filename); if(string.IsNullOrEmpty(extension)) throw new ArgumentException("File does not contain an extension", "filename"); switch(extension.ToLower()) { case ".tif": case ".tiff": return 1; case ".doc": case ".docx": return 100; case ".pdf": return 101; case ".rtf": return 102; case ".xls": case ".xlsx": return 103; case ".ppt": case ".pptx": case ".pps": case ".ppsx": return 104; case ".txt": return 105; case ".vsd": case ".vsdx": return 106; case ".gif": return 107; case ".jpg": case ".jpeg": return 108; case ".htm": case ".html": case ".mht": case ".mhtml": return 111; case ".png": return 120; default: throw new ArgumentException("Unrecognized file attachment type: " + extension, "filename"); } } } } |
Visual Basic | ![]() |
---|---|
Imports System.IO Imports System.Net Imports FaxWSVBConsoleApplication.FaxWSReference Namespace FaxWSVBConsoleApplication Friend Class SendFaxBroadcastExClass Public Shared Sub SendFaxBroadcastEx() Dim username As String = "c00XXXXXXXX" ' FB Id. Dim password As String = "XXXX" Dim wsError As WSError = Nothing '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '' OAuth 2.0 Authentication Start, '' Comment this block out if you are using username and password authentication ' Get an access token from Concord Identity Server Dim oauthUrl As String = "https://login.concord.net/v1/connect/token" Dim grantType As String = "password" Dim scope As String = "FaxWS" Dim faxWSClientId As String = "A9F528F9-0000-4B70-0000-078C23030424-ConcordApiFaxWS" Dim faxWSClientSecret As String = "" Dim accessTokenRequest As AccessTokenRequest = Nothing Dim accessTokenResponse As AccessTokenResponse = Nothing Dim tokenManager As TokenManager = New TokenManager(oauthUrl) accessTokenRequest = New AccessTokenRequest(clientId:=faxWSClientId, clientSecret:=faxWSClientSecret, username:=username, password:=password, grantType:=grantType, scope:=scope, redirectUri:=Nothing, code:=Nothing, refreshToken:=Nothing, state:=Nothing) '' OAuth 2.0 Authentication End '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Using ws As FaxWSAuthWrapper = New FaxWSAuthWrapper() Dim broadcastJob As FaxBroadcastJob = New FaxBroadcastJob() broadcastJob.SenderName = "Sender Name" broadcastJob.SenderCSID = "SenderCSID" Dim recipCSVFIle As String = "c:\Recipients.csv" Dim inputCSVFile As FileStream = New FileStream(recipCSVFIle, FileMode.Open, FileAccess.Read) Dim CSVFile As Byte() = New Byte(inputCSVFile.Length - 1) {} inputCSVFile.Read(CSVFile, 0, inputCSVFile.Length) ' Read file inputCSVFile.Close() Dim faxFiles As FaxJobFile() = New FaxJobFile(0) {} faxFiles(0) = New FaxJobFile() Dim faxFileName As String = "c:\FaxImage.tif" Dim inputFile As FileStream = New FileStream(faxFileName, FileMode.Open, FileAccess.Read) faxFiles(0).FileData = New Byte(inputFile.Length - 1) {} faxFiles(0).FileIndex = 1 ' first file in the list faxFiles(0).FileTypeId = GetFileType(faxFileName) inputFile.Read(faxFiles(0).FileData, 0, inputFile.Length) ' Read file inputFile.Close() Dim jobId As String = "" Try ' Get an access token from Cache OR request one from the Identity Server accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest) If accessTokenResponse Is Nothing Then Console.WriteLine("Failed to get an AccessToken, returned null") Return End If ' Check to see if we failed to get an Access token via a Refresh token that has expired or been revoked, if so we need to re-authenticate If accessTokenResponse.HttpStatusCode = HttpStatusCode.BadRequest AndAlso Equals(accessTokenResponse.Error, "invalid_grant") Then Console.WriteLine("Refresh token expired, attempting to get a new Access Token") accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest, ignoreCache:=True) End If If accessTokenResponse.HttpStatusCode <> HttpStatusCode.OK Then Console.WriteLine("AccessToken not valid, Error Code: {0}, Error Description: {1}", accessTokenResponse.Error, accessTokenResponse.ErrorDescription) Return End If ' User Name and Password authentication 'if (ws.SendFaxBroadcastEx(username, password, CSVFile, faxFiles, broadcastJob, out jobId, out wsError)) ' OAuth 2.0 Authentication requires that you pass in an access token as part of the Authorization: header ' (No Password required) ws.AccessToken = accessTokenResponse.AccessToken If Not ws.SendFaxBroadcastEx(UserID:=username, strPIN:="", CSVFile:=CSVFile, FaxJobFiles:=faxFiles, JobDetails:=broadcastJob, FaxJobId:=jobId, WSError:=wsError) Then Console.WriteLine("SendFaxBroadcastEx Failed") Console.WriteLine("Error Code: {0} Error Description: {1}", wsError.ErrorCode, wsError.ErrorString) ' Check to see if response indicates access token has expired, if so attempt to Refresh or Get New OAuth access token and try method call again If wsError.ErrorCode = -5059 Then Console.WriteLine("AccessToken is not valid") ' Attempt to get a new access token or use a refresh token, if we fail we should stop accessTokenResponse = tokenManager.GetAccessToken(accessTokenRequest) If accessTokenResponse Is Nothing Then Console.WriteLine("Failed to get an AccessToken, returned null") Return End If If accessTokenResponse.HttpStatusCode <> HttpStatusCode.OK Then Console.WriteLine("AccessToken not valid, Error Code: {0}, Error Description: {1}", accessTokenResponse.Error, accessTokenResponse.ErrorDescription) Return End If End If Return End If Console.WriteLine("JobId: " & jobId) Catch ex As Exception Console.WriteLine("Error while calling SendFaxBroadcastEx : " & ex.Message) Return End Try End Using End Sub ''' <summary> ''' returns the file type based on file extension ''' </summary> ''' <param name="filename"></param> ''' <returns></returns> Public Shared Function GetFileType(ByVal filename As String) As Integer If String.IsNullOrEmpty(filename) Then Throw New ArgumentNullException("filename") Dim extension As String = Path.GetExtension(filename) If String.IsNullOrEmpty(extension) Then Throw New ArgumentException("File does not contain an extension", "filename") Select Case extension.ToLower() Case ".tif", ".tiff" Return 1 Case ".doc", ".docx" Return 100 Case ".pdf" Return 101 Case ".rtf" Return 102 Case ".xls", ".xlsx" Return 103 Case ".ppt", ".pptx", ".pps", ".ppsx" Return 104 Case ".txt" Return 105 Case ".vsd", ".vsdx" Return 106 Case ".gif" Return 107 Case ".jpg", ".jpeg" Return 108 Case ".htm", ".html", ".mht", ".mhtml" Return 111 Case ".png" Return 120 Case Else Throw New ArgumentException("Unrecognized file attachment type: " & extension, "filename") End Select End Function End Class End Namespace |