client 0.0.6 → 0.0.7

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: eba14d73f113db9db150c478566abb59ac2c4905
4
- data.tar.gz: bdc321714d4c6baed1a846c8ac07585486f52117
3
+ metadata.gz: d902e6cc8f1fc09b8bc03c1686c741c23fe82fa8
4
+ data.tar.gz: a180e712414555650e2ba56afb0fa78073d9a5ef
5
5
  SHA512:
6
- metadata.gz: ce3bc4a69a7eed6c62a7352419c5945bd35e4734f6ea2da1943d48b680d4d190105c5209e171e37118b7632c1ae74084aef2bc51d15f843bed679472f8f040e0
7
- data.tar.gz: 3cba3ac3957b1b932d2fdfd132b6876332b8b34117dc9b793b39e80c1f526f6e278fedc4a4d845599ae60974cff5016c0858193edfffd98d105a52dbee8340d3
6
+ metadata.gz: eb1fbd425455a311343c5b472351c2b45cc26b0f28cd4e5b24a9269574a2fdafe5eb05b29b5fc8c6b53075685d93e6af793ebaac8da427bdd2c99ec382871b97
7
+ data.tar.gz: 092d2c47fb15a752480e7f768fa7e4fd507076d6a36e230f83bed5a40bd7d9b0103edfd40c56ccc80b03cdcaed5cf08f170c0fd13632f4d543132af86fd37d15
data/README.md CHANGED
@@ -21,15 +21,26 @@ The yaml should look something like this:
21
21
 
22
22
  ```yml
23
23
  google:
24
- endpoint: 'http://www.google.com'
24
+ base_uri: 'http://www.google.com'
25
+ twitter:
26
+ base_uri: 'http://www.twitter.com'
25
27
  ```
26
28
 
27
29
  This will generate a rest client for you to perform post and gets and return NET/http responses:
28
30
 
29
31
  ```ruby
30
32
  require 'client'
31
- Client::Google.get 'search', {q: 'bonzofenix gem client'}
33
+ Client::Google.get 'search', query: {q: 'bonzofenix gem client'}
32
34
  #This should perform a GET to http://www.google.com/search?q=bonzofenix+gem+client
35
+
36
+ #Some rest magic too:
37
+
38
+ Client::Twitter.list_tweets(user_id: 2) #also try find_
39
+ #This should perform a GET to http://www.twitter.com/tweets?user_id=bonzofenix+gem+client
40
+
41
+ Client::Twitter.destroy_tweets(id: 3) #also try remove_ delete_
42
+ #This should perform a DELETE to http://www.twitter.com/tweets/3
43
+
33
44
  ```
34
45
 
35
46
  You can also load specific yml files:
@@ -1,5 +1,6 @@
1
1
  require 'client/version'
2
2
  require 'net/http'
3
+ require 'httparty'
3
4
  require 'logger'
4
5
  require 'yaml'
5
6
 
@@ -22,59 +23,19 @@ end
22
23
  class Client
23
24
  class Base
24
25
  class << self
25
- attr_accessor :endpoint
26
-
27
- def perform(method, resource, params = nil)
28
- case method
29
- when :get
30
- api.get(resource)
31
- when :post
32
- api.post(resource, www_params)
33
- when :delete
34
- api.delete(resource)
35
- end.tap do |r|
36
- logger.info "Client::Base performed: #{method} to #{uri.to_s} \
37
- params: #{params} got: #{r.inspect} code: #{r.code}"
38
- end
39
- end
40
-
41
- def post(resource, params)
42
- @params = params
43
- perform(:post, resource)
44
- end
45
-
46
- def get(resource, params = nil)
47
- perform(:get ,resource, params)
48
- end
49
-
50
- def logger
51
- Client.logger
52
- end
26
+ # logger.info "Client::Base performed: #{method} to #{uri.to_s} \
27
+ # params: #{params} got: #{r.inspect} code: #{r.code}"
53
28
 
54
29
  def method_missing(m, *args, &block)
30
+ warn m
55
31
  action, path = m.to_s.match(/(^[^_]+(?=_))_(.+)/).captures
56
- @params = args.first
32
+ params = args.first
57
33
  case action
58
34
  when *%w{find list}
59
- perform(:get, "/#{path}?#{www_params}")
35
+ self.get("/#{path}", query: params )
60
36
  when *%w{delete remove destroy}
61
- perform(:delete, "/#{path}/#{@params}")
37
+ self.delete("/#{path}/#{params}")
62
38
  end
63
-
64
-
65
- end
66
-
67
- private
68
-
69
- def www_params
70
- URI.encode_www_form(@params) if @params
71
- end
72
- def uri
73
- URI(endpoint)
74
- end
75
-
76
- def api
77
- Net::HTTP.new(uri)
78
39
  end
79
40
  end
80
41
  end
@@ -97,19 +58,21 @@ class Client
97
58
  warn '''Check that you have an client.env file in your project with
98
59
  the following entry.
99
60
  gitlab:
100
- endpoint: http://gitlab.com/api/v3/
61
+ base_uri: http://gitlab.com/api/v3/
101
62
  other_server:
102
- endpoint: other_endpoint.com
63
+ base_uri: other_endpoint.com
103
64
  '''
104
65
  {}
105
66
  end
106
67
  generate_clients
107
68
  end
108
69
 
70
+ private
109
71
  def generate_clients
110
72
  clients.each do |name, info|
111
73
  Class.new(Base) do
112
- self.endpoint = info.fetch('endpoint')
74
+ include HTTParty
75
+ base_uri info.fetch('base_uri')
113
76
  end.tap do |client_class|
114
77
  const_set(name.camelize, client_class)
115
78
  end
@@ -1,3 +1,3 @@
1
1
  class Client
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
@@ -17,11 +17,17 @@ describe Client do
17
17
  end
18
18
 
19
19
  it 'perform a post' do
20
- Client::Twitter.post('/tweet', {id: '1', text: 'wtf'})
20
+ Client::Twitter.post('/tweet',body: {id: '1', text: 'wtf'})
21
21
  WebMock.should have_requested(:post, 'http://twitter.com/tweet')
22
22
  .with { |req| req.body == 'id=1&text=wtf' }
23
23
  end
24
24
 
25
+ it 'perform a get with params' do
26
+ Client::Twitter.get('/tweet', query: {id: 10})
27
+
28
+ WebMock.should have_requested(:get, 'http://twitter.com/tweet?id=10')
29
+ end
30
+
25
31
  it 'perform a get' do
26
32
  Client::Twitter.get('/tweet')
27
33
  WebMock.should have_requested(:get, 'http://twitter.com/tweet')
@@ -35,7 +41,7 @@ describe Client do
35
41
  end
36
42
 
37
43
  %w{delete remove destroy}.each do |action|
38
- it "perform a delete with the params for #{action}" do
44
+ it "perform a delete with params for #{action}" do
39
45
  Client::Twitter.send("#{action}_tweet", 1)
40
46
  WebMock.should have_requested(:delete, 'http://twitter.com/tweet/1')
41
47
  end
@@ -1,2 +1,2 @@
1
1
  random_client:
2
- endpoint: 'www.google.com'
2
+ base_uri: 'www.google.com'
@@ -1,2 +1,2 @@
1
1
  twitter:
2
- endpoint: twitter.com
2
+ base_uri: http://twitter.com
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - bonzofenix
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-05 00:00:00.000000000 Z
11
+ date: 2013-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty