remotr 0.0.2 → 0.1.0

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: fa3338323e20475acdafb664d9653e97ae8079f8
4
- data.tar.gz: 8e7bb12c942214fd8286fea3398497d16980291d
3
+ metadata.gz: 023a964c8e31c565831c7ca2d10b2c3528fdf144
4
+ data.tar.gz: 6effcc6e8e85fefd9c68a8c2599fb32fcef3a019
5
5
  SHA512:
6
- metadata.gz: 39400293b478e483f564e3ca2f691b86b9b2dbaae25b369c62b40c32597432e1af4cb05f2c11b7d786df15d08febd9efc9263bdf713638342be30ce849c3a030
7
- data.tar.gz: c97885b428f64e0cd7773ee7b1445d6c3192570a2dd7473e72a61504b1875535fdfe7076a7af0a4d88b7f253cfb605739787ed1c514ace4506cebefb80d05f7c
6
+ metadata.gz: d16effe2c9b2a8c4a786f567f0b2b1486f04f926a53ee1dbb6d4ea347672d25f55ed8859014222c0b35e7d264f1aeb0efae11f8c627ec42f171812fff8e3ae1f
7
+ data.tar.gz: 13446fc8003d0c9ddbce0e2e92defafb7c5e118ea4f8380039b46a739e30327b90983bd22e6f9375f84a14a92eb260965a69c783407639c091fac0e471526e6d
data/lib/remotr.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  require 'remotr/configurable'
2
2
  require 'remotr/configuration'
3
3
  require 'remotr/respondable'
4
+ require 'remotr/test_helpers'
@@ -25,7 +25,7 @@ module Remotr
25
25
  end
26
26
 
27
27
  def post(path = {}, params = {}, body = nil)
28
- request :post, path, params
28
+ request :post, path, params, body
29
29
  end
30
30
 
31
31
  def delete(path = {}, params = {})
@@ -33,17 +33,19 @@ module Remotr
33
33
  end
34
34
 
35
35
  def put(path = {}, params = {}, body = nil)
36
- request :put, path, params
36
+ request :put, path, params, body
37
37
  end
38
38
 
39
- def request(method, path, params, body = nil)
40
- url = URI.join(config.base_uri, "#{config.base_path}#{path}").to_s
41
- fail ArgumentError unless %w( get post delete put update ).include? method.to_s
39
+ def request(method, path, params = {}, body = nil)
40
+ path = "#{config.base_path}#{path}"
41
+ token = Signature::Token.new application, config.api_key
42
+ request = Signature::Request.new method.to_s.upcase, path, params
43
+ auth_hash = request.sign token
44
+ query_params = params.merge auth_hash
45
+ url = URI.join(config.base_uri, path).to_s
42
46
 
43
- HTTParty.send method, url,
44
- query: params,
45
- headers: { 'Accept' => 'application/json' },
46
- basic_auth: { username: 'api', password: config.api_key }
47
+ fail ArgumentError unless %w( get post delete put update ).include? method.to_s
48
+ HTTParty.send method, url, query: query_params, body: body, headers: { 'Accept' => 'application/json' }
47
49
  end
48
50
 
49
51
  def respond_with(httparty_response, custom_namespace = nil)
@@ -0,0 +1,42 @@
1
+ module Remotr
2
+ module Test
3
+ module Helpers
4
+
5
+ def redirect_httparty_to_rails_stack
6
+ redirect_httparty :get
7
+ redirect_httparty :post
8
+ end
9
+
10
+ private
11
+
12
+ def redirect_httparty(method)
13
+ allow(HTTParty).to receive(method) do |url, options|
14
+ logger.warn "RSpec caught an outgoint HTTParty request to #{url.inspect} and re-routes it back into the Rails integration test framework..."
15
+
16
+ url = URI.parse url
17
+ # Why would you send requests to anywhere else but TLS encrypted and to something.example.com in the test environment?
18
+ expect(url.host).to include '.example.com'
19
+ expect(url.scheme).to eq 'https'
20
+
21
+ if options[:basic_auth].present?
22
+ options[:headers]['HTTP_AUTHORIZATION'] = "Basic " + Base64::encode64("#{options[:basic_auth][:username]}:#{options[:basic_auth][:password]}")
23
+ end
24
+
25
+ case method
26
+ when :post
27
+ query_string = options[:query].to_query.present? ? "?#{options[:query].to_query}" : nil
28
+ send method, "#{url.path}#{query_string}", options[:body], options[:headers]
29
+ when :get
30
+ send method, url.path, options[:query], options[:headers]
31
+ else
32
+ fail NotImplementedError
33
+ end
34
+
35
+ parsed_response = JSON.parse(response.body) rescue nil
36
+ OpenStruct.new code: response.code.to_i, parsed_response: parsed_response
37
+ end
38
+ end
39
+
40
+ end
41
+ end
42
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remotr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bukowskis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-21 00:00:00.000000000 Z
11
+ date: 2014-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -119,6 +119,7 @@ files:
119
119
  - lib/remotr/configurable.rb
120
120
  - lib/remotr/configuration.rb
121
121
  - lib/remotr/respondable.rb
122
+ - lib/remotr/test_helpers.rb
122
123
  homepage: https://github.com/bukowskis/remotr
123
124
  licenses: []
124
125
  metadata: {}
@@ -141,6 +142,6 @@ rubyforge_project:
141
142
  rubygems_version: 2.2.2
142
143
  signing_key:
143
144
  specification_version: 4
144
- summary: Wrapping HTTParty for our internal APIs
145
+ summary: Wrapping HTTParty
145
146
  test_files: []
146
147
  has_rdoc: