phant_rb 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 10b0b93f2d3e0ecf0156d9855314d061ad4b95c5
4
- data.tar.gz: b0a06bb1fddcfe2c31564906224a265b9b2c877d
3
+ metadata.gz: 17838ed9df5576d26e9c8ce00811e647f5edc3d5
4
+ data.tar.gz: 2f61e56fb9dc21398b4d98cacaca28a31a249c47
5
5
  SHA512:
6
- metadata.gz: d744866ff8a10dd7ca40fb277ddf251fc60b489c5550f1bf35637ae52c34384f720f59a0546510c3675392f8236131046685c06d76c85ac05664cfc9e9c5180b
7
- data.tar.gz: 7fd43f00029bab1962cc66c2f0512d57ea8a106f3afd398ae9e9d6c4543b7d67198193f20a41726389123fe7407ecf3ec9b40f3b42490e607a9aa29cf4ebc024
6
+ metadata.gz: 351f3e77f750359d37bab877344284ddb828c9070422f79d18e7353b50b330262387b22b27118aa52633e80cce195e345f9f33ed8d7aebe38aaeaae23a39a3a5
7
+ data.tar.gz: dde8cd909d22e1da291b7edace160fdb2f2621d2dd69c19aad4a16d213e66b5f635a3f0292f5987f9c7a0cccbfa103e9b6b738a03d221362a7c272e2eeed543f
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A Ruby client for Phant. See [data.sparkfun.com](https://data.sparkfun.com/) for more information.
4
4
 
5
- This is a work in progress.
5
+ [![Gem Version](https://badge.fury.io/rb/phant_rb.png)](http://badge.fury.io/rb/phant_rb)
6
6
 
7
7
  ## Installation
8
8
 
@@ -22,19 +22,53 @@ Or install it yourself as:
22
22
 
23
23
  ```ruby
24
24
  client = PhantRb::Client.new "PUBLIC_KEY", %w(humidity temp), private_key: 'PRIVATE_KEY'
25
+
26
+ # log data, http://phant.io/docs/input/http/
25
27
  client.log(22.7, 17.8)
26
28
 
29
+ # retrieve your data, http://phant.io/docs/output/http/
27
30
  data = client.get()
28
31
  puts data
32
+
33
+ # retrieve info about the current state of your stream, http://phant.io/docs/output/stats/
34
+ stats = client.stats()
35
+ puts stats.pageCount
36
+ puts stats.remaining
37
+
38
+ # retrieve rate limit for the current stream, http://phant.io/docs/input/limit/
39
+ # must be called only after PhantRb::Client#log is called
40
+ limits = client.rate_limits()
41
+ puts limits.x_rate_limit_remaining
42
+
43
+ # clear all logged data from a stream, http://phant.io/docs/management/clear/
44
+ client.clear()
45
+
46
+ ```
47
+
48
+ To use different Phant server
49
+
50
+ ```ruby
51
+ client = PhantRb::Client.new "PUBLIC_KEY", %w(humidity temp), {private_key: 'PRIVATE_KEY', base_url: 'http://127.0.0.1/'}
29
52
  ```
30
53
 
54
+ ## TODO
55
+ * delete a stream
56
+ * paginate data
57
+ * use local server in specs
58
+
31
59
  ## Contributing
32
60
 
33
- 1. Fork it ( https://github.com/[my-github-username]/phant_rb/fork )
61
+ 1. Fork it ( https://github.com/girishso/phant_rb/fork )
34
62
  2. Create your feature branch (`git checkout -b my-new-feature`)
35
63
  3. Commit your changes (`git commit -am 'Add some feature'`)
36
64
  4. Push to the branch (`git push origin my-new-feature`)
37
65
  5. Create a new Pull Request
38
66
 
67
+ ## Licence
68
+
69
+ MIT License
70
+
71
+ This software is provided as is, use it your own risk.
39
72
 
73
+ Brought to you by: [Cube Root Software](http://www.cuberoot.in) (c) 2014
40
74
 
@@ -1,3 +1,3 @@
1
1
  module PhantRb
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/phant_rb.rb CHANGED
@@ -14,23 +14,44 @@ module PhantRb
14
14
  end
15
15
 
16
16
  def log(*data)
17
- @last_response = request data
17
+ conn = rest_conn 'input'
18
+ @last_response = conn.post URI.encode_www_form(@fields.zip(data))
18
19
  Hashie::Mash.new(JSON.parse(@last_response.body))
19
20
  end
20
21
 
21
22
  def get
22
- @last_response = RestClient.get @opts[:base_url] + "output/" + @public_key + ".json",
23
- 'Phant-Private-Key' => @opts[:private_key]
24
- JSON.parse @last_response.body
23
+ conn = rest_conn 'output'
24
+ response = conn.get
25
+ JSON.parse response.body
26
+ end
27
+
28
+ def stats
29
+ conn = rest_conn 'stats'
30
+ response = conn.get
31
+ Hashie::Mash.new(JSON.parse(response.body))
32
+ end
33
+
34
+ def clear
35
+ conn = rest_conn 'input'
36
+ response = conn.delete
37
+ Hashie::Mash.new(JSON.parse(response.body))
38
+ end
39
+
40
+ def rate_limits
41
+ unless !@last_response.nil? && @last_response.headers.has_key?(:x_rate_limit_remaining)
42
+ raise "No rate limit headers found. PhantRb::Client#log must be called before this."
43
+ end
44
+ Hashie::Mash.new(@last_response.headers)
25
45
  end
26
46
 
27
47
  private
28
- def request(data)
29
- RestClient.post(
30
- @opts[:base_url] + "input/" + @public_key + ".json",
31
- URI.encode_www_form(@fields.zip(data)),
32
- 'Phant-Private-Key' => @opts[:private_key]
33
- )
48
+ def rest_conn(type)
49
+ url = case type
50
+ when 'stats' then URI.join @opts[:base_url], "/output/", "#{@public_key}/stats.json"
51
+ else URI.join @opts[:base_url], "/#{type}/", "#{@public_key}.json"
52
+ end
53
+ RestClient::Resource.new url.to_s,
54
+ {:headers => {'Phant-Private-Key' => @opts[:private_key]}}
34
55
  end
35
56
  end
36
57
  end
@@ -10,12 +10,28 @@ describe PhantRb do
10
10
  expect(resp.success).to be true
11
11
  end
12
12
 
13
- it 'reads data' do
13
+ it 'returns rate limits' do
14
+ resp = @client.log(12.0, 23)
14
15
  @client.get
16
+ resp = @client.rate_limits
17
+ expect(resp.has_key?(:x_rate_limit_remaining)).to be true
18
+ end
19
+
20
+ it 'reads data' do
21
+ resp = @client.get
22
+ expect(resp).to be_an(Array)
23
+ end
24
+
25
+ it 'returns stats for a stream' do
26
+ resp = @client.stats
27
+ expect(resp.has_key?(:remaining)).to be true
28
+ end
29
+
30
+
31
+ it 'clears a stream' do
32
+ resp = @client.clear
33
+ expect(resp.success).to be true
15
34
  end
16
35
 
17
36
  it 'completely deletes a stream'
18
- it 'clears a stream'
19
- it 'returns stats for a stream'
20
- it 'returns rate limits'
21
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phant_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Girish S
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-13 00:00:00.000000000 Z
11
+ date: 2014-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client