expressive 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- expressive (0.0.5)
4
+ expressive (0.0.6)
5
5
  awesome_print (~> 1.0.2)
6
+ json
6
7
  polyglot (~> 0.3.3)
7
8
  rest-client (~> 1.6.7)
8
9
  treetop (~> 1.4.10)
@@ -26,6 +26,7 @@ Gem::Specification.new do |gem|
26
26
  gem.add_development_dependency "pry", "~> 0.9.10"
27
27
 
28
28
  gem.add_dependency "polyglot", "~> 0.3.3"
29
+ gem.add_dependency "json"
29
30
  gem.add_dependency "treetop", "~> 1.4.10"
30
31
  gem.add_dependency "awesome_print", "~> 1.0.2"
31
32
  gem.add_dependency "rest-client", "~> 1.6.7"
@@ -1,3 +1,3 @@
1
1
  module Expressive
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -1,4 +1,5 @@
1
1
  module Expressive
2
+ require 'json'
2
3
  class Scope
3
4
  def initialize(parent = {})
4
5
  @parent = parent
@@ -37,8 +38,8 @@ module Expressive
37
38
 
38
39
  class Webhook
39
40
 
40
- def initialize(verb, url, params)
41
- @verb, @url, @params = verb, url, params
41
+ def initialize(verb, url, params, headers)
42
+ @verb, @url, @params, @headers = verb, url, params, headers
42
43
  end
43
44
 
44
45
  def execute
@@ -48,11 +49,15 @@ module Expressive
48
49
  private
49
50
 
50
51
  def post
51
- RestClient.post(@url, @params)
52
+ headers = {:content_type => :json, :accept => :json}
53
+ headers = headers.merge(@headers) if @headers
54
+ RestClient.post(@url, @params.to_json, headers)
52
55
  end
53
56
 
54
57
  def get
55
- RestClient.get(@url, {params: @params})
58
+ headers = {:params => @params}
59
+ headers = headers.merge(@headers) if @headers
60
+ RestClient.get(@url, headers)
56
61
  end
57
62
 
58
63
  def put
@@ -104,14 +109,17 @@ module Expressive
104
109
 
105
110
  private
106
111
 
107
- #(post "http://example.com" name age other)
108
- #(get "http://example.com" "*")
112
+ #(post "http://example.com" "*" (headers "AUTH-TOKEN=13415") )
113
+ #(post "http://example.com" name email john smith (headers "AUTH-TOKEN=13415") )
109
114
 
110
115
  def perform_webhook(verb, scope, cells)
111
- url = cells.shift.text_value.gsub('"', '')
112
- params = create_webhook_parameters(scope, cells)
116
+ #convert cells to array so it can manipulated easily
117
+ cells_array = cells.map{|c| c.text_value.gsub('"', '')}
118
+ url = cells_array.shift
119
+ headers = create_webhook_headers(cells_array)
120
+ params = create_webhook_parameters(scope, cells_array)
113
121
  begin
114
- response = Webhook.new(verb, url, params).execute
122
+ response = Webhook.new(verb, url, params, headers).execute
115
123
  scope = scope.merge(response) if response.is_a?(Hash)
116
124
  rescue RestClient::Exception => e
117
125
  scope['_errors'] = e.message
@@ -119,12 +127,25 @@ module Expressive
119
127
  scope
120
128
  end
121
129
 
130
+ def create_webhook_headers(cells)
131
+ header_position = cells.index("headers")
132
+ return if header_position.nil?
133
+ headers = cells[header_position + 1..-1]
134
+ cells.delete("headers")
135
+ headers.each{|h| cells.delete(h)}
136
+ headers.inject({}) do |header, h|
137
+ idx = h.index("=")
138
+ header[h[0..(idx-1)]] = h[(idx+1)..-1]
139
+ header
140
+ end
141
+ end
142
+
122
143
  def create_webhook_parameters(scope, cells)
123
- if cells.first && cells.first.text_value.gsub('"', '') == '*'
144
+ if cells.first && cells.first == '*'
124
145
  scope.to_hash
125
146
  else
126
147
  cells.inject({}) do |params, key|
127
- params[key.text_value] = scope[key.text_value]
148
+ params[key] = scope[key]
128
149
  params
129
150
  end
130
151
  end
@@ -1,4 +1,3 @@
1
-
2
1
  require "spec_helper"
3
2
 
4
3
  describe "Expressive" do
@@ -127,6 +126,17 @@ describe "Expressive" do
127
126
  assert_requested(request)
128
127
  @scope['goodbye'].should eql 'srsly'
129
128
  end
