expressive 0.0.5 → 0.0.6

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.
@@ -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