stretchr 1.2.3 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 345f38d76260c36717e9fdf93fbe3a0af6b75c49
4
- data.tar.gz: 897c1b27963bc857527a7551f24159c872f27596
3
+ metadata.gz: 8e5b8e89dbf9d5bf8df7927c8f871b03af916b64
4
+ data.tar.gz: cf85a4a1530398710152a48e13b209b5bc6423bb
5
5
  SHA512:
6
- metadata.gz: 08c0b14d97c11a8dbf60095a1c2fb32135bf47a33444b914ef33dbcde6b9c292ab5f6223c84e4a85454fafbfcf34ad7c794cb05eb0a513f5c8bbcba9ab266b8c
7
- data.tar.gz: dc249cc25a034d36287655bfdfcc7db3efcf5260684ef0848caa0c0c2f9958c5b621b574c9759e925a6f575c2db0721ca4556640b3a985a59b071bed11a4066b
6
+ metadata.gz: e16c6f1fe0b43049f6c0b0bfb0bb7152fb63fc6bd5951c5ec004132f00151bb085b36b28450980835bf29f85dc0557a93cbc1163deb48d01b7b90bb41dfd383b
7
+ data.tar.gz: b497813de26adfe3fc462d6786f6ab72b50ac3e746fa1097adfd520d5ea61ce4309a3a249b104c0ea360946433795f889838d88c6cd76ed71177954d11640808
@@ -1,6 +1,6 @@
1
1
  module Stretchr
2
2
  class Client
3
- attr_accessor :transporter, :api_version, :project, :key, :hostname
3
+ attr_accessor :transporter, :api_version, :project, :key, :hostname, :account
4
4
  # Initializes a new stretchr client
5
5
  # This is the main entrypoint into working with stretchr
6
6
  #
@@ -15,6 +15,7 @@ module Stretchr
15
15
  self.project = options[:project]
16
16
  self.key = options[:key]
17
17
  self.hostname = options[:hostname] || Stretchr.config["hostname"]
18
+ self.account = options[:account]
18
19
  end
19
20
 
20
21
  # Catches everything you can throw at client and passes it on to a new request object
@@ -32,7 +32,7 @@ module Stretchr
32
32
 
33
33
  # Builds a URI object
34
34
  def to_uri
35
- URI::HTTP.build(host: merge_host, path: merge_path, query: merge_query)
35
+ URI::HTTPS.build(host: merge_host, path: merge_path, query: merge_query)
36
36
  end
37
37
 
38
38
  # Set params for the url
@@ -171,11 +171,21 @@ module Stretchr
171
171
  return self
172
172
  end
173
173
 
174
+ # Set the path directly without having to go through it piece by piece
175
+ #
176
+ # ==== Examples
177
+ # r= Stretchr::Request.new
178
+ # r.at("people/1/cars").path #=> "people/1/cars"
179
+ def at(path)
180
+ @path_elements += path.split("/")
181
+ return self
182
+ end
183
+
174
184
  private
175
185
 
176
186
  # Merges the path from the @path_elements
177
187
  def merge_path
178
- "/api/#{client.api_version}/#{@path_elements.join('/')}"
188
+ "/api/#{client.api_version}/#{client.project}/#{@path_elements.join('/')}"
179
189
  end
180
190
 
181
191
  # Merges query params and filter params
@@ -188,7 +198,7 @@ module Stretchr
188
198
 
189
199
  # Generate the host from the hostname and project
190
200
  def merge_host
191
- "#{client.project}.#{client.hostname}"
201
+ "#{client.account}.#{client.hostname}"
192
202
  end
193
203
  end
194
204
  end
@@ -1,5 +1,7 @@
1
1
  require "uri" if !defined? URI
2
2
  require "net/http" if !defined? Net
3
+ require "json" if !defined? JSON
4
+
3
5
  module Stretchr
4
6
  class JSONTransporter
5
7
  # Perform the request against stretchr
