cs 0.1.6 → 0.2.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: 5d677266003749366fcffe2d64d691c4428769be
4
- data.tar.gz: d2848fca4408702e7247db0cbf8cd6ee146fcb28
3
+ metadata.gz: 65314f9bb5ad1ee8bb734e9a787ec6593b59c5ec
4
+ data.tar.gz: aa4f03d2c222473803addfe489038be17db58489
5
5
  SHA512:
6
- metadata.gz: d8f2304107d5a3d125a590c69ba370592b36723c9f336a75cc62774be62a11e8ae0f227242e2eb6b71d0b00d1db4995be422c9ffa2e9885170f501b61e7322a6
7
- data.tar.gz: 7a9cdf5cd49cc9afb08b9ba6cca9882ba1ed85b32ed62ff1d59157e9a68a6fa6543f2c5041cb4c5a5e26563c59c1a4f76495eaa3a46fc4ddf58337c7735cb36c
6
+ metadata.gz: 7eaf6550b00069705edb1c11dde22e3eda0ed839776881e1bb646a37817aa83c046adb163307bff80f7bf8f8699a08d27eb9071a60b0250114d0c2dc5c28e1ee
7
+ data.tar.gz: 139898e8a861b7ffe9b9659e6ed085105b3b6a9c1f9a9be54adc9c1f33bf10cc58e941037cca90f96edc3239edc56ed84bc6201424f21261e2df17a0b4836dc0
@@ -1,9 +1,12 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.2
3
+ - 2.1.5
4
4
  - 2.0.0
5
5
  - 1.9.3
6
6
  - jruby-19mode
7
- - rbx-2.2.1
8
- - jruby-head
7
+ - rbx-2.2.10
8
+ - jruby
9
9
  script: bundle exec rspec spec
10
+ addons:
11
+ code_climate:
12
+ repo_token: a4b19928b743eda49f7acaba02190126122bfa09bb2615395aa1820a7cce9fc0
@@ -0,0 +1,4 @@
1
+ ## 0.2.0
2
+
3
+ * forward http method and response inspection from client to session
4
+ * fix logging
data/Gemfile CHANGED
@@ -10,13 +10,14 @@ gem 'json'
10
10
  #
11
11
 
12
12
  platforms :rbx do
13
- gem 'rubysl'
13
+ # gem 'rubysl'
14
14
  end
15
15
 
16
16
  group :test do
17
17
  gem "rake", "~> 10.1.0"
18
18
  gem "webmock", "~> 1.13.0"
19
19
  gem "rspec", "~> 2.14.1"
20
+ gem "codeclimate-test-reporter", require: nil
20
21
  end
21
22
 
22
23
  group :development do
