Git Product home page Git Product logo

idonethis-perl's Introduction

WebService::Idonethis - Perl wrapper around idonethis.com

Using this module

This implements a simple Perl front-end for the http://idonethis.com/ website.

See http://privacygeek.blogspot.com.au/2013/02/reimplementing-idonethis-memory-service.html for an article on why this is useful and how to use its features.

This code can be found released on the CPAN as WebService::Idonethis. The latest stable release can be installed with:

cpanm WebService::Idonethis

Developing this module

If you want to help develop this module, then feel free to clone the repo here. Contributions are greatly appreciated!

This project uses Dist::Zilla to take care of all boring parts of development. To install Dist::Zilla, use your favourite CPAN installer:

cpanm Dist::Zilla

Then:

dzil authordeps | cpanm

For testing, use dzil test. If you want a traditional-looking module directory in which to poke around, use dzil build.

idonethis-perl's People

Contributors

norbu09 avatar pjf avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

idonethis-perl's Issues

Skip our freshness ping

Currently we ping the servers on object creation to see if our session is still fresh. Ideally we could skip this, and try to do a login the first time we call a method that gets back an authorisation error.

This would double the speed of most of the command line scripts.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Allow fuzzy/natural-language dates

Today I wanted to check what I had done "last Friday." So then I was like, oh wait, what was last Friday's date? Umm...oh, March 8. You know, why can't I just use -d "last Friday"? pfenwick is smart. I bet he can add this in like 10 minutes. Let us open a self-referencing GitHub issue.

Logins aren't cached.

It would be awesome if logins were cached, so the idone command-line tool wouldn't need to relogin every time.

Weird things can happen with email addresses

Apparently one can login using an email address instead of a username. Our code is not expecting this. Either:

  1. Detect attempts to login by email address and die noisily (asking for username).
  2. Fix the code to be email address friendly.

Implement basic search interface or range querying

I use iDoneThis to keep track of what I did last on the various projects I juggle. Sometimes I last juggled particular projects on days before yesterday and don't remember exactly which. I'd love a way to enter a range of dates and just see all the dones dumped from that timeframe. In fact, when I think about it now, what I'd love is this date-range functionality because then I could just grep after what I'm looking for. If I need better search, I can open a web browser and do it on iDoneThis. But normally I don't need really good search, just something to grep.

It'd be a plus if when in date-range mode every task could be prefixed with the datestamp.

Theoretical invocation and output:

`idone -r -s "four days ago" -e "today"

2013-03-18: Did some awesome stuff.
....
2013-03-22: Posted new issue to pfenwick/idonethis-perl.`

There is probably a neater way to format the command. Maybe just -r "four days ago,today". But I think the underlying meaning of my request is conveyed :)

idone -[yd] should list tasks, not wait for input

So often when I type idone -y or idone -d, I actually just want to list out tasks from a previous day. Naturally, this puts me into input mode automatically, since that is the default behavior.

Is it possible to set default action per item? Mind that I do want to go into entry mode with just idone, but when specifying a date switch it'd be nice to list by default unless I explicitly specified -c.

It would be extra-cool if it could detect if I entered a string at the end of my incantation containing -d or -y and sent a single entry to iDoneThis instead of listing. However, that deviance in behavior might not be intuitive, so it's just a hope.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/1239398-idone-yd-should-list-tasks-not-wait-for-input?utm_campaign=plugin&utm_content=tracker%2F301503&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F301503&utm_medium=issues&utm_source=github).

Add team support

(From a convo with Tony)

Teams I've never used, are they a paid feature? If you're on a team, do you also have a personal calendar?

Both this and GH #11 are actually intertwined somewhat. From memory, we need the username to figure out how to path to our API endpoint. However, if we assume that we get redirected to /cal/ on a successful login, then we can use that to figure out where our end-point should be. It just needs to be cached, and we already have a cache directory for things like that. :)

Dies when XDG cache directory not present.

Currently the code always wants a cache, and it always wants it in the XDG approved location. If that can't be created (because a parent directory doesn't exist), then we die on object creation:

Can't mkdir('/home/pjf/.cache/webservice-idonethis-perl'): No such file or directory at /home/pjf/perl5/lib/perl5/WebService/Idonethis.pm line 55

Currently the only workaround for this is to make the directory the WS::Idonethis is expecting (eg: mkdir ~/.cache), however it would be nice to allow for cacheless running (which will always require a login) or for the cache directory to be specified elsewhere (possibly via an object, so we can use things like CHI).

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/1239414-dies-when-xdg-cache-directory-not-present?utm_campaign=plugin&utm_content=tracker%2F301503&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F301503&utm_medium=issues&utm_source=github).

Unicode input support

v0.10 produces warnings when printing unicode, and then prints it correctly anyway.

Dev (which will be v0.11) doesn't produce warnings.

No testing has been done for unicode input (either via stdin or @argv).

utf8::all may be our best solution here, although it would add a few dependencies.

Make range-querying easier when end date is today (single-argument -r)

Would be great to be able to just do idone -r -7d and have it mean idone -r '-7d,0d'. Tasks within the last week.

For extra extra credit, make that the default behavior of the -r switch.

In summary, range-querying goes from one to three modes of behavior:

Two arguments: Same as now.
One argument: Assume range is between first -r argument and now.
Zero arguments: Assume range is between one week ago and now.

Accept configuration via environment variable.

This would open up new possibilities for integrating the Perl app into other tools that shelled out. e.g. a web app. (There'd obviously be other issues with giving people your iDoneThis password, but I'm thinking broadly here.)

(Original request was also to include command-line switches, this is now implemented as the -f switch)


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.