@@ -8,7 +10,11 @@ module Stretchr
8
10
  # Expects: {uri: URIOBJECT, body: "body", method: "PUT/PATCH/POST/DELETE/GET", client: stretchr client}
9
11
  def make_request(request)
10
12
  response = nil
11
- Net::HTTP.start(request[:uri].host, request[:uri].port) do |http|
13
+
14
+ #convert to a json string unless the user already did it...
15
+ request[:body] = request[:body].to_json unless request[:body].is_a?(String)
16
+
17
+ Net::HTTP.start(request[:uri].host, request[:uri].port, {use_ssl: true}) do |http|
12
18
  http_request = generate_request(request)
13
19
  response = http.request http_request # Net::HTTPResponse object
14
20
  end
data/test/test_client.rb CHANGED
@@ -31,6 +31,11 @@ describe "Client" do
31
31
  assert_equal stretchr, r.client, "Should have passed the client into the request"
32
32
  end
33
33
 
34
+ it "Shoudl let me specify the account" do
35
+ stretchr = Stretchr::Client.new({account: "ryan"})
36
+ assert_equal "ryan", stretchr.account, "Should have let me set the account"
37
+ end
38
+
34
39
  it "Should have a default api_version" do
35
40
  stretchr = Stretchr::Client.new
36
41
  assert stretchr.api_version, "Should have set a default api version"
data/test/test_request.rb CHANGED
@@ -8,9 +8,9 @@ describe "Request Object" do
8
8
  end
9
9
 
10
10
  it "Should know how to build a complete url including path" do
11
- c = Stretchr::Client.new({project: "project", api_version: "v1.1"})
11
+ c = Stretchr::Client.new({account: "account", project: "project", api_version: "v1.1"})
12
12
  r = Stretchr::Request.new({client: c})
13
- assert_equal "http://project.stretchr.com/api/v1.1/people/1/cars", r.people(1).cars.to_url, "Should have built the url properly"
13
+ assert_equal "https://account.stretchr.com/api/v1.1/project/people/1/cars", r.people(1).cars.to_url, "Should have built the url properly"
14
14
  end
15
15
 
16
16
  it "Should let you pass in params" do
@@ -108,11 +108,11 @@ describe "Request Object" do
108
108
 
109
109
  it "should pass the correct uri to the transporter" do
110
110
  t = Stretchr::TestTransporter.new
111
- c = Stretchr::Client.new({project: "project", api_version: "v1.1", transporter: t})
111
+ c = Stretchr::Client.new({account: "account", project: "project", api_version: "v1.1", transporter: t})
112
112
  r = Stretchr::Request.new({client: c})
113
113
  r.people.get
114
- assert_equal "http://project.stretchr.com/api/v1.1/people", r.to_url, "Should have saved the right url in the request"
115
- assert_equal "http://project.stretchr.com/api/v1.1/people", t.requests.first[:uri].to_s, "Should have created the right URL and sent it to the transporter"
114
+ assert_equal "https://account.stretchr.com/api/v1.1/project/people", r.to_url, "Should have saved the right url in the request"
115
+ assert_equal "https://account.stretchr.com/api/v1.1/project/people", t.requests.first[:uri].to_s, "Should have created the right URL and sent it to the transporter"
116
116
  end
117
117
 
118
118
  it "Should know how to handle paging" do
@@ -181,4 +181,10 @@ describe "Request Object" do
181
181
  r.people.delete
182
182
  assert_equal :delete, t.requests[1][:method], "Should have performed a delete request"
183
183
  end
184
+
185
+ it "Should let me set the path manually" do
186
+ c = Object.new
187
+ r = Stretchr::Request.new({client: c})
188
+ assert_equal "people/1/cars", r.at("people/1/cars").path, "Should have set the path completely"
189
+ end
184
190
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stretchr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Quinn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-27 00:00:00.000000000 Z
11
+ date: 2014-01-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A gem for interacting with your stretchr data
14
14
  email: ryan@mazondo.com