foaas-client 1.1.0 → 1.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,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 77d8ac1e17d5ff1344373bf4baf233db3d4365a3
4
- data.tar.gz: 6b7b6003f300a494b728083484bd100404407c7e
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MzhlNzE3NDczZDY4Yzc3OWNlNjc1MWQxZmUzMTFjY2Y1YjIwYTg2Yw==
5
+ data.tar.gz: !binary |-
6
+ MTE3MmJiNjUzMjM2MGFlZDVlZmM1YTEzOWNjYTMyMWZiYTRkZDNhNQ==
5
7
  SHA512:
6
- metadata.gz: d92c5e52eb9cbd346c2bbc3d1722a3db7df7ac851a5c60346490a87289df1fdccc736f739b3029591940fa6d285f3892d7bf7809523609bb23089b99fb8aa98a
7
- data.tar.gz: 0bedf1e04724ad903ecc05762e446ed4f343ae995b0b2a9cd624b6e0ce7e16af124c5f01428f88e7d3ff6f3245a1f93cd2008abd0e060d68681ec2efa3c2cecb
8
+ metadata.gz: !binary |-
9
+ YTI0YTI4OWUyOTllZTNhYjRlMWRhZTI2MjcwMzU1Zjg1ZTJkYWY1ZjhjODg2
10
+ OTUwNWRhYTNiOTBkNWVhMDcwNTM0OTBiOWZlMTk4MGFlYmI5ZjZlOWZkODM4
11
+ OTdlODhkYzExZjIzMzc2NGZlZmVhNDQ3ZWMyZWViNWVkMjA2NzM=
12
+ data.tar.gz: !binary |-
13
+ MmRkMWRhOGY1ZGFhNWNjN2E3N2YxMzI0YTRiOWQ4ZTAzMTc2ODAxZjBjYWZm
14
+ MTQ3OGIxNDZlZGVhNjkxZmI4NjJlZjdhZjZkMGMyOWIxM2E0MGNkYTliYzhj
15
+ NDJhZTI4N2I1MmZkOWQ0MmM4MWY0YzRmNjRlYWNhOGZlYjRlZGY=
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.2.0
4
+
5
+ * Implement the following FOAAS methods:
6
+ * Dalton
7
+ * Refactor the way the JSONP callback parameter is added to the FOAAS url
8
+ * Add support for i18n parameter
9
+ * Add support for shoutcloud parameter
10
+
3
11
  ## v1.1.0
4
12
 
