Twitter bot in Empathy

By using an empty Empathy application as the glue (and using some of the wrapper code around Pheantalk for queues), we can easily create a twitter bot that favourites tweets for a given stream and thusly attacting attention to our own profile. The composer.json looks like this:

{
    name: "newblog",
    description: "A new blog",
    require: {
        mikejw/elib-base: "dev-develop",
        pda/pheanstalk: "dev-master",
        fennb/phirehose: "dev-master",
        abraham/twitteroauth: "dev-master",
        monolog/monolog: "1.13.1"
    },
    minimum-stability: "dev",
    autoload: {
        psr-0: {
            HFSBot: "src/"
        }
    }
}

Read more...

ELib and Twitter

I've been working on a PHP library that can sit alongside Empathy (lightweight MVC) on a purely non-dependant way. The idea being that some of my semi-duplicate code across projects can be re-factored into a central toolkit.Instead of dealing with the boring re-factoring straight away I wanted to work on a simple PHP library for making calls to the Twitter Api (excluding the search API so far).  What I think I've ended up with is potentially a nice utility for accessing any REST-ful API with a clean way of defining the API 'specification', perhaps with little-to-no performance hit.I didn't want to look at any existing offerings of PHP library to make it more enjoyable while I pondered an elegant solution of my own.  In a fairly paradoxical fashion (as is often the case) the main features revealed themselves in reverse order.  I started by building a static array, which could contain the specification of the public API.  By doing so I forced myself to consider (sometimes subconciously) the different logic that might be involved in ensuring each variety of call could be easily accessed with a standard interface.  Eventually it occured to me that a typical call from a web app might look like this:

$t->doCall('url/to/call/'.$id,
  array(  'param1' => $value1, 'param2 => $value2),

                                            

Read more...