Pachube

Dependents:   Pachube_TestProgram _DearMrJeffMourich StarBoardOrangeExpansion2 Toragi_2011_04_Pachube ... more

Committer:
shintamainjp
Date:
Thu Sep 30 22:18:37 2010 +0000
Revision:
0:19accbe9a05e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:19accbe9a05e 1 /**
shintamainjp 0:19accbe9a05e 2 * Pachube API interface driver. (Version 0.0.1)
shintamainjp 0:19accbe9a05e 3 *
shintamainjp 0:19accbe9a05e 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 0:19accbe9a05e 5 * http://shinta.main.jp/
shintamainjp 0:19accbe9a05e 6 */
shintamainjp 0:19accbe9a05e 7
shintamainjp 0:19accbe9a05e 8 #ifndef _PACHUBE_H_
shintamainjp 0:19accbe9a05e 9 #define _PACHUBE_H_
shintamainjp 0:19accbe9a05e 10
shintamainjp 0:19accbe9a05e 11 #include <string>
shintamainjp 0:19accbe9a05e 12
shintamainjp 0:19accbe9a05e 13 class Pachube {
shintamainjp 0:19accbe9a05e 14 public:
shintamainjp 0:19accbe9a05e 15
shintamainjp 0:19accbe9a05e 16 explicit Pachube(std::string APIKEY);
shintamainjp 0:19accbe9a05e 17
shintamainjp 0:19accbe9a05e 18 virtual ~Pachube();
shintamainjp 0:19accbe9a05e 19
shintamainjp 0:19accbe9a05e 20 /*
shintamainjp 0:19accbe9a05e 21 * =================================================================
shintamainjp 0:19accbe9a05e 22 * Environments (feeds)
shintamainjp 0:19accbe9a05e 23 * =================================================================
shintamainjp 0:19accbe9a05e 24 */
shintamainjp 0:19accbe9a05e 25
shintamainjp 0:19accbe9a05e 26 /**
shintamainjp 0:19accbe9a05e 27 * List all available feeds: GET /v2/feeds
shintamainjp 0:19accbe9a05e 28 *
shintamainjp 0:19accbe9a05e 29 * @param page Integer indicating which page of results you are requesting.
shintamainjp 0:19accbe9a05e 30 * @param per_page Integer defining how many results to return per page (1 to 1000).
shintamainjp 0:19accbe9a05e 31 * @param content String parameter ('full' or 'summary') describing whether we want full or summary results. Full results means all datastream values are returned, summary just returns the environment meta data for each feed.
shintamainjp 0:19accbe9a05e 32 * @param q Full text search parameter. Should return any feeds matching this string.
shintamainjp 0:19accbe9a05e 33 * @param tag Returns feeds containing datastreams tagged with the search query.
shintamainjp 0:19accbe9a05e 34 * @param user Returns feeds created by the user specified.
shintamainjp 0:19accbe9a05e 35 * @param units Returns feeds containing datastreams with units specified by the search query.
shintamainjp 0:19accbe9a05e 36 * @param status Possible values ('live', 'frozen', or 'all'). Whether to search for only live feeds, only frozen feeds, or all feeds. Defaults to all.
shintamainjp 0:19accbe9a05e 37 * @param order Order of returned feeds. Possible values ('created_at', 'retrieved_at', or 'relevance').
shintamainjp 0:19accbe9a05e 38 */
shintamainjp 0:19accbe9a05e 39 virtual int listAllAvailableFeeds(
shintamainjp 0:19accbe9a05e 40 int page,
shintamainjp 0:19accbe9a05e 41 int per_page,
shintamainjp 0:19accbe9a05e 42 std::string content,
shintamainjp 0:19accbe9a05e 43 std::string q,
shintamainjp 0:19accbe9a05e 44 std::string tag,
shintamainjp 0:19accbe9a05e 45 std::string user,
shintamainjp 0:19accbe9a05e 46 std::string units,
shintamainjp 0:19accbe9a05e 47 std::string status,
shintamainjp 0:19accbe9a05e 48 std::string order,
shintamainjp 0:19accbe9a05e 49 std::string &datatext) = 0;
shintamainjp 0:19accbe9a05e 50
shintamainjp 0:19accbe9a05e 51 /**
shintamainjp 0:19accbe9a05e 52 * Create new feed: POST /v2/feeds
shintamainjp 0:19accbe9a05e 53 */
shintamainjp 0:19accbe9a05e 54 virtual int createNewFeed(void) = 0;
shintamainjp 0:19accbe9a05e 55
shintamainjp 0:19accbe9a05e 56 /**
shintamainjp 0:19accbe9a05e 57 * Read feed: GET /v2/feeds/<feed_id>
shintamainjp 0:19accbe9a05e 58 */
shintamainjp 0:19accbe9a05e 59 virtual int readFeed(int feed_id, std::string &datatext) = 0;
shintamainjp 0:19accbe9a05e 60
shintamainjp 0:19accbe9a05e 61 /**
shintamainjp 0:19accbe9a05e 62 * Update feed: PUT /v2/feeds/<feed_id>
shintamainjp 0:19accbe9a05e 63 */
shintamainjp 0:19accbe9a05e 64 virtual int updateFeed(int feed_id) = 0;
shintamainjp 0:19accbe9a05e 65
shintamainjp 0:19accbe9a05e 66 /**
shintamainjp 0:19accbe9a05e 67 * Delete feed: DELETE /v2/feeds/<feed_id>
shintamainjp 0:19accbe9a05e 68 */
shintamainjp 0:19accbe9a05e 69 virtual int deleteFeed(int feed_id) = 0;
shintamainjp 0:19accbe9a05e 70
shintamainjp 0:19accbe9a05e 71 /*
shintamainjp 0:19accbe9a05e 72 * =================================================================
shintamainjp 0:19accbe9a05e 73 * Datastreams
shintamainjp 0:19accbe9a05e 74 * =================================================================
shintamainjp 0:19accbe9a05e 75 */
shintamainjp 0:19accbe9a05e 76
shintamainjp 0:19accbe9a05e 77 /**
shintamainjp 0:19accbe9a05e 78 * Create new datastream: POST /v2/feeds/<feed_id>/datastreams
shintamainjp 0:19accbe9a05e 79 *
shintamainjp 0:19accbe9a05e 80 * @param feed_id Feed ID.
shintamainjp 0:19accbe9a05e 81 * @param stream_id Stream ID text.
shintamainjp 0:19accbe9a05e 82 * @param value value.
shintamainjp 0:19accbe9a05e 83 *
shintamainjp 0:19accbe9a05e 84 * @return Return code from a web server.
shintamainjp 0:19accbe9a05e 85 */
shintamainjp 0:19accbe9a05e 86 virtual int createNewDataStream(int feed_id, std::string stream_id, std::string value) = 0;
shintamainjp 0:19accbe9a05e 87
shintamainjp 0:19accbe9a05e 88 /**
shintamainjp 0:19accbe9a05e 89 * Read datastream - GET /v2/feeds/<feed_id>/datastreams/<datastream_id>
shintamainjp 0:19accbe9a05e 90 *
shintamainjp 0:19accbe9a05e 91 * @param feed_id Feed ID.
shintamainjp 0:19accbe9a05e 92 * @param stream_id Stream ID text.
shintamainjp 0:19accbe9a05e 93 *
shintamainjp 0:19accbe9a05e 94 * @return Return code from a web server.
shintamainjp 0:19accbe9a05e 95 */
shintamainjp 0:19accbe9a05e 96 virtual int readDataStream(int feed_id, std::string stream_id, std::string &datatext) = 0;
shintamainjp 0:19accbe9a05e 97
shintamainjp 0:19accbe9a05e 98 /**
shintamainjp 0:19accbe9a05e 99 * Update datastream: PUT /v2/feeds/<feed_id>/datastreams/<datastream_id>
shintamainjp 0:19accbe9a05e 100 *
shintamainjp 0:19accbe9a05e 101 * @param feed_id Feed ID.
shintamainjp 0:19accbe9a05e 102 * @param stream_id Stream ID text.
shintamainjp 0:19accbe9a05e 103 * @param value value.
shintamainjp 0:19accbe9a05e 104 *
shintamainjp 0:19accbe9a05e 105 * @return Return code from a web server.
shintamainjp 0:19accbe9a05e 106 */
shintamainjp 0:19accbe9a05e 107 virtual int updateDataStream(int feed_id, std::string stream_id, std::string value) = 0;
shintamainjp 0:19accbe9a05e 108
shintamainjp 0:19accbe9a05e 109 /**
shintamainjp 0:19accbe9a05e 110 * Delete datastream: DELETE /v2/feeds/<feed_id>/datastreams/<datastream_id>
shintamainjp 0:19accbe9a05e 111 *
shintamainjp 0:19accbe9a05e 112 * @param feed_id Feed ID.
shintamainjp 0:19accbe9a05e 113 * @param stream_id Stream ID text.
shintamainjp 0:19accbe9a05e 114 *
shintamainjp 0:19accbe9a05e 115 * @return Return code from a web server.
shintamainjp 0:19accbe9a05e 116 */
shintamainjp 0:19accbe9a05e 117 virtual int deleteDataStream(int feed_id, std::string stream_id) = 0;
shintamainjp 0:19accbe9a05e 118
shintamainjp 0:19accbe9a05e 119 protected:
shintamainjp 0:19accbe9a05e 120 const std::string APIKEY;
shintamainjp 0:19accbe9a05e 121 static const std::string REQUESTHEADER;
shintamainjp 0:19accbe9a05e 122 static const std::string URLBASE_V2;
shintamainjp 0:19accbe9a05e 123 };
shintamainjp 0:19accbe9a05e 124
shintamainjp 0:19accbe9a05e 125 #endif
shintamainjp 0:19accbe9a05e 126
shintamainjp 0:19accbe9a05e 127 /*
shintamainjp 0:19accbe9a05e 128 Pachube v2 API Documentation
shintamainjp 0:19accbe9a05e 129 http://api.pachube.com/v2/
shintamainjp 0:19accbe9a05e 130
shintamainjp 0:19accbe9a05e 131 # Environments (feeds)
shintamainjp 0:19accbe9a05e 132
shintamainjp 0:19accbe9a05e 133 o * List all available feeds: GET /v2/feeds
shintamainjp 0:19accbe9a05e 134 o * Create new feed: POST /v2/feeds
shintamainjp 0:19accbe9a05e 135 o * Read feed: GET /v2/feeds/<feed_id>
shintamainjp 0:19accbe9a05e 136 o * Update feed: PUT /v2/feeds/<feed_id>
shintamainjp 0:19accbe9a05e 137 o * Delete feed: DELETE /v2/feeds/<feed_id>
shintamainjp 0:19accbe9a05e 138
shintamainjp 0:19accbe9a05e 139 # Datastreams
shintamainjp 0:19accbe9a05e 140
shintamainjp 0:19accbe9a05e 141 o * Create new datastream: POST /v2/feeds/<feed_id>/datastreams
shintamainjp 0:19accbe9a05e 142 o * Read datastream - GET /v2/feeds/<feed_id>/datastreams/<datastream_id>
shintamainjp 0:19accbe9a05e 143 o * Update datastream: PUT /v2/feeds/<feed_id>/datastreams/<datastream_id>
shintamainjp 0:19accbe9a05e 144 o * Delete datastream: DELETE /v2/feeds/<feed_id>/datastreams/<datastream_id>
shintamainjp 0:19accbe9a05e 145
shintamainjp 0:19accbe9a05e 146 # Datapoints
shintamainjp 0:19accbe9a05e 147
shintamainjp 0:19accbe9a05e 148 * Create datapoint: POST /v2/feeds/<feed_id>/datastreams/<datastream_id>/datapoints
shintamainjp 0:19accbe9a05e 149 * Read datapoint: GET /v2/feeds/<feed_id>/datastreams/<datastream_id>/datapoints/<timestamp>
shintamainjp 0:19accbe9a05e 150 * Update datapoint: PUT /v2/feeds/<feed_id>/datastreams/<datastream_id>/datapoints/<timestamp>
shintamainjp 0:19accbe9a05e 151 * Delete datapoint: DELETE /v2/feeds/<feed_id>/datastreams/<datastream_id>/datapoints/<timestamp>
shintamainjp 0:19accbe9a05e 152
shintamainjp 0:19accbe9a05e 153 # Triggers
shintamainjp 0:19accbe9a05e 154
shintamainjp 0:19accbe9a05e 155 * List triggers: GET /v2/triggers
shintamainjp 0:19accbe9a05e 156 * Create trigger: POST /v2/triggers
shintamainjp 0:19accbe9a05e 157 * Read trigger: GET /v2/triggers/<trigger_id>
shintamainjp 0:19accbe9a05e 158 * Update trigger: PUT /v2/triggers/<trigger_id>
shintamainjp 0:19accbe9a05e 159 * Delete trigger: DELETE /v2/triggers/<trigger_id>
shintamainjp 0:19accbe9a05e 160
shintamainjp 0:19accbe9a05e 161 # Users
shintamainjp 0:19accbe9a05e 162
shintamainjp 0:19accbe9a05e 163 * List all users: GET /v2/users
shintamainjp 0:19accbe9a05e 164 * Create user: POST /v2/users
shintamainjp 0:19accbe9a05e 165 * Read user: GET /v2/users/<user_id>
shintamainjp 0:19accbe9a05e 166 * Update user: PUT /v2/users/<user_id>
shintamainjp 0:19accbe9a05e 167 * Delete user: DELETE /v2/users/<user_id>
shintamainjp 0:19accbe9a05e 168 */