Solution Implementation Plan: Exchange Web Services via command-line

So I decided on using Exchange Web Services as a tool to achieve the end goal: placing appointments in user’s calendars. But how will it integrate with the rest of the Nimbus system?

The problem is: I don’t have much experience with the Nimbus system. As a newcomer there is a lot I have to learn about the workings of the system to properly integrate it. What was originally proposed for me as a project was to research a solution, and preferably develop a working proof of concept application. So I concluded that due to the time I have left that it would be best to develop the tool externally to the Nimbus system and leave it to Nimbus to integrate it, or parts of it into the system if they found it was a solution they liked.

The most workable design to deliver such a solution I concluded was a command-line application. It can be called on demand, parameters passed to it, do its job and then quit – no strings attached. Perfect.

In other words, how do we manage something like this?

How do we manage something such as this? New options? New actions?

The problem is stipulating input for the application: command-line parameters essentially are just one big long string of text. There are multiple issues regarding this; the first and foremost is knowing what information we’ll need to collect, the second and almost as important is knowing the approach we’ll take to extract it from the command-line.

The first part of the answer? A command-line arguments parser. There are a few out there that are really prominent (and some might argue are quite bloated) and when I started writing the application I opted for a lightweight approach. A class that took command line arguments, wrote parameters into a dictionary, had methods responsible for checking they were there, handling duplicates, getting appropriate arguments and so on.

The second part of the answer? String.Split – an unpreferable, messy way of doing things which is very prone to error. But necessary in this particular case, with this particular task at hand. With these two methods in mind, I set my mind to getting appointment functionality going using the concept code I tested earlier.

Leave a comment