data/README.md CHANGED
@@ -4,6 +4,7 @@ Client library to communicate with CommonSense written in ruby
4
4
  [![Gem Version](https://badge.fury.io/rb/cs.svg)](http://badge.fury.io/rb/cs)
5
5
  [![Code Climate](https://codeclimate.com/github/senseobservationsystems/commonsense-ruby-lib.png)](https://codeclimate.com/github/senseobservationsystems/commonsense-ruby-lib)
6
6
  [![Build Status](https://travis-ci.org/senseobservationsystems/commonsense-ruby-lib.png?branch=master)](https://travis-ci.org/senseobservationsystems/commonsense-ruby-lib)
7
+ [![Test Coverage](https://codeclimate.com/github/senseobservationsystems/commonsense-ruby-lib/badges/coverage.svg)](https://codeclimate.com/github/senseobservationsystems/commonsense-ruby-lib)
7
8
 
8
9
  RDoc [Documentation](http://rdoc.info/github/senseobservationsystems/commonsense-ruby-lib/frames)
9
10
 
@@ -108,9 +109,20 @@ data.save!
108
109
  sensor.data.build(date: Time.now, value: {"lux" => 1}).save!
109
110
  ```
110
111
 
112
+ ### Making manual API call
113
+
114
+ With the client we could interact with CS API using the client object
115
+
116
+ example
117
+
118
+ ```ruby
119
+ client.get('/users/current.json')
120
+ client.post('/sensors.json', {"params": "bar"})
121
+ ```
122
+
111
123
  ### Debuging
112
124
 
113
- To get information about the API response (body, code, headers) inspect the session
125
+ To get information about the API response (body, code, headers) use this method
114
126
 
115
127
  example
116
128
 
@@ -118,12 +130,9 @@ example
118
130
  # do some API call
119
131
  current_user = client.current_user
120
132
 
121
- # get the session
122
- session = client.session
123
-
124
- response_code = session.response_code
125
- response_body = session.resopnse_body
126
- header = session.response_headers
133
+ response_code = client.response_code
134
+ response_body = client.resopnse_body
135
+ header = client.response_headers
127
136
 
128
137
  # dump the output to text file
129
138
  session.dump_to_text("/tmp/output.txt")
data/lib/cs.rb CHANGED
@@ -50,8 +50,13 @@ module CS
50
50
  # client.base_uri = 'https://api.dev.sense-os.nl'
51
51
  #
52
52
  class Client
53
+ extend Forwardable
54
+
53
55
  attr_accessor :session
54
- attr_reader :logger
56
+
57
+ def_delegators :delegator, :get, :post, :put, :delete, :head,
58
+ :response_code, :response_body, :response_headers, :errors,
59
+ :dump_to_txt, :open_in_browser
55
60
 
56
61
  def initialize(opts={})
57
62
  options = {
@@ -74,6 +79,10 @@ module CS
74
79
  @session.logger = logger if @session
75
80
  end
76
81
 
82
+ def logger
83
+ @logger
84
+ end
85
+
77
86
  # Create a new session to CommonSense using username and plain text password
78
87
  # with `login!` it will throw exception if there is an error
79
88
  #
@@ -81,7 +90,7 @@ module CS
81
90
  # client.login!('username', 'password')
82
91
  def login!(user, password, digest=true)
83
92
  @session = Session.new(base_uri: @base_uri)
84
- @session.logger = logger
93
+ @session.logger = @logger
85
94
  @session.login(user, password, digest)
86
95
  end
87
96
 
@@ -100,7 +109,7 @@ module CS
100
109
  # client.login('username', 'password')
101
110
  def oauth(consumer_key, consumer_secret, access_token, access_token_secret)
102
111
  @session = Session.new(base_uri: @base_uri)
103
- @session.logger = logger
112
+ @session.logger = @logger
104
113
  @session.oauth(consumer_key, consumer_secret, access_token, access_token_secret)
105
114
  end
106
115
 
@@ -110,7 +119,7 @@ module CS
110
119
  # client.session_id = '12345'
111
120
  def session_id=(session_id)
112
121
  @session = Session.new(base_uri: @base_uri)
113
- @session.logger = logger
122
+ @session.logger = @logger
114
123
  @session.session_id = session_id
115
124
  end
116
125
 
@@ -176,10 +185,18 @@ module CS
176
185
  def errors
177
186
  return @session.errors if @session
178
187
  end
188
+
189
+ private
190
+ def delegator
191
+ raise Error::SessionEmptyError unless session
192
+ @session
193
+ end
179
194
  end
180
195
 
181
196
  def self.load_CLI
182
197
  require "cs/cli/cli"
183
198
  end
199
+
200
+
184
201
  end
185
202
 
@@ -101,6 +101,7 @@ module CS
101
101
  if digest
102
102
  password = Digest::MD5.hexdigest password
103
103
  end
104
+
104
105
  post('/login.json', {:username => username, :password => password})
105
106
 
106
107
  if @response_code == 200
@@ -16,7 +16,14 @@ module CS
16
16
  def login(username, password, digest=true)
17
17
  @auth_proxy = CS::Auth::HTTP.new(@base_uri)
18
18
  @auth_proxy.logger = self.logger
19
- @auth_proxy.login(username, password, digest)
19
+
20
+ start_time = Time.now
21
+ result = @auth_proxy.login(username, password, digest)
22
+ elapsed = (Time.now - start_time) * 1000.0
23
+ log_request("Logging in", "")
24
+ log_response(elapsed)
25
+
26
+ result
20
27
  end
21
28
 
22
29
  def oauth(consumer_key, consumer_secret, access_token, access_token_secret)
@@ -64,17 +71,20 @@ module CS
64
71
  end
65
72
 
66
73
  def log_request(type, path)
74
+ return if logger.nil?
75
+
67
76
  logger.info("")
68
- logger.info("#{type} #{path}")
77
+ logger.info("#{type} #{base_uri}#{path}")
69
78
  logger.debug("headers: #{@auth_proxy.request_headers.inspect}")
70
79
  if ["POST", "PUT"].include?(type)
71
80
  logger.debug("request: #{@auth_proxy.request_body.inspect}")
72
81
  else
73
- logger.info("request: #{@auth_proxy.request_body.inspect}")
82
+ logger.debug("request: #{@auth_proxy.request_body.inspect}")
74
83
  end
75
84
  end
76
85
 
77
86
  def log_response(elapsed)
87
+ return if logger.nil?
78
88
  logger.info("result: #{self.response_code} in #{elapsed}ms")
79
89
  logger.debug("response: #{self.response_body}")
80
90
  end
@@ -88,7 +98,7 @@ module CS
88
98
  end
89
99
 
90
100
  elapsed = (Time.now - start_time) * 1000.0
91
- log_response(elapsed) if logger
101
+ log_response(elapsed)
92
102
 
93
103
  response
94
104
  end
@@ -1,3 +1,3 @@
1
1
  module CS
2
- VERSION = "0.1.6"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -55,8 +55,10 @@ describe "session" do
55
55
  logger = double().as_null_object
56
56
  session.logger = logger
57
57
  logger.should_receive("info").with("").ordered
58
- logger.should_receive("info").with("GET /users/current.json").ordered
58
+ logger.should_receive("info").with("GET http://api.dev.sense-os.local/users/current.json").ordered
59
59
  logger.should_receive("debug").with("headers: {\"Content-Type\"=>\"application/json\"}").ordered
60
+ logger.should_receive("debug").with("request: \"{\\\"username\\\":\\\"user1@tester.com\\\",\\\"password\\\":\\\"5f4dcc3b5aa765d61d8327deb882cf99\\\"}\""
61
+ ).ordered
60
62
  session.get('/users/current.json', '',{})
61
63
  end
62
64
  end
@@ -80,6 +80,51 @@ module CS
80
80
  end
81
81
  end
82
82
 
83
+ describe "get" do
84
+ it 'shoudl delegate method to session' do
85
+ end
86
+ end
87
+
88
+ describe "post" do
89
+ it 'shoudl delegate method to session' do
90
+ end
91
+ end
92
+
93
+ describe "put" do
94
+ it 'shoudl delegate method to session' do
95
+ end
96
+ end
97
+
98
+ describe "delete" do
99
+ it 'shoudl delegate method to session' do
100
+ end
101
+ end
102
+
103
+ describe "head" do
104
+ it 'shoudl delegate method to session' do
105
+ end
106
+ end
107
+
108
+ describe "response_code" do
109
+ it 'shoudl delegate method to session' do
110
+ end
111
+ end
112
+
113
+ describe "response_body" do
114
+ it 'shoudl delegate method to session' do
115
+ end
116
+ end
117
+
118
+ describe "response_headers" do
119
+ it 'shoudl delegate method to session' do
120
+ end
121
+ end
122
+
123
+ describe "errors" do
124
+ it 'shoudl delegate method to session' do
125
+ end
126
+ end
127
+
83
128
  end
84
129
  end
85
130
  end
@@ -1,12 +1,24 @@
1
+ #ENV['CODECLIMATE_REPO_TOKEN'] = "a4b19928b743eda49f7acaba02190126122bfa09bb2615395aa1820a7cce9fc0"
2
+ # code climate
3
+ if ENV['CODECLIMATE_REPO_TOKEN']
4
+ require "codeclimate-test-reporter"
5
+ CodeClimate::TestReporter.start
6
+ end
7
+
1
8
  require 'bundler/setup'
2
9
  require 'rspec'
3
10
  require 'cs'
4
11
  require 'pry'
5
12
 
13
+
6
14
  Dir[File.join(File.dirname(__FILE__),("support/**/*.rb"))].each {|f| require f}
7
15
 
8
16
  RSpec.configure do |config|
9
17
  config.treat_symbols_as_metadata_keys_with_true_values = true
18
+
19
+ config.after(:suite) do
20
+ WebMock.disable_net_connect!(:allow => 'codeclimate.com')
21
+ end
10
22
  end
11
23
 
12
24
  def create_client
data/test.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'logger'
2
+ require 'pry'
3
+ require 'cs'
4
+
5
+ logger = Logger.new(STDOUT)
6
+ logger.level = Logger::DEBUG
7
+ cl1 = CS::Client.new
8
+ cl1.logger = logger
9
+
10
+ puts "loggin cl1"
11
+ cl1.login!('ahmy+sf@sense-os.nl', 'sfpassword')
12
+ puts "current_user cl1"
13
+ cl1.current_user
14
+
15
+ cl2 = CS::Client.new(base_uri: 'http://api.test.sense-os.nl')
16
+ cl2.logger = logger
17
+ puts "loggin cl2"
18
+ cl2.login('a', 'a')
19
+ puts "current_user cl2"
20
+ cl2.current_user
21
+
22
+ cl1.current_user
23
+ puts "current_user cl1 again"
24
+
25
+ binding.pry
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmy Yulrizka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-14 00:00:00.000000000 Z
11
+ date: 2014-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: launchy
@@ -78,6 +78,7 @@ extra_rdoc_files: []
78
78
  files:
79
79
  - .gitignore
80
80
  - .travis.yml
81
+ - CHANGELOG.md
81
82
  - Gemfile
82
83
  - LICENSE
83
84
  - README.md
@@ -132,6 +133,7 @@ files:
132
133
  - spec/spec_helper.rb
133
134
  - spec/support/spec_config.yml.sample
134
135
  - spec/support/vcr.rb
136
+ - test.rb
135
137
  homepage: https://github.com/senseobservationsystems/commonsense-ruby-lib
136
138
  licenses: []
137
139
  metadata: {}