*setup a Flickr API key to access a Flickr user account so picaxe can work on private images*

        **Return:**
            - ``None``

        **Usage:**

            To authenicate pixace against a Flickr account run the following (note this is interactive so a human needs to be present to respond to prompts!)

            .. code-block:: python

                from picaxe import picaxe
                flickrClient = picaxe(
                    log=log,
                    settings=settings
                )
                flickrClient.authenticate()

def authenticate(self):
        """
        *setup a Flickr API key to access a Flickr user account so picaxe can work on private images*

        **Return:**
            - ``None``

        **Usage:**

            To authenicate pixace against a Flickr account run the following (note this is interactive so a human needs to be present to respond to prompts!)

            .. code-block:: python

                from picaxe import picaxe
                flickrClient = picaxe(
                    log=log,
                    settings=settings
                )
                flickrClient.authenticate()
        """
        self.log.info('starting the ``authenticate`` method')

        if not self.settings["flickr"] or "consumer_key" not in self.settings["flickr"] or "consumer_secret" not in self.settings["flickr"]:
            print "Navigate here <https://www.flickr.com/services/apps/create/apply/> and request a 'non-commerial key'"
            time.sleep(2)
            # open in webbrowser
            webbrowser.open_new_tab(
                "https://www.flickr.com/services/apps/create/apply/")

            consumer_key = raw_input("What is your new API key value? \n  >  ")
            consumer_secret = raw_input(
                "What is your new API secret value? \n  >  ")

        else:
            consumer_key = str(self.settings["flickr"]["consumer_key"])
            consumer_secret = str(self.settings["flickr"]["consumer_secret"])

        auth = OAuth1(consumer_key, consumer_secret)

        try:
            response = requests.get(
                url="http://www.flickr.com/services/oauth/request_token",
                params={
                    "oauth_callback": "http://www.thespacedoctor.co.uk",
                },
                auth=auth
            )
        except requests.exceptions.RequestException:
            print('HTTP Request failed')

        oauthList = response.content.split("&")
        oauth_token = str(oauthList[1].split("=")[1])
        oauth_token_secret = str(oauthList[2].split("=")[1])

        print "Now to authorize picaxe against your personal flickr account"
        print "Navigate to https://www.flickr.com/services/oauth/authorize?perms=write&oauth_token=" + oauth_token + " and click on 'OK, I'LL AUTHOURIZE IT'"
        time.sleep(1)
        webbrowser.open_new_tab(
            "https://www.flickr.com/services/oauth/authorize?perms=write&oauth_token=" + oauth_token)

        oauth_verifier = raw_input(
            "What is the oauth_verifier value in URL you where redirected to? \n  >  ")
        oauth_verifier = str(oauth_verifier.strip())

        auth = OAuth1(consumer_key, consumer_secret,
                      oauth_token, oauth_token_secret)

        try:
            response = requests.get(
                url="https://www.flickr.com/services/oauth/access_token",
                params={
                    "oauth_verifier": oauth_verifier,
                    "oauth_callback": "http://www.thespacedoctor.co.uk"
                },
                auth=auth
            )
        except requests.exceptions.RequestException:
            print('HTTP Request failed')

        oauthList = response.content.split("&")
        oauth_token = oauthList[1].split("=")[1]
        oauth_token_secret = oauthList[2].split("=")[1]
        user_nsid = oauthList[3].split("=")[1]
        username = oauthList[4].split("=")[1]

        if not self.pathToSettingsFile:
            self.pathToSettingsFile = expanduser(
                "~") + "/.config/picaxe/picaxe.yaml"

        stream = file(self.pathToSettingsFile, 'r')
        yamlContent = yaml.load(stream)
        stream.close()

        yamlContent["flickr"] = {}
        yamlContent["flickr"]["consumer_key"] = consumer_key
        yamlContent["flickr"]["consumer_secret"] = consumer_secret
        yamlContent["flickr"]["oauth_token"] = oauth_token
        yamlContent["flickr"]["oauth_token_secret"] = oauth_token_secret
        yamlContent["flickr"]["user_nsid"] = user_nsid
        yamlContent["flickr"]["username"] = username

        stream = file(self.pathToSettingsFile, 'w')
        yaml.dump(yamlContent, stream, default_flow_style=False)
        stream.close()

        self.log.info('completed the ``authenticate`` method')
        return None