xively-rb-connector 0.1.0 → 0.1.2
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 +4 -4
- data/Rakefile +4 -0
- data/lib/xively-rb-connector/configuration.rb +25 -0
- data/lib/xively-rb-connector/connection.rb +4 -0
- data/lib/xively-rb-connector/device.rb +14 -1
- data/lib/xively-rb-connector/version.rb +6 -1
- data/lib/xively-rb-connector.rb +15 -3
- data/spec/spec_helper.rb +71 -0
- data/spec/support/fixtures/feed_100000000.json +102 -0
- data/spec/support/fixtures/models.rb +79 -0
- data/spec/xively-rb-connector/connection_spec.rb +51 -0
- data/spec/xively-rb-connector/device_spec.rb +41 -0
- data/spec/xively-rb-connector/module_spec.rb +71 -0
- data/xively-rb-connector.gemspec +2 -0
- metadata +44 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3603d6b40f350f03f7c098653eb455baa9e876a
|
4
|
+
data.tar.gz: 1196c5ea6f043590d61fa467c9de9b09acc1b968
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54ebdc4e4adf196b618734693f2e54459cde65e0de9a92be6b67bc3905a2ab8c4f40151a7018e623e36f1ffc06e4b855c3235c8f490a740fdb5dba5d7ec54279
|
7
|
+
data.tar.gz: 022905b2d1093136cb2ecc9fd0ce30343acbe1a6ace381f5802b22b59f1348a723929fc33cdc890ddb3990710100ec7aef38743f7655dd02d8ed3861766b164e
|
data/Rakefile
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
module XivelyConnector
|
2
|
+
|
3
|
+
class << self
|
4
|
+
attr_writer :configuration
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.configuration
|
8
|
+
@configuration ||= Configuration.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.reset
|
12
|
+
@configuration = Configuration.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.configure
|
16
|
+
yield(configuration)
|
17
|
+
end
|
18
|
+
|
19
|
+
class Configuration
|
20
|
+
attr_accessor :api_key
|
21
|
+
attr_accessor :datapoint_buffer_size
|
22
|
+
attr_accessor :only_save_changes
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -10,12 +10,16 @@ module XivelyConnector
|
|
10
10
|
# Mix in the ability to log
|
11
11
|
include XivelyConnector::Logging
|
12
12
|
|
13
|
+
attr_accessor :config
|
14
|
+
|
13
15
|
def initialize(options)
|
14
16
|
@logger = options[:logger] || logger
|
17
|
+
@config = options[:config] || Configuration.new
|
15
18
|
@logger.debug "XivelyConnector::Connection initialize"
|
16
19
|
super(options[:api_key])
|
17
20
|
end
|
18
21
|
|
22
|
+
|
19
23
|
#Set HTTParty params that we need to set after initialize is called
|
20
24
|
#These params come from @options within initialize and include the following:
|
21
25
|
#:ssl_ca_file - SSL CA File for SSL connections
|
@@ -12,9 +12,22 @@ class Device < Xively::Feed
|
|
12
12
|
include XivelyConnector::Logging
|
13
13
|
|
14
14
|
# Connect to a device by ID
|
15
|
-
def self.
|
15
|
+
def self.find(id, api_key=nil)
|
16
|
+
self.find_by_id(id, api_key)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Connect to a device by ID
|
20
|
+
def self.find_by_id(id, api_key=nil)
|
21
|
+
|
22
|
+
# First connect if necessary
|
23
|
+
XivelyConnector.connect(:api_key => api_key) unless api_key.nil?
|
24
|
+
raise "Can not connect without an api_key or an existing connection." if XivelyConnector.connection.nil? and api_key.nil?
|
25
|
+
|
16
26
|
XivelyConnector.connection.logger.debug "Device.find_by_id(#{id})"
|
27
|
+
|
28
|
+
# Perform the lookup
|
17
29
|
response = XivelyConnector.connection.get("/v2/feeds/#{id}.json")
|
30
|
+
|
18
31
|
if response.success?
|
19
32
|
self.new(:response => response)
|
20
33
|
else
|
data/lib/xively-rb-connector.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
module XivelyConnector
|
2
2
|
|
3
|
+
# Base XivelyConnector exception class
|
4
|
+
class XivelyConnectorError < ::Exception; end
|
5
|
+
|
6
|
+
# Module level methods for establishing connections and finding objects
|
3
7
|
@@connection = nil
|
4
8
|
|
5
9
|
# Lookup methods delegate to class methods
|
@@ -13,15 +17,23 @@ module XivelyConnector
|
|
13
17
|
@@connection = Connection.new(options)
|
14
18
|
end
|
15
19
|
|
20
|
+
# Releases the connection
|
21
|
+
def self.disconnect()
|
22
|
+
@@connection = nil
|
23
|
+
end
|
24
|
+
|
25
|
+
# Lookup method delegates to class methods
|
26
|
+
def self.find(id, api_key=nil)
|
27
|
+
self.find_device_by_id(id, api_key=nil)
|
28
|
+
end
|
29
|
+
|
16
30
|
# Lookup methods delegate to class methods
|
17
31
|
def self.find_device_by_id(id, api_key=nil)
|
18
32
|
self.connect(:api_key => api_key) unless api_key.nil?
|
33
|
+
raise "Can not connect without an api_key or an existing connection." if self.connection.nil? and api_key.nil?
|
19
34
|
Device.find_by_id(id)
|
20
35
|
end
|
21
36
|
|
22
|
-
# Base XivelyConnector exception class
|
23
|
-
class XivelyConnectorError < ::Exception; end
|
24
|
-
|
25
37
|
end
|
26
38
|
|
27
39
|
require "xively-rb-connector/version"
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
Bundler.setup
|
4
|
+
|
5
|
+
require 'rspec'
|
6
|
+
require 'webmock/rspec'
|
7
|
+
require 'time'
|
8
|
+
|
9
|
+
# figure out where we are being loaded from
|
10
|
+
if $LOADED_FEATURES.grep(/spec\/spec_helper\.rb/).any?
|
11
|
+
begin
|
12
|
+
raise "foo"
|
13
|
+
rescue => e
|
14
|
+
puts <<-MSG
|
15
|
+
===================================================
|
16
|
+
It looks like spec_helper.rb has been loaded
|
17
|
+
multiple times. Normalize the require to:
|
18
|
+
|
19
|
+
require "spec/spec_helper"
|
20
|
+
|
21
|
+
Things like File.join and File.expand_path will
|
22
|
+
cause it to be loaded multiple times.
|
23
|
+
|
24
|
+
Loaded this time from:
|
25
|
+
|
26
|
+
#{e.backtrace.join("\n ")}
|
27
|
+
===================================================
|
28
|
+
MSG
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
if !defined?(JRUBY_VERSION)
|
33
|
+
if ENV["COVERAGE"] == "on"
|
34
|
+
require 'simplecov'
|
35
|
+
SimpleCov.start do
|
36
|
+
add_filter "/spec/"
|
37
|
+
add_filter "/lib/xively-rb.rb"
|
38
|
+
add_filter "/vendor/"
|
39
|
+
minimum_coverage 100
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
#Dir['./spec/support/**/*.rb'].map {|f| require f}
|
45
|
+
|
46
|
+
$:.push File.expand_path("../lib", __FILE__)
|
47
|
+
require 'xively-rb-connector'
|
48
|
+
|
49
|
+
#require File.dirname(__FILE__) + '/fixtures/models.rb'
|
50
|
+
|
51
|
+
RSpec.configure do |config|
|
52
|
+
config.color_enabled = true
|
53
|
+
config.formatter = 'documentation'
|
54
|
+
config.run_all_when_everything_filtered = true
|
55
|
+
|
56
|
+
# Webmock
|
57
|
+
config.before(:each) do
|
58
|
+
stub_request(:get, "https://api.xively.com/v2/feeds/000000001.json").
|
59
|
+
with(:headers => {'User-Agent'=>'xively-rb/0.2.10', 'X-Apikey'=>'abcdefg'}).
|
60
|
+
to_return(:status => 200,
|
61
|
+
:body => File.open(File.dirname(__FILE__) + '/support/fixtures/feed_100000000.json').read,
|
62
|
+
:headers => {})
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
@@ -0,0 +1,102 @@
|
|
1
|
+
{
|
2
|
+
"id": 10000000,
|
3
|
+
"title": "Smart Meter",
|
4
|
+
"private": "true",
|
5
|
+
"website": "http://www.smart-metering.com",
|
6
|
+
"tags": [
|
7
|
+
"Smartmeter",
|
8
|
+
"Gas",
|
9
|
+
"Power",
|
10
|
+
"Propane",
|
11
|
+
"Water"
|
12
|
+
],
|
13
|
+
"description": "This is a description.",
|
14
|
+
"auto_feed_url": "https://api.xively.com/v2/feeds/10000000.json",
|
15
|
+
"status": "frozen",
|
16
|
+
"updated": "2014-03-31T15:32:58.390034Z",
|
17
|
+
"created": "2014-03-28T16:36:30.651731Z",
|
18
|
+
"email": "john.doe@gmail.com",
|
19
|
+
"creator": "https://xively.com/users/jdoe",
|
20
|
+
"version": "1.0.0",
|
21
|
+
"datastreams": [
|
22
|
+
{
|
23
|
+
"id": "Amperage",
|
24
|
+
"current_value": "30",
|
25
|
+
"at": "2014-03-28T16:39:14.898381Z",
|
26
|
+
"max_value": "0.0",
|
27
|
+
"min_value": "40.0",
|
28
|
+
"tags": [
|
29
|
+
"Power",
|
30
|
+
"Amps"
|
31
|
+
],
|
32
|
+
"unit": {
|
33
|
+
"symbol": "A",
|
34
|
+
"label": "Amps"
|
35
|
+
}
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"id": "Propane",
|
39
|
+
"current_value": "4",
|
40
|
+
"at": "2014-03-28T16:45:05.133736Z",
|
41
|
+
"max_value": "7.5",
|
42
|
+
"min_value": "0.0",
|
43
|
+
"unit": {
|
44
|
+
"symbol": "cft",
|
45
|
+
"label": "Cubic Feet"
|
46
|
+
}
|
47
|
+
},
|
48
|
+
{
|
49
|
+
"id": "Voltage",
|
50
|
+
"current_value": "240",
|
51
|
+
"at": "2014-03-31T15:32:58.390034Z",
|
52
|
+
"max_value": "245.0",
|
53
|
+
"min_value": "238.0",
|
54
|
+
"tags": [
|
55
|
+
"Power",
|
56
|
+
"Volts"
|
57
|
+
],
|
58
|
+
"unit": {
|
59
|
+
"symbol": "V",
|
60
|
+
"label": "Volts"
|
61
|
+
}
|
62
|
+
},
|
63
|
+
{
|
64
|
+
"id": "Wattage",
|
65
|
+
"current_value": "0",
|
66
|
+
"at": "2014-03-28T16:38:11.905385Z",
|
67
|
+
"max_value": "10000.0",
|
68
|
+
"min_value": "0.0",
|
69
|
+
"tags": [
|
70
|
+
"Power",
|
71
|
+
"Watts"
|
72
|
+
],
|
73
|
+
"unit": {
|
74
|
+
"symbol": "W",
|
75
|
+
"label": "Watts"
|
76
|
+
}
|
77
|
+
},
|
78
|
+
{
|
79
|
+
"id": "Well",
|
80
|
+
"current_value": "0",
|
81
|
+
"at": "2014-03-28T16:41:56.135003Z",
|
82
|
+
"max_value": "7.5",
|
83
|
+
"min_value": "0.0",
|
84
|
+
"tags": [
|
85
|
+
"Water"
|
86
|
+
],
|
87
|
+
"unit": {
|
88
|
+
"symbol": "cft",
|
89
|
+
"label": "Cubic Feet"
|
90
|
+
}
|
91
|
+
}
|
92
|
+
],
|
93
|
+
"location": {
|
94
|
+
"name": "Some Address",
|
95
|
+
"domain": "physical",
|
96
|
+
"ele": "350 feet",
|
97
|
+
"lat": 30.12345678912345,
|
98
|
+
"lon": -78.0987654321098
|
99
|
+
},
|
100
|
+
"product_id": "982634kjhlkjh23412k3",
|
101
|
+
"device_serial": "HG68JHG07HG6"
|
102
|
+
}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
class Feed
|
2
|
+
extend Xively::Base
|
3
|
+
|
4
|
+
is_xively :feed
|
5
|
+
attr_accessor :datastreams
|
6
|
+
attr_accessor :feed
|
7
|
+
attr_accessor :creator
|
8
|
+
attr_accessor :title
|
9
|
+
attr_accessor :website
|
10
|
+
attr_accessor :icon
|
11
|
+
attr_accessor :description
|
12
|
+
attr_accessor :updated
|
13
|
+
attr_accessor :email
|
14
|
+
attr_accessor :private
|
15
|
+
attr_accessor :tags
|
16
|
+
attr_accessor :location_disposition
|
17
|
+
attr_accessor :location_domain
|
18
|
+
attr_accessor :location_ele
|
19
|
+
attr_accessor :location_exposure
|
20
|
+
attr_accessor :location_lat
|
21
|
+
attr_accessor :location_lon
|
22
|
+
attr_accessor :location_name
|
23
|
+
|
24
|
+
def attributes
|
25
|
+
attributes = {}
|
26
|
+
Xively::Feed::ALLOWED_KEYS.each do |key|
|
27
|
+
attributes[key] = self.send(key) if self.respond_to?(key)
|
28
|
+
end
|
29
|
+
attributes
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class Datastream
|
34
|
+
extend Xively::Base
|
35
|
+
|
36
|
+
is_xively :datastream, {:id => :stream_id}
|
37
|
+
|
38
|
+
attr_accessor :feed
|
39
|
+
attr_accessor :feed_id
|
40
|
+
attr_accessor :datapoints
|
41
|
+
attr_accessor :id
|
42
|
+
attr_accessor :stream_id
|
43
|
+
attr_accessor :feed_creator
|
44
|
+
attr_accessor :current_value
|
45
|
+
attr_accessor :min_value
|
46
|
+
attr_accessor :max_value
|
47
|
+
attr_accessor :unit_label
|
48
|
+
attr_accessor :unit_type
|
49
|
+
attr_accessor :unit_symbol
|
50
|
+
attr_accessor :tags
|
51
|
+
attr_accessor :updated
|
52
|
+
|
53
|
+
def attributes
|
54
|
+
attributes = {}
|
55
|
+
Xively::Datastream::ALLOWED_KEYS.each do |key|
|
56
|
+
attributes[key] = self.send(key) if self.respond_to?(key)
|
57
|
+
end
|
58
|
+
attributes
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
class Datapoint
|
64
|
+
extend Xively::Base
|
65
|
+
|
66
|
+
is_xively :datapoint
|
67
|
+
attr_accessor :datastream_id
|
68
|
+
attr_accessor :at
|
69
|
+
attr_accessor :value
|
70
|
+
|
71
|
+
def attributes
|
72
|
+
attributes = {}
|
73
|
+
Xively::Datapoint::ALLOWED_KEYS.each do |key|
|
74
|
+
attributes[key] = self.send(key) if self.respond_to?(key)
|
75
|
+
end
|
76
|
+
attributes
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe XivelyConnector::Connection do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@client = XivelyConnector.connect(:api_key => "abcdefg")
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should have the base uri defined" do
|
10
|
+
XivelyConnector::Connection.base_uri.should == 'https://api.xively.com'
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#get" do
|
14
|
+
it "should make the appropriate request" do
|
15
|
+
request_stub = stub_request(:get, "#{XivelyConnector::Connection.base_uri}/v2/feeds/504.json").
|
16
|
+
with(:headers => {'User-Agent' => XivelyConnector::Connection.user_agent, 'X-ApiKey' => 'abcdefg'})
|
17
|
+
@client.get('/v2/feeds/504.json')
|
18
|
+
request_stub.should have_been_made
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#put" do
|
23
|
+
it "should make the appropriate request" do
|
24
|
+
request_stub = stub_request(:put, "#{XivelyConnector::Connection.base_uri}/v2/feeds/504.json").
|
25
|
+
with(:headers => {'User-Agent' => XivelyConnector::Connection.user_agent, 'X-ApiKey' => 'abcdefg'}, :body => "dataz")
|
26
|
+
@client.put('/v2/feeds/504.json', :body => "dataz")
|
27
|
+
request_stub.should have_been_made
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#post" do
|
32
|
+
it "should make the appropriate request" do
|
33
|
+
request_stub = stub_request(:post, "#{XivelyConnector::Connection.base_uri}/v2/feeds/504.json").
|
34
|
+
with(:headers => {'User-Agent' => XivelyConnector::Connection.user_agent, 'X-ApiKey' => 'abcdefg'}, :body => "dataz")
|
35
|
+
@client.post('/v2/feeds/504.json', :body => "dataz")
|
36
|
+
request_stub.should have_been_made
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#delete" do
|
41
|
+
it "should make the appropriate request" do
|
42
|
+
request_stub = stub_request(:delete, "#{XivelyConnector::Connection.base_uri}/v2/feeds/504/datastreams/test.json").
|
43
|
+
with(:headers => {'User-Agent' => XivelyConnector::Connection.user_agent, 'X-ApiKey' => 'abcdefg'})
|
44
|
+
@client.delete('/v2/feeds/504/datastreams/test.json')
|
45
|
+
request_stub.should have_been_made
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe XivelyConnector::Device do
|
4
|
+
|
5
|
+
describe ".find" do
|
6
|
+
|
7
|
+
it "should use an existing connection if it exists" do
|
8
|
+
XivelyConnector.disconnect
|
9
|
+
XivelyConnector.connect(:api_key=>"abcdefg")
|
10
|
+
expect {XivelyConnector::Device.find('000000001')}.not_to raise_error
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should raise an error if a connection doesn't exists and no api_key is provided" do
|
14
|
+
XivelyConnector.disconnect
|
15
|
+
expect {XivelyConnector::Device.find('000000001')}.to raise_error
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return a device object" do
|
19
|
+
d = XivelyConnector::Device.find('000000001', "abcdefg")
|
20
|
+
d.title.should == 'Smart Meter'
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe ".find_by_id" do
|
26
|
+
|
27
|
+
it "should use an existing connection if it exists" do
|
28
|
+
XivelyConnector.disconnect
|
29
|
+
XivelyConnector.connect(:api_key=>"abcdefg")
|
30
|
+
expect {XivelyConnector::Device.find_by_id('000000001')}.not_to raise_error
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should raise an error if a connection doesn't exists and no api_key is provided" do
|
34
|
+
XivelyConnector.disconnect
|
35
|
+
expect {XivelyConnector::Device.find_by_id('000000001')}.to raise_error
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe XivelyConnector do
|
4
|
+
|
5
|
+
it 'should return correct version string' do
|
6
|
+
XivelyConnector.version_string.should == "XivelyConnector version #{XivelyConnector::VERSION::STRING}"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe ".connection" do
|
10
|
+
|
11
|
+
it "should be available from the module" do
|
12
|
+
XivelyConnector.connect(:api_key=>"abcdefg")
|
13
|
+
XivelyConnector.connection.class.should == XivelyConnector::Connection
|
14
|
+
XivelyConnector.connection.api_key.should == 'abcdefg'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
describe ".connect" do
|
20
|
+
|
21
|
+
it "should connect using an api-key" do
|
22
|
+
XivelyConnector.connect(:api_key=>'abcdefg').api_key.should == 'abcdefg'
|
23
|
+
XivelyConnector.connection.class.should == XivelyConnector::Connection
|
24
|
+
XivelyConnector.connection.api_key.should == 'abcdefg'
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe ".disconnect" do
|
30
|
+
|
31
|
+
it "should release the connection" do
|
32
|
+
XivelyConnector.connect(:api_key=>"abcdefg")
|
33
|
+
XivelyConnector.disconnect
|
34
|
+
XivelyConnector.connection.should == nil
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
describe ".find" do
|
40
|
+
|
41
|
+
it "should use an existing connection if it exists" do
|
42
|
+
XivelyConnector.disconnect
|
43
|
+
XivelyConnector.connect(:api_key=>"abcdefg")
|
44
|
+
expect {XivelyConnector.find('000000001')}.not_to raise_error
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should raise an error if a connection doesn't exists and no api_key is provided" do
|
48
|
+
XivelyConnector.disconnect
|
49
|
+
expect {XivelyConnector.find('000000001')}.to raise_error
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
describe ".find_device_by_id" do
|
56
|
+
|
57
|
+
it "should use an existing connection if it exists" do
|
58
|
+
XivelyConnector.disconnect
|
59
|
+
XivelyConnector.connect(:api_key=>"abcdefg")
|
60
|
+
expect {XivelyConnector.find('000000001')}.not_to raise_error
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should raise an error if a connection doesn't exists and no api_key is provided" do
|
64
|
+
XivelyConnector.disconnect
|
65
|
+
expect {XivelyConnector.find('000000001')}.to raise_error
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
end
|
data/xively-rb-connector.gemspec
CHANGED
@@ -30,6 +30,8 @@ web. Xively provides a fantastic development portal and prototyping accounts are
|
|
30
30
|
# Development dependencies
|
31
31
|
spec.add_development_dependency "bundler", "~> 1.3"
|
32
32
|
spec.add_development_dependency "rake", "~> 10.2"
|
33
|
+
spec.add_development_dependency "rspec"
|
34
|
+
spec.add_development_dependency "webmock"
|
33
35
|
|
34
36
|
# Runtime dependencies
|
35
37
|
spec.add_runtime_dependency "log4r", "~> 1.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xively-rb-connector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordan Duggan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03
|
11
|
+
date: 2014-04-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: log4r
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,11 +129,18 @@ files:
|
|
101
129
|
- README.md
|
102
130
|
- Rakefile
|
103
131
|
- lib/xively-rb-connector.rb
|
132
|
+
- lib/xively-rb-connector/configuration.rb
|
104
133
|
- lib/xively-rb-connector/connection.rb
|
105
134
|
- lib/xively-rb-connector/datastream.rb
|
106
135
|
- lib/xively-rb-connector/device.rb
|
107
136
|
- lib/xively-rb-connector/logging.rb
|
108
137
|
- lib/xively-rb-connector/version.rb
|
138
|
+
- spec/spec_helper.rb
|
139
|
+
- spec/support/fixtures/feed_100000000.json
|
140
|
+
- spec/support/fixtures/models.rb
|
141
|
+
- spec/xively-rb-connector/connection_spec.rb
|
142
|
+
- spec/xively-rb-connector/device_spec.rb
|
143
|
+
- spec/xively-rb-connector/module_spec.rb
|
109
144
|
- xively-rb-connector.gemspec
|
110
145
|
homepage: https://github.com/jwtd/xively-rb-connector
|
111
146
|
licenses:
|
@@ -131,4 +166,10 @@ rubygems_version: 2.2.2
|
|
131
166
|
signing_key:
|
132
167
|
specification_version: 4
|
133
168
|
summary: Ruby gem that provides a high level interface to Xively
|
134
|
-
test_files:
|
169
|
+
test_files:
|
170
|
+
- spec/spec_helper.rb
|
171
|
+
- spec/support/fixtures/feed_100000000.json
|
172
|
+
- spec/support/fixtures/models.rb
|
173
|
+
- spec/xively-rb-connector/connection_spec.rb
|
174
|
+
- spec/xively-rb-connector/device_spec.rb
|
175
|
+
- spec/xively-rb-connector/module_spec.rb
|