5
13
  * Fix example for JSONP response type (typo: `\` instead of `"`)
data/README.md CHANGED
@@ -7,7 +7,7 @@ A client for [FOAAS](http://foaas.com).
7
7
 
8
8
  ## API Version
9
9
 
10
- Version `0.1.2` of the FOAAS API is supported.
10
+ Version `0.1.4` of the FOAAS API is supported.
11
11
 
12
12
  ## Usage
13
13
 
@@ -20,6 +20,13 @@ fuck = Foaas::Client.new
20
20
  fuck.off('Bob', 'Alice')
21
21
  ```
22
22
 
23
+ ### i18n
24
+
25
+ ```ruby
26
+ fuck.off('Bob', 'Alice', i18n: :es)
27
+ #=> { 'message': 'Vete a la mierda, Bob.', 'subtitle': '-Alice' }
28
+ ```
29
+
23
30
  ### Response Types
24
31
 
25
32
  ```ruby
@@ -39,6 +46,13 @@ fuck.off('Bob', 'Alice', :xml)
39
46
  #=> '<?xml version="1.0" encoding="utf-8"?>...'
40
47
  ```
41
48
 
49
+ ### Shoutcloud
50
+
51
+ ```ruby
52
+ fuck.off('Bob', 'Alice', shoutcloud: true)
53
+ #=> { 'message': 'FUCK OFF, BOB', 'subtitle': '- ALICE' }
54
+ ```
55
+
42
56
  ### Methods
43
57
 
44
58
  ### Awesome
@@ -97,6 +111,13 @@ fuck.cool('Alice')
97
111
  #=> { 'message' => 'Cool story, Bro', '- Alice' }
98
112
  ```
99
113
 
114
+ ### Dalton
115
+
116
+ ```ruby
117
+ fuck.dalton('Bob', 'Alice')
118
+ #=> { 'msessage' => 'Bob: A fucking problem solving super-hero', 'subtitle' => '- Alice' }
119
+ ```
120
+
100
121
  #### Diabetes
101
122
 
102
123
  ```ruby
@@ -8,18 +8,20 @@ module Foaas
8
8
  URL = Addressable::Template.new("http://foaas.com/{method}{/name}/{from}{/other}")
9
9
 
10
10
  METHODS_ONE_PARAM = [:awesome, :because, :bye, :cool, :diabetes, :everyone, :everything, :fascinating, :flying, :life, :pink, :thanks, :this, :what]
11
- METHODS_TWO_PARAMS = [:bus, :donut, :caniuse, :chainsaw, :king, :linus, :madison, :nugget, :off, :outside, :shakespeare, :you, :xmas, :yoda]
11
+ METHODS_TWO_PARAMS = [:bus, :donut, :caniuse, :chainsaw, :dalton, :king, :linus, :madison, :nugget, :off, :outside, :shakespeare, :you, :xmas, :yoda]
12
12
  METHODS_THREE_PARAMS = [:ballmer, :field]
13
13
 
14
14
  def method_missing(sym, *args, &block)
15
+ kwargs = {}
16
+ kwargs = args[-1] if args[-1].class == Hash
15
17
  if METHODS_TWO_PARAMS.include? sym
16
- make_request(URL.expand(method: sym, name: args[0], from: args[1]), args[2])
18
+ make_request(URL.expand(method: sym, name: args[0], from: args[1]), args[2], i18n=kwargs[:i18n], shoutcloud=kwargs[:shoutcloud])
17
19
  elsif METHODS_ONE_PARAM.include? sym
18
- make_request(URL.expand(method: sym, from: args[0]), args[1])
20
+ make_request(URL.expand(method: sym, from: args[0]), args[1], i18n=kwargs[:i18n], shoutcloud=kwargs[:shoutcloud])
19
21
  elsif METHODS_THREE_PARAMS.include? sym
20
- make_request(URL.expand(method: sym, name: args[0], from: args[1], other: args[2]), args[3])
22
+ make_request(URL.expand(method: sym, name: args[0], from: args[1], other: args[2]), args[3], i18n=kwargs[:i18n], shoutcloud=kwargs[:shoutcloud])
21
23
  elsif sym == :thing
22
- make_request(URL.expand(method: args[0], from: args[1]), args[2])
24
+ make_request(URL.expand(method: args[0], from: args[1]), args[2], i18n=kwargs[:i18n], shoutcloud=kwargs[:shoutcloud])
23
25
  else
24
26
  super(sym, *args, &block)
25
27
  end
@@ -39,7 +41,8 @@ module Foaas
39
41
 
40
42
  private
41
43
 
42
- def make_request(url, type)
44
+ def make_request(url, type, i18n=nil, shoutcloud=false)
45
+ query_params = {}
43
46
  url = url.to_s
44
47
  accept_type = case type
45
48
  when nil
@@ -47,11 +50,30 @@ module Foaas
47
50
  when :text
48
51
  'text/plain'
49
52
  when :jsonp
50
- url += '?callback=fuck'
53
+ query_params['callback'] = 'fuck'
51
54
  :json
52
55
  else
53
56
  type
54
57
  end
58
+
59
+ if i18n
60
+ query_params['i18n'] = i18n
61
+ end
62
+
63
+ if shoutcloud
64
+ query_params['shoutcloud'] = nil
65
+ end
66
+
67
+ if not query_params.empty?
68
+ url += '?' + query_params.map do |k,v|
69
+ if v
70
+ "#{k}=#{v}"
71
+ else
72
+ k.to_s
73
+ end
74
+ end.join('&')
75
+ end
76
+
55
77
  response = RestClient.get url, { accept: accept_type }
56
78
  response = JSON.parse(response) if type.nil?
57
79
  response
@@ -1,3 +1,3 @@
1
1
  module Foaas
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.0'
3
3
  end
@@ -24,6 +24,28 @@ describe Foaas::Client do
24
24
 
25
25
  let(:url) { "http://foaas.com/#{method}/#{name}/#{from}/#{other}" }
26
26
 
27
+ context 'i18n specified' do
28
+ let(:accept) { :json }
29
+ let(:i18n) { 'es' }
30
+
31
+ let(:url) { "http://foaas.com/#{method}/#{name}/#{from}/#{other}?i18n=es" }
32
+
33
+ it 'sets the i18n parameter on the url' do
34
+ client.send(method, name, from, other, type, i18n: i18n)
35
+ end
36
+ end
37
+
38
+ context 'shoutcloud specified' do
39
+ let(:accept) { :json }
40
+ let(:shoutcloud) { true }
41
+
42
+ let(:url) { "http://foaas.com/#{method}/#{name}/#{from}/#{other}?shoutcloud" }
43
+
44
+ it 'sets the shoutcloud parameter on the url' do
45
+ client.send(method, name, from, other, type, shoutcloud: true)
46
+ end
47
+ end
48
+
27
49
  context 'type is' do
28
50
 
29
51
  context 'not specified' do
@@ -117,6 +139,28 @@ describe Foaas::Client do
117
139
 
118
140
  let(:url) { "http://foaas.com/#{method}/#{name}/#{from}" }
119
141
 
142
+ context 'i18n specified' do
143
+ let(:accept) { :json }
144
+ let(:i18n) { 'es' }
145
+
146
+ let(:url) { "http://foaas.com/#{method}/#{name}/#{from}?i18n=es" }
147
+
148
+ it 'sets the i18n parameter on the url' do
149
+ client.send(method, name, from, type, i18n: i18n)
150
+ end
151
+ end
152
+
153
+ context 'shoutcloud specified' do
154
+ let(:accept) { :json }
155
+ let(:shoutcloud) { true }
156
+
157
+ let(:url) { "http://foaas.com/#{method}/#{name}/#{from}?shoutcloud" }
158
+
159
+ it 'sets the shoutcloud parameter on the url' do
160
+ client.send(method, name, from, type, shoutcloud: true)
161
+ end
162
+ end
163
+
120
164
  context 'type is' do
121
165
 
122
166
  context 'not specified' do
@@ -207,6 +251,28 @@ describe Foaas::Client do
207
251
  let(:from) { 'from' }
208
252
  let(:type) { nil }
209
253
 
254
+ context 'i18n specified' do
255
+ let(:accept) { :json }
256
+ let(:i18n) { 'es' }
257
+
258
+ let(:url) { "http://foaas.com/#{method}/#{from}?i18n=es" }
259
+
260
+ it 'sets the i18n parameter on the url' do
261
+ client.send(method, from, type, i18n: i18n)
262
+ end
263
+ end
264
+
265
+ context 'shoutcloud specified' do
266
+ let(:accept) { :json }
267
+ let(:shoutcloud) { true }
268
+
269
+ let(:url) { "http://foaas.com/#{method}/#{from}?shoutcloud" }
270
+
271
+ it 'sets the shoutcloud parameter on the url' do
272
+ client.send(method, from, type, shoutcloud: true)
273
+ end
274
+ end
275
+
210
276
  context 'type is' do
211
277
 
212
278
  context 'not specified' do
@@ -294,6 +360,29 @@ describe Foaas::Client do
294
360
  let(:from) { 'from' }
295
361
  let(:type) { nil }
296
362
 
363
+ context 'i18n specified' do
364
+ let(:accept) { :json }
365
+ let(:i18n) { 'es' }
366
+
367
+ let(:url) { "http://foaas.com/#{thing}/#{from}?i18n=es" }
368
+
369
+ it 'sets the i18n parameter on the url' do
370
+ client.thing(thing, from, type, i18n: i18n)
371
+ end
372
+ end
373
+
374
+
375
+ context 'shoutcloud specified' do
376
+ let(:accept) { :json }
377
+ let(:shoutcloud) { true }
378
+
379
+ let(:url) { "http://foaas.com/#{thing}/#{from}?shoutcloud" }
380
+
381
+ it 'sets the shoutcloud parameter on the url' do
382
+ client.thing(thing, from, type, shoutcloud: true)
383
+ end
384
+ end
385
+
297
386
  context 'type is' do
298
387
 
299
388
  context 'not specified' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foaas-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Marsh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-17 00:00:00.000000000 Z
11
+ date: 2015-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -110,17 +110,17 @@ require_paths:
110
110
  - lib
111
111
  required_ruby_version: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - '>='
113
+ - - ! '>='
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
116
  required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - '>='
118
+ - - ! '>='
119
119
  - !ruby/object:Gem::Version
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.2.2
123
+ rubygems_version: 2.4.3
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: A client for FOAAS