129
+
130
+ it "should get with headers" do
131
+ @scope['ohai'] = "world"
132
+ @scope["monty"] = "python"
133
+ request = stub_request(:get, "www.example.com/?ohai=world&monty=python")
134
+ .with(:headers => {'Accept'=>'*/*; q=0.5, application/xml', 'Accept-Encoding'=>'gzip, deflate', 'User-Agent'=>'Ruby', "AUTH-TOKEN" => "123456"})
135
+ .to_return(body: {'goodbye' => 'srsly'})
136
+ Expressive.run('(get "http://www.example.com" "*" headers "AUTH-TOKEN=123456")', @scope)
137
+ assert_requested(request)
138
+ @scope['goodbye'].should eql 'srsly'
139
+ end
130
140
  end
131
141
 
132
142
  context "post" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expressive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-29 00:00:00.000000000 Z
12
+ date: 2012-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby_gntp
16
- requirement: &70261240748780 !ruby/object:Gem::Requirement
16
+ requirement: &70342459798500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.3.4
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70261240748780
24
+ version_requirements: *70342459798500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70261240748260 !ruby/object:Gem::Requirement
27
+ requirement: &70342459798000 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.11.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70261240748260
35
+ version_requirements: *70342459798000
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc
38
- requirement: &70261240747780 !ruby/object:Gem::Requirement
38
+ requirement: &70342459797500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.12'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70261240747780
46
+ version_requirements: *70342459797500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &70261240747100 !ruby/object:Gem::Requirement
49
+ requirement: &70342459796940 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '1.0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70261240747100
57
+ version_requirements: *70342459796940
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard
60
- requirement: &70261240746320 !ruby/object:Gem::Requirement
60
+ requirement: &70342459796300 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.3.2
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70261240746320
68
+ version_requirements: *70342459796300
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-rspec
71
- requirement: &70261240745320 !ruby/object:Gem::Requirement
71
+ requirement: &70342459795840 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.2.1
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70261240745320
79
+ version_requirements: *70342459795840
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: webmock
82
- requirement: &70261240744640 !ruby/object:Gem::Requirement
82
+ requirement: &70342459795380 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.8.11
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70261240744640
90
+ version_requirements: *70342459795380
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: pry
93
- requirement: &70261240743580 !ruby/object:Gem::Requirement
93
+ requirement: &70342459794860 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.9.10
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70261240743580
101
+ version_requirements: *70342459794860
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: polyglot
104
- requirement: &70261240742840 !ruby/object:Gem::Requirement
104
+ requirement: &70342459794300 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,21 @@ dependencies:
109
109
  version: 0.3.3
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *70261240742840
112
+ version_requirements: *70342459794300
113
+ - !ruby/object:Gem::Dependency
114
+ name: json
115
+ requirement: &70342459793820 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :runtime
122
+ prerelease: false
123
+ version_requirements: *70342459793820
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: treetop
115
- requirement: &70261240543280 !ruby/object:Gem::Requirement
126
+ requirement: &70342459792980 !ruby/object:Gem::Requirement
116
127
  none: false
117
128
  requirements:
118
129
  - - ~>
@@ -120,10 +131,10 @@ dependencies:
120
131
  version: 1.4.10
121
132
  type: :runtime
122
133
  prerelease: false
123
- version_requirements: *70261240543280
134
+ version_requirements: *70342459792980
124
135
  - !ruby/object:Gem::Dependency
125
136
  name: awesome_print
126
- requirement: &70261240541560 !ruby/object:Gem::Requirement
137
+ requirement: &70342459792000 !ruby/object:Gem::Requirement
127
138
  none: false
128
139
  requirements:
129
140
  - - ~>
@@ -131,10 +142,10 @@ dependencies:
131
142
  version: 1.0.2
132
143
  type: :runtime
133
144
  prerelease: false
134
- version_requirements: *70261240541560
145
+ version_requirements: *70342459792000
135
146
  - !ruby/object:Gem::Dependency
136
147
  name: rest-client
137
- requirement: &70261240540720 !ruby/object:Gem::Requirement
148
+ requirement: &70342459791520 !ruby/object:Gem::Requirement
138
149
  none: false
139
150
  requirements:
140
151
  - - ~>
@@ -142,7 +153,7 @@ dependencies:
142
153
  version: 1.6.7
143
154
  type: :runtime
144
155
  prerelease: false
145
- version_requirements: *70261240540720
156
+ version_requirements: *70342459791520
146
157
  description: Scheme-like language for manipulating CaseBlocks cases
147
158
  email:
148
159
  - ijonas@emergeadapt.com
@@ -184,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
195
  version: '0'
185
196
  segments:
186
197
  - 0
187
- hash: -3178828988294476295
198
+ hash: 1097799900527536520
188
199
  required_rubygems_version: !ruby/object:Gem::Requirement
189
200
  none: false
190
201
  requirements:
@@ -193,7 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
204
  version: '0'
194
205
  segments:
195
206
  - 0
196
- hash: -3178828988294476295
207
+ hash: 1097799900527536520
197
208
  requirements: []
198
209
  rubyforge_project:
199
210
  rubygems_version: 1.8.15