jirafe 0.8.1 → 1.0.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.
@@ -0,0 +1,594 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://data.jirafe.dev/piwik.php?
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: !binary |-
14
+ T0s=
15
+ headers:
16
+ !binary "U2VydmVy":
17
+ - !binary |-
18
+ bmdpbngvMS4yLjI=
19
+ !binary "RGF0ZQ==":
20
+ - !binary |-
21
+ VGh1LCAyMCBTZXAgMjAxMiAxNTo0NTo1MyBHTVQ=
22
+ !binary "Q29udGVudC1UeXBl":
23
+ - !binary |-
24
+ aW1hZ2UvZ2lm
25
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
26
+ - !binary |-
27
+ Y2h1bmtlZA==
28
+ !binary "Q29ubmVjdGlvbg==":
29
+ - !binary |-
30
+ a2VlcC1hbGl2ZQ==
31
+ !binary "S2VlcC1BbGl2ZQ==":
32
+ - !binary |-
33
+ dGltZW91dD0xMA==
34
+ !binary "WC1Qb3dlcmVkLUJ5":
35
+ - !binary |-
36
+ UEhQLzUuMy4xNQ==
37
+ !binary "Q2FjaGUtQ29udHJvbA==":
38
+ - !binary |-
39
+ bm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZQ==
40
+ !binary "RXhwaXJlcw==":
41
+ - !binary |-
42
+ U2F0LCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQ=
43
+ !binary "Q29udGVudC1MZW5naHQ=":
44
+ - !binary |-
45
+ NDM=
46
+ body:
47
+ encoding: ASCII-8BIT
48
+ string: !binary |-
49
+ R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
50
+ http_version:
51
+ recorded_at: Thu, 20 Sep 2012 15:45:53 GMT
52
+ - request:
53
+ method: get
54
+ uri: http://data.jirafe.dev/piwik.php?items=&revenue=&site_id=&visitor=
55
+ body:
56
+ encoding: US-ASCII
57
+ string: ''
58
+ headers: {}
59
+ response:
60
+ status:
61
+ code: 200
62
+ message: !binary |-
63
+ T0s=
64
+ headers:
65
+ !binary "U2VydmVy":
66
+ - !binary |-
67
+ bmdpbngvMS4yLjI=
68
+ !binary "RGF0ZQ==":
69
+ - !binary |-
70
+ VGh1LCAyMCBTZXAgMjAxMiAxNTo0OTo0NyBHTVQ=
71
+ !binary "Q29udGVudC1UeXBl":
72
+ - !binary |-
73
+ aW1hZ2UvZ2lm
74
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
75
+ - !binary |-
76
+ Y2h1bmtlZA==
77
+ !binary "Q29ubmVjdGlvbg==":
78
+ - !binary |-
79
+ a2VlcC1hbGl2ZQ==
80
+ !binary "S2VlcC1BbGl2ZQ==":
81
+ - !binary |-
82
+ dGltZW91dD0xMA==
83
+ !binary "WC1Qb3dlcmVkLUJ5":
84
+ - !binary |-
85
+ UEhQLzUuMy4xNQ==
86
+ !binary "Q2FjaGUtQ29udHJvbA==":
87
+ - !binary |-
88
+ bm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZQ==
89
+ !binary "RXhwaXJlcw==":
90
+ - !binary |-
91
+ U2F0LCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQ=
92
+ !binary "Q29udGVudC1MZW5naHQ=":
93
+ - !binary |-
94
+ NDM=
95
+ body:
96
+ encoding: ASCII-8BIT
97
+ string: !binary |-
98
+ R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
99
+ http_version:
100
+ recorded_at: Thu, 20 Sep 2012 15:49:47 GMT
101
+ - request:
102
+ method: get
103
+ uri: http://data.jirafe.dev/piwik.php?cid=&ec_items=&idsite=&revenue=
104
+ body:
105
+ encoding: US-ASCII
106
+ string: ''
107
+ headers: {}
108
+ response:
109
+ status:
110
+ code: 200
111
+ message: !binary |-
112
+ T0s=
113
+ headers:
114
+ !binary "U2VydmVy":
115
+ - !binary |-
116
+ bmdpbngvMS4yLjI=
117
+ !binary "RGF0ZQ==":
118
+ - !binary |-
119
+ VGh1LCAyMCBTZXAgMjAxMiAxNTo1MDo1NCBHTVQ=
120
+ !binary "Q29udGVudC1UeXBl":
121
+ - !binary |-
122
+ aW1hZ2UvZ2lm
123
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
124
+ - !binary |-
125
+ Y2h1bmtlZA==
126
+ !binary "Q29ubmVjdGlvbg==":
127
+ - !binary |-
128
+ a2VlcC1hbGl2ZQ==
129
+ !binary "S2VlcC1BbGl2ZQ==":
130
+ - !binary |-
131
+ dGltZW91dD0xMA==
132
+ !binary "WC1Qb3dlcmVkLUJ5":
133
+ - !binary |-
134
+ UEhQLzUuMy4xNQ==
135
+ !binary "Q2FjaGUtQ29udHJvbA==":
136
+ - !binary |-
137
+ bm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZQ==
138
+ !binary "RXhwaXJlcw==":
139
+ - !binary |-
140
+ U2F0LCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQ=
141
+ !binary "Q29udGVudC1MZW5naHQ=":
142
+ - !binary |-
143
+ NDM=
144
+ body:
145
+ encoding: ASCII-8BIT
146
+ string: !binary |-
147
+ R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
148
+ http_version:
149
+ recorded_at: Thu, 20 Sep 2012 15:50:54 GMT
150
+ - request:
151
+ method: get
152
+ uri: http://data.jirafe.dev/piwik.php?cid=&ec_items%5B0%5D=%5B123,%22Widget1%22,%22things%22,%2245.1200%22,2%5D&idsite=1&revenue=45.12
153
+ body:
154
+ encoding: US-ASCII
155
+ string: ''
156
+ headers: {}
157
+ response:
158
+ status:
159
+ code: 200
160
+ message: !binary |-
161
+ T0s=
162
+ headers:
163
+ !binary "U2VydmVy":
164
+ - !binary |-
165
+ bmdpbngvMS4yLjI=
166
+ !binary "RGF0ZQ==":
167
+ - !binary |-
168
+ VGh1LCAyMCBTZXAgMjAxMiAxNjowNDoxNyBHTVQ=
169
+ !binary "Q29udGVudC1UeXBl":
170
+ - !binary |-
171
+ aW1hZ2UvZ2lm
172
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
173
+ - !binary |-
174
+ Y2h1bmtlZA==
175
+ !binary "Q29ubmVjdGlvbg==":
176
+ - !binary |-
177
+ a2VlcC1hbGl2ZQ==
178
+ !binary "S2VlcC1BbGl2ZQ==":
179
+ - !binary |-
180
+ dGltZW91dD0xMA==
181
+ !binary "WC1Qb3dlcmVkLUJ5":
182
+ - !binary |-
183
+ UEhQLzUuMy4xNQ==
184
+ !binary "Q2FjaGUtQ29udHJvbA==":
185
+ - !binary |-
186
+ bm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZQ==
187
+ !binary "RXhwaXJlcw==":
188
+ - !binary |-
189
+ U2F0LCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQ=
190
+ !binary "Q29udGVudC1MZW5naHQ=":
191
+ - !binary |-
192
+ NDM=
193
+ body:
194
+ encoding: ASCII-8BIT
195
+ string: !binary |-
196
+ PGJyIC8+Cjxmb250IHNpemU9JzEnPjx0YWJsZSBjbGFzcz0neGRlYnVnLWVy
197
+ cm9yIHhlLXdhcm5pbmcnIGRpcj0nbHRyJyBib3JkZXI9JzEnIGNlbGxzcGFj
198
+ aW5nPScwJyBjZWxscGFkZGluZz0nMSc+Cjx0cj48dGggYWxpZ249J2xlZnQn
199
+ IGJnY29sb3I9JyNmNTc5MDAnIGNvbHNwYW49IjUiPjxzcGFuIHN0eWxlPSdi
200
+ YWNrZ3JvdW5kLWNvbG9yOiAjY2MwMDAwOyBjb2xvcjogI2ZjZTk0ZjsgZm9u
201
+ dC1zaXplOiB4LWxhcmdlOyc+KCAhICk8L3NwYW4+IFdhcm5pbmc6IGpzb25f
202
+ ZGVjb2RlKCkgZXhwZWN0cyBwYXJhbWV0ZXIgMSB0byBiZSBzdHJpbmcsIGFy
203
+ cmF5IGdpdmVuIGluIC9Vc2Vycy9zY2h1YmVydC93b3Jrc3BhY2UvamlyYWZl
204
+ L3RyYWNrZXIvc3JjL0ppcmFmZS9UcmFja2VyL01vZGVsL0N1c3RvbUluZm9y
205
+ bWF0aW9ucy5waHAgb24gbGluZSA8aT45MDwvaT48L3RoPjwvdHI+Cjx0cj48
206
+ dGggYWxpZ249J2xlZnQnIGJnY29sb3I9JyNlOWI5NmUnIGNvbHNwYW49JzUn
207
+ PkNhbGwgU3RhY2s8L3RoPjwvdHI+Cjx0cj48dGggYWxpZ249J2NlbnRlcicg
208
+ Ymdjb2xvcj0nI2VlZWVlYyc+IzwvdGg+PHRoIGFsaWduPSdsZWZ0JyBiZ2Nv
209
+ bG9yPScjZWVlZWVjJz5UaW1lPC90aD48dGggYWxpZ249J2xlZnQnIGJnY29s
210
+ b3I9JyNlZWVlZWMnPk1lbW9yeTwvdGg+PHRoIGFsaWduPSdsZWZ0JyBiZ2Nv
211
+ bG9yPScjZWVlZWVjJz5GdW5jdGlvbjwvdGg+PHRoIGFsaWduPSdsZWZ0JyBi
212
+ Z2NvbG9yPScjZWVlZWVjJz5Mb2NhdGlvbjwvdGg+PC90cj4KPHRyPjx0ZCBi
213
+ Z2NvbG9yPScjZWVlZWVjJyBhbGlnbj0nY2VudGVyJz4xPC90ZD48dGQgYmdj
214
+ b2xvcj0nI2VlZWVlYycgYWxpZ249J2NlbnRlcic+MC4wMDExPC90ZD48dGQg
215
+ Ymdjb2xvcj0nI2VlZWVlYycgYWxpZ249J3JpZ2h0Jz42MzQ2NjQ8L3RkPjx0
216
+ ZCBiZ2NvbG9yPScjZWVlZWVjJz57bWFpbn0oICApPC90ZD48dGQgdGl0bGU9
217
+ Jy9Vc2Vycy9zY2h1YmVydC93b3Jrc3BhY2UvamlyYWZlL3RyYWNrZXIvd3d3
218
+ L3Bpd2lrLnBocCcgYmdjb2xvcj0nI2VlZWVlYyc+Li4vcGl3aWsucGhwPGI+
219
+ OjwvYj4wPC90ZD48L3RyPgo8dHI+PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFs
220
+ aWduPSdjZW50ZXInPjI8L3RkPjx0ZCBiZ2NvbG9yPScjZWVlZWVjJyBhbGln
221
+ bj0nY2VudGVyJz4wLjAwNTE8L3RkPjx0ZCBiZ2NvbG9yPScjZWVlZWVjJyBh
222
+ bGlnbj0ncmlnaHQnPjcyMzEwNDwvdGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMn
223
+ PkppcmFmZVxUcmFja2VyXEtlcm5lbC0+aGFuZGxlUmVxdWVzdEZvclJlYXBl
224
+ clF1ZXVlKCAgKTwvdGQ+PHRkIHRpdGxlPScvVXNlcnMvc2NodWJlcnQvd29y
225
+ a3NwYWNlL2ppcmFmZS90cmFja2VyL3d3dy9waXdpay5waHAnIGJnY29sb3I9
226
+ JyNlZWVlZWMnPi4uL3Bpd2lrLnBocDxiPjo8L2I+Mjk8L3RkPjwvdHI+Cjx0
227
+ cj48dGQgYmdjb2xvcj0nI2VlZWVlYycgYWxpZ249J2NlbnRlcic+MzwvdGQ+
228
+ PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdjZW50ZXInPjAuMDA1Mjwv
229
+ dGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdyaWdodCc+NzI0MDk2
230
+ PC90ZD48dGQgYmdjb2xvcj0nI2VlZWVlYyc+SmlyYWZlXFRyYWNrZXJcUGFy
231
+ c2VyXENhcnRBY3Rpb25QYXJzZXItPnBhcnNlKCAgKTwvdGQ+PHRkIHRpdGxl
232
+ PScvVXNlcnMvc2NodWJlcnQvd29ya3NwYWNlL2ppcmFmZS90cmFja2VyL3Ny
233
+ Yy9KaXJhZmUvVHJhY2tlci9LZXJuZWwucGhwJyBiZ2NvbG9yPScjZWVlZWVj
234
+ Jz4uLi9LZXJuZWwucGhwPGI+OjwvYj4yNjwvdGQ+PC90cj4KPHRyPjx0ZCBi
235
+ Z2NvbG9yPScjZWVlZWVjJyBhbGlnbj0nY2VudGVyJz40PC90ZD48dGQgYmdj
236
+ b2xvcj0nI2VlZWVlYycgYWxpZ249J2NlbnRlcic+MC4wMDUyPC90ZD48dGQg
237
+ Ymdjb2xvcj0nI2VlZWVlYycgYWxpZ249J3JpZ2h0Jz43MjQwOTY8L3RkPjx0
238
+ ZCBiZ2NvbG9yPScjZWVlZWVjJz5KaXJhZmVcVHJhY2tlclxQYXJzZXJcQ2Fy
239
+ dEFjdGlvblBhcnNlci0+aGFuZGxlQ2FydEFjdGlvbiggICk8L3RkPjx0ZCB0
240
+ aXRsZT0nL1VzZXJzL3NjaHViZXJ0L3dvcmtzcGFjZS9qaXJhZmUvdHJhY2tl
241
+ ci9zcmMvSmlyYWZlL1RyYWNrZXIvUGFyc2VyL0NhcnRBY3Rpb25QYXJzZXIu
242
+ cGhwJyBiZ2NvbG9yPScjZWVlZWVjJz4uLi9DYXJ0QWN0aW9uUGFyc2VyLnBo
243
+ cDxiPjo8L2I+MjI8L3RkPjwvdHI+Cjx0cj48dGQgYmdjb2xvcj0nI2VlZWVl
244
+ YycgYWxpZ249J2NlbnRlcic+NTwvdGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMn
245
+ IGFsaWduPSdjZW50ZXInPjAuMDA1NDwvdGQ+PHRkIGJnY29sb3I9JyNlZWVl
246
+ ZWMnIGFsaWduPSdyaWdodCc+NzI4NzkyPC90ZD48dGQgYmdjb2xvcj0nI2Vl
247
+ ZWVlYyc+SmlyYWZlXFRyYWNrZXJcTW9kZWxcQ3VzdG9tSW5mb3JtYXRpb25z
248
+ LT5fX2NvbnN0cnVjdCggICk8L3RkPjx0ZCB0aXRsZT0nL1VzZXJzL3NjaHVi
249
+ ZXJ0L3dvcmtzcGFjZS9qaXJhZmUvdHJhY2tlci9zcmMvSmlyYWZlL1RyYWNr
250
+ ZXIvUGFyc2VyL0NhcnRBY3Rpb25QYXJzZXIucGhwJyBiZ2NvbG9yPScjZWVl
251
+ ZWVjJz4uLi9DYXJ0QWN0aW9uUGFyc2VyLnBocDxiPjo8L2I+Njg8L3RkPjwv
252
+ dHI+Cjx0cj48dGQgYmdjb2xvcj0nI2VlZWVlYycgYWxpZ249J2NlbnRlcic+
253
+ NjwvdGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdjZW50ZXInPjAu
254
+ MDA1NDwvdGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdyaWdodCc+
255
+ NzI5MTA0PC90ZD48dGQgYmdjb2xvcj0nI2VlZWVlYyc+SmlyYWZlXFRyYWNr
256
+ ZXJcTW9kZWxcQ3VzdG9tSW5mb3JtYXRpb25zLT5kZWNvZGVDYXJ0SW5mb3Mo
257
+ ICApPC90ZD48dGQgdGl0bGU9Jy9Vc2Vycy9zY2h1YmVydC93b3Jrc3BhY2Uv
258
+ amlyYWZlL3RyYWNrZXIvc3JjL0ppcmFmZS9UcmFja2VyL01vZGVsL0N1c3Rv
259
+ bUluZm9ybWF0aW9ucy5waHAnIGJnY29sb3I9JyNlZWVlZWMnPi4uL0N1c3Rv
260
+ bUluZm9ybWF0aW9ucy5waHA8Yj46PC9iPjMwPC90ZD48L3RyPgo8dHI+PHRk
261
+ IGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdjZW50ZXInPjc8L3RkPjx0ZCBi
262
+ Z2NvbG9yPScjZWVlZWVjJyBhbGlnbj0nY2VudGVyJz4wLjAwNTQ8L3RkPjx0
263
+ ZCBiZ2NvbG9yPScjZWVlZWVjJyBhbGlnbj0ncmlnaHQnPjcyOTIwMDwvdGQ+
264
+ PHRkIGJnY29sb3I9JyNlZWVlZWMnPjxhIGhyZWY9J2h0dHA6Ly93d3cucGhw
265
+ Lm5ldC9qc29uX2RlY29kZScgdGFyZ2V0PSdfbmV3Jz5qc29uX2RlY29kZTwv
266
+ YT4KKCAgKTwvdGQ+PHRkIHRpdGxlPScvVXNlcnMvc2NodWJlcnQvd29ya3Nw
267
+ YWNlL2ppcmFmZS90cmFja2VyL3NyYy9KaXJhZmUvVHJhY2tlci9Nb2RlbC9D
268
+ dXN0b21JbmZvcm1hdGlvbnMucGhwJyBiZ2NvbG9yPScjZWVlZWVjJz4uLi9D
269
+ dXN0b21JbmZvcm1hdGlvbnMucGhwPGI+OjwvYj45MDwvdGQ+PC90cj4KPC90
270
+ YWJsZT48L2ZvbnQ+CkdJRjg5YQEAAQCAAAD///8AAAAh+QQAAAAAACwAAAAA
271
+ AQABAAACAkQBADs=
272
+ http_version:
273
+ recorded_at: Thu, 20 Sep 2012 16:04:17 GMT
274
+ - request:
275
+ method: get
276
+ uri: http://data.jirafe.dev/piwik.php?cid=&ec_items%5B0%5D=%5B123,%22Widget1%22,%22things%22,%2245.1200%22,2%5D&idsite=1&revenue=45.1200
277
+ body:
278
+ encoding: US-ASCII
279
+ string: ''
280
+ headers: {}
281
+ response:
282
+ status:
283
+ code: 200
284
+ message: !binary |-
285
+ T0s=
286
+ headers:
287
+ !binary "U2VydmVy":
288
+ - !binary |-
289
+ bmdpbngvMS4yLjI=
290
+ !binary "RGF0ZQ==":
291
+ - !binary |-
292
+ VGh1LCAyMCBTZXAgMjAxMiAxNjowNToxNCBHTVQ=
293
+ !binary "Q29udGVudC1UeXBl":
294
+ - !binary |-
295
+ aW1hZ2UvZ2lm
296
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
297
+ - !binary |-
298
+ Y2h1bmtlZA==
299
+ !binary "Q29ubmVjdGlvbg==":
300
+ - !binary |-
301
+ a2VlcC1hbGl2ZQ==
302
+ !binary "S2VlcC1BbGl2ZQ==":
303
+ - !binary |-
304
+ dGltZW91dD0xMA==
305
+ !binary "WC1Qb3dlcmVkLUJ5":
306
+ - !binary |-
307
+ UEhQLzUuMy4xNQ==
308
+ !binary "Q2FjaGUtQ29udHJvbA==":
309
+ - !binary |-
310
+ bm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZQ==
311
+ !binary "RXhwaXJlcw==":
312
+ - !binary |-
313
+ U2F0LCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQ=
314
+ !binary "Q29udGVudC1MZW5naHQ=":
315
+ - !binary |-
316
+ NDM=
317
+ body:
318
+ encoding: ASCII-8BIT
319
+ string: !binary |-
320
+ PGJyIC8+Cjxmb250IHNpemU9JzEnPjx0YWJsZSBjbGFzcz0neGRlYnVnLWVy
321
+ cm9yIHhlLXdhcm5pbmcnIGRpcj0nbHRyJyBib3JkZXI9JzEnIGNlbGxzcGFj
322
+ aW5nPScwJyBjZWxscGFkZGluZz0nMSc+Cjx0cj48dGggYWxpZ249J2xlZnQn
323
+ IGJnY29sb3I9JyNmNTc5MDAnIGNvbHNwYW49IjUiPjxzcGFuIHN0eWxlPSdi
324
+ YWNrZ3JvdW5kLWNvbG9yOiAjY2MwMDAwOyBjb2xvcjogI2ZjZTk0ZjsgZm9u
325
+ dC1zaXplOiB4LWxhcmdlOyc+KCAhICk8L3NwYW4+IFdhcm5pbmc6IGpzb25f
326
+ ZGVjb2RlKCkgZXhwZWN0cyBwYXJhbWV0ZXIgMSB0byBiZSBzdHJpbmcsIGFy
327
+ cmF5IGdpdmVuIGluIC9Vc2Vycy9zY2h1YmVydC93b3Jrc3BhY2UvamlyYWZl
328
+ L3RyYWNrZXIvc3JjL0ppcmFmZS9UcmFja2VyL01vZGVsL0N1c3RvbUluZm9y
329
+ bWF0aW9ucy5waHAgb24gbGluZSA8aT45MDwvaT48L3RoPjwvdHI+Cjx0cj48
330
+ dGggYWxpZ249J2xlZnQnIGJnY29sb3I9JyNlOWI5NmUnIGNvbHNwYW49JzUn
331
+ PkNhbGwgU3RhY2s8L3RoPjwvdHI+Cjx0cj48dGggYWxpZ249J2NlbnRlcicg
332
+ Ymdjb2xvcj0nI2VlZWVlYyc+IzwvdGg+PHRoIGFsaWduPSdsZWZ0JyBiZ2Nv
333
+ bG9yPScjZWVlZWVjJz5UaW1lPC90aD48dGggYWxpZ249J2xlZnQnIGJnY29s
334
+ b3I9JyNlZWVlZWMnPk1lbW9yeTwvdGg+PHRoIGFsaWduPSdsZWZ0JyBiZ2Nv
335
+ bG9yPScjZWVlZWVjJz5GdW5jdGlvbjwvdGg+PHRoIGFsaWduPSdsZWZ0JyBi
336
+ Z2NvbG9yPScjZWVlZWVjJz5Mb2NhdGlvbjwvdGg+PC90cj4KPHRyPjx0ZCBi
337
+ Z2NvbG9yPScjZWVlZWVjJyBhbGlnbj0nY2VudGVyJz4xPC90ZD48dGQgYmdj
338
+ b2xvcj0nI2VlZWVlYycgYWxpZ249J2NlbnRlcic+MC4wMDExPC90ZD48dGQg
339
+ Ymdjb2xvcj0nI2VlZWVlYycgYWxpZ249J3JpZ2h0Jz42MzQ2ODg8L3RkPjx0
340
+ ZCBiZ2NvbG9yPScjZWVlZWVjJz57bWFpbn0oICApPC90ZD48dGQgdGl0bGU9
341
+ Jy9Vc2Vycy9zY2h1YmVydC93b3Jrc3BhY2UvamlyYWZlL3RyYWNrZXIvd3d3
342
+ L3Bpd2lrLnBocCcgYmdjb2xvcj0nI2VlZWVlYyc+Li4vcGl3aWsucGhwPGI+
343
+ OjwvYj4wPC90ZD48L3RyPgo8dHI+PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFs
344
+ aWduPSdjZW50ZXInPjI8L3RkPjx0ZCBiZ2NvbG9yPScjZWVlZWVjJyBhbGln
345
+ bj0nY2VudGVyJz4wLjAwNTk8L3RkPjx0ZCBiZ2NvbG9yPScjZWVlZWVjJyBh
346
+ bGlnbj0ncmlnaHQnPjcyMzEyODwvdGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMn
347
+ PkppcmFmZVxUcmFja2VyXEtlcm5lbC0+aGFuZGxlUmVxdWVzdEZvclJlYXBl
348
+ clF1ZXVlKCAgKTwvdGQ+PHRkIHRpdGxlPScvVXNlcnMvc2NodWJlcnQvd29y
349
+ a3NwYWNlL2ppcmFmZS90cmFja2VyL3d3dy9waXdpay5waHAnIGJnY29sb3I9
350
+ JyNlZWVlZWMnPi4uL3Bpd2lrLnBocDxiPjo8L2I+Mjk8L3RkPjwvdHI+Cjx0
351
+ cj48dGQgYmdjb2xvcj0nI2VlZWVlYycgYWxpZ249J2NlbnRlcic+MzwvdGQ+
352
+ PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdjZW50ZXInPjAuMDA2MTwv
353
+ dGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdyaWdodCc+NzI0MTIw
354
+ PC90ZD48dGQgYmdjb2xvcj0nI2VlZWVlYyc+SmlyYWZlXFRyYWNrZXJcUGFy
355
+ c2VyXENhcnRBY3Rpb25QYXJzZXItPnBhcnNlKCAgKTwvdGQ+PHRkIHRpdGxl
356
+ PScvVXNlcnMvc2NodWJlcnQvd29ya3NwYWNlL2ppcmFmZS90cmFja2VyL3Ny
357
+ Yy9KaXJhZmUvVHJhY2tlci9LZXJuZWwucGhwJyBiZ2NvbG9yPScjZWVlZWVj
358
+ Jz4uLi9LZXJuZWwucGhwPGI+OjwvYj4yNjwvdGQ+PC90cj4KPHRyPjx0ZCBi
359
+ Z2NvbG9yPScjZWVlZWVjJyBhbGlnbj0nY2VudGVyJz40PC90ZD48dGQgYmdj
360
+ b2xvcj0nI2VlZWVlYycgYWxpZ249J2NlbnRlcic+MC4wMDYxPC90ZD48dGQg
361
+ Ymdjb2xvcj0nI2VlZWVlYycgYWxpZ249J3JpZ2h0Jz43MjQxMjA8L3RkPjx0
362
+ ZCBiZ2NvbG9yPScjZWVlZWVjJz5KaXJhZmVcVHJhY2tlclxQYXJzZXJcQ2Fy
363
+ dEFjdGlvblBhcnNlci0+aGFuZGxlQ2FydEFjdGlvbiggICk8L3RkPjx0ZCB0
364
+ aXRsZT0nL1VzZXJzL3NjaHViZXJ0L3dvcmtzcGFjZS9qaXJhZmUvdHJhY2tl
365
+ ci9zcmMvSmlyYWZlL1RyYWNrZXIvUGFyc2VyL0NhcnRBY3Rpb25QYXJzZXIu
366
+ cGhwJyBiZ2NvbG9yPScjZWVlZWVjJz4uLi9DYXJ0QWN0aW9uUGFyc2VyLnBo
367
+ cDxiPjo8L2I+MjI8L3RkPjwvdHI+Cjx0cj48dGQgYmdjb2xvcj0nI2VlZWVl
368
+ YycgYWxpZ249J2NlbnRlcic+NTwvdGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMn
369
+ IGFsaWduPSdjZW50ZXInPjAuMDA2MzwvdGQ+PHRkIGJnY29sb3I9JyNlZWVl
370
+ ZWMnIGFsaWduPSdyaWdodCc+NzI4ODE2PC90ZD48dGQgYmdjb2xvcj0nI2Vl
371
+ ZWVlYyc+SmlyYWZlXFRyYWNrZXJcTW9kZWxcQ3VzdG9tSW5mb3JtYXRpb25z
372
+ LT5fX2NvbnN0cnVjdCggICk8L3RkPjx0ZCB0aXRsZT0nL1VzZXJzL3NjaHVi
373
+ ZXJ0L3dvcmtzcGFjZS9qaXJhZmUvdHJhY2tlci9zcmMvSmlyYWZlL1RyYWNr
374
+ ZXIvUGFyc2VyL0NhcnRBY3Rpb25QYXJzZXIucGhwJyBiZ2NvbG9yPScjZWVl
375
+ ZWVjJz4uLi9DYXJ0QWN0aW9uUGFyc2VyLnBocDxiPjo8L2I+Njg8L3RkPjwv
376
+ dHI+Cjx0cj48dGQgYmdjb2xvcj0nI2VlZWVlYycgYWxpZ249J2NlbnRlcic+
377
+ NjwvdGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdjZW50ZXInPjAu
378
+ MDA2MzwvdGQ+PHRkIGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdyaWdodCc+
379
+ NzI5MTI4PC90ZD48dGQgYmdjb2xvcj0nI2VlZWVlYyc+SmlyYWZlXFRyYWNr
380
+ ZXJcTW9kZWxcQ3VzdG9tSW5mb3JtYXRpb25zLT5kZWNvZGVDYXJ0SW5mb3Mo
381
+ ICApPC90ZD48dGQgdGl0bGU9Jy9Vc2Vycy9zY2h1YmVydC93b3Jrc3BhY2Uv
382
+ amlyYWZlL3RyYWNrZXIvc3JjL0ppcmFmZS9UcmFja2VyL01vZGVsL0N1c3Rv
383
+ bUluZm9ybWF0aW9ucy5waHAnIGJnY29sb3I9JyNlZWVlZWMnPi4uL0N1c3Rv
384
+ bUluZm9ybWF0aW9ucy5waHA8Yj46PC9iPjMwPC90ZD48L3RyPgo8dHI+PHRk
385
+ IGJnY29sb3I9JyNlZWVlZWMnIGFsaWduPSdjZW50ZXInPjc8L3RkPjx0ZCBi
386
+ Z2NvbG9yPScjZWVlZWVjJyBhbGlnbj0nY2VudGVyJz4wLjAwNjM8L3RkPjx0
387
+ ZCBiZ2NvbG9yPScjZWVlZWVjJyBhbGlnbj0ncmlnaHQnPjcyOTIyNDwvdGQ+
388
+ PHRkIGJnY29sb3I9JyNlZWVlZWMnPjxhIGhyZWY9J2h0dHA6Ly93d3cucGhw
389
+ Lm5ldC9qc29uX2RlY29kZScgdGFyZ2V0PSdfbmV3Jz5qc29uX2RlY29kZTwv
390
+ YT4KKCAgKTwvdGQ+PHRkIHRpdGxlPScvVXNlcnMvc2NodWJlcnQvd29ya3Nw
391
+ YWNlL2ppcmFmZS90cmFja2VyL3NyYy9KaXJhZmUvVHJhY2tlci9Nb2RlbC9D
392
+ dXN0b21JbmZvcm1hdGlvbnMucGhwJyBiZ2NvbG9yPScjZWVlZWVjJz4uLi9D
393
+ dXN0b21JbmZvcm1hdGlvbnMucGhwPGI+OjwvYj45MDwvdGQ+PC90cj4KPC90
394
+ YWJsZT48L2ZvbnQ+CkdJRjg5YQEAAQCAAAD///8AAAAh+QQAAAAAACwAAAAA
395
+ AQABAAACAkQBADs=
396
+ http_version:
397
+ recorded_at: Thu, 20 Sep 2012 16:05:14 GMT
398
+ - request:
399
+ method: get
400
+ uri: http://data.jirafe.dev/piwik.php?cid=&ec_items=%5B%5B123,%22Widget1%22,%22things%22,%2245.1200%22,2%5D%5D&idsite=1&revenue=45.1200
401
+ body:
402
+ encoding: US-ASCII
403
+ string: ''
404
+ headers: {}
405
+ response:
406
+ status:
407
+ code: 200
408
+ message: !binary |-
409
+ T0s=
410
+ headers:
411
+ !binary "U2VydmVy":
412
+ - !binary |-
413
+ bmdpbngvMS4yLjI=
414
+ !binary "RGF0ZQ==":
415
+ - !binary |-
416
+ VGh1LCAyMCBTZXAgMjAxMiAxNjoxNDo1MyBHTVQ=
417
+ !binary "Q29udGVudC1UeXBl":
418
+ - !binary |-
419
+ aW1hZ2UvZ2lm
420
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
421
+ - !binary |-
422
+ Y2h1bmtlZA==
423
+ !binary "Q29ubmVjdGlvbg==":
424
+ - !binary |-
425
+ a2VlcC1hbGl2ZQ==
426
+ !binary "S2VlcC1BbGl2ZQ==":
427
+ - !binary |-
428
+ dGltZW91dD0xMA==
429
+ !binary "WC1Qb3dlcmVkLUJ5":
430
+ - !binary |-
431
+ UEhQLzUuMy4xNQ==
432
+ !binary "Q2FjaGUtQ29udHJvbA==":
433
+ - !binary |-
434
+ bm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZQ==
435
+ !binary "RXhwaXJlcw==":
436
+ - !binary |-
437
+ U2F0LCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQ=
438
+ !binary "Q29udGVudC1MZW5naHQ=":
439
+ - !binary |-
440
+ NDM=
441
+ body:
442
+ encoding: ASCII-8BIT
443
+ string: !binary |-
444
+ R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
445
+ http_version:
446
+ recorded_at: Thu, 20 Sep 2012 16:14:53 GMT
447
+ - request:
448
+ method: get
449
+ uri: http://data.jirafe.dev/piwik.php?cid=&ec_items=%5B%5B123,%22Widget1%22,%22things%22,%2245.1200%22,2%5D%5D&idsite=1&revenue=45.1200&visitor=
450
+ body:
451
+ encoding: US-ASCII
452
+ string: ''
453
+ headers: {}
454
+ response:
455
+ status:
456
+ code: 200
457
+ message: !binary |-
458
+ T0s=
459
+ headers:
460
+ !binary "U2VydmVy":
461
+ - !binary |-
462
+ bmdpbngvMS4yLjI=
463
+ !binary "RGF0ZQ==":
464
+ - !binary |-
465
+ VGh1LCAyMCBTZXAgMjAxMiAxNjoxNTo1OSBHTVQ=
466
+ !binary "Q29udGVudC1UeXBl":
467
+ - !binary |-
468
+ aW1hZ2UvZ2lm
469
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
470
+ - !binary |-
471
+ Y2h1bmtlZA==
472
+ !binary "Q29ubmVjdGlvbg==":
473
+ - !binary |-
474
+ a2VlcC1hbGl2ZQ==
475
+ !binary "S2VlcC1BbGl2ZQ==":
476
+ - !binary |-
477
+ dGltZW91dD0xMA==
478
+ !binary "WC1Qb3dlcmVkLUJ5":
479
+ - !binary |-
480
+ UEhQLzUuMy4xNQ==
481
+ !binary "Q2FjaGUtQ29udHJvbA==":
482
+ - !binary |-
483
+ bm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZQ==
484
+ !binary "RXhwaXJlcw==":
485
+ - !binary |-
486
+ U2F0LCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQ=
487
+ !binary "Q29udGVudC1MZW5naHQ=":
488
+ - !binary |-
489
+ NDM=
490
+ body:
491
+ encoding: ASCII-8BIT
492
+ string: !binary |-
493
+ R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
494
+ http_version:
495
+ recorded_at: Thu, 20 Sep 2012 16:15:59 GMT
496
+ - request:
497
+ method: post
498
+ uri: http://data.jirafe.dev/piwik.php?cid=&ec_items=%5B%5B123,%22Widget1%22,%22things%22,%2245.1200%22,2%5D%5D&idsite=1&revenue=45.1200&visitor=
499
+ body:
500
+ encoding: US-ASCII
501
+ string: ''
502
+ headers: {}
503
+ response:
504
+ status:
505
+ code: 200
506
+ message: !binary |-
507
+ T0s=
508
+ headers:
509
+ !binary "U2VydmVy":
510
+ - !binary |-
511
+ bmdpbngvMS4yLjI=
512
+ !binary "RGF0ZQ==":
513
+ - !binary |-
514
+ VGh1LCAyMCBTZXAgMjAxMiAxNjoyMTowOCBHTVQ=
515
+ !binary "Q29udGVudC1UeXBl":
516
+ - !binary |-
517
+ aW1hZ2UvZ2lm
518
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
519
+ - !binary |-
520
+ Y2h1bmtlZA==
521
+ !binary "Q29ubmVjdGlvbg==":
522
+ - !binary |-
523
+ a2VlcC1hbGl2ZQ==
524
+ !binary "S2VlcC1BbGl2ZQ==":
525
+ - !binary |-
526
+ dGltZW91dD0xMA==
527
+ !binary "WC1Qb3dlcmVkLUJ5":
528
+ - !binary |-
529
+ UEhQLzUuMy4xNQ==
530
+ !binary "Q2FjaGUtQ29udHJvbA==":
531
+ - !binary |-
532
+ bm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZQ==
533
+ !binary "RXhwaXJlcw==":
534
+ - !binary |-
535
+ U2F0LCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQ=
536
+ !binary "Q29udGVudC1MZW5naHQ=":
537
+ - !binary |-
538
+ NDM=
539
+ body:
540
+ encoding: ASCII-8BIT
541
+ string: !binary |-
542
+ R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
543
+ http_version:
544
+ recorded_at: Thu, 20 Sep 2012 16:21:08 GMT
545
+ - request:
546
+ method: post
547
+ uri: http://data.jirafe.dev/piwik.php?cid=2&ec_items=%5B%5B123,%22Widget1%22,%22things%22,%2245.1200%22,2%5D%5D&idsite=1&revenue=45.1200
548
+ body:
549
+ encoding: US-ASCII
550
+ string: ''
551
+ headers: {}
552
+ response:
553
+ status:
554
+ code: 200
555
+ message: !binary |-
556
+ T0s=
557
+ headers:
558
+ !binary "U2VydmVy":
559
+ - !binary |-
560
+ bmdpbngvMS4yLjI=
561
+ !binary "RGF0ZQ==":
562
+ - !binary |-
563
+ VGh1LCAyMCBTZXAgMjAxMiAxNjoyNTowNCBHTVQ=
564
+ !binary "Q29udGVudC1UeXBl":
565
+ - !binary |-
566
+ aW1hZ2UvZ2lm
567
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
568
+ - !binary |-
569
+ Y2h1bmtlZA==
570
+ !binary "Q29ubmVjdGlvbg==":
571
+ - !binary |-
572
+ a2VlcC1hbGl2ZQ==
573
+ !binary "S2VlcC1BbGl2ZQ==":
574
+ - !binary |-
575
+ dGltZW91dD0xMA==
576
+ !binary "WC1Qb3dlcmVkLUJ5":
577
+ - !binary |-
578
+ UEhQLzUuMy4xNQ==
579
+ !binary "Q2FjaGUtQ29udHJvbA==":
580
+ - !binary |-
581
+ bm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZQ==
582
+ !binary "RXhwaXJlcw==":
583
+ - !binary |-
584
+ U2F0LCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQ=
585
+ !binary "Q29udGVudC1MZW5naHQ=":
586
+ - !binary |-
587
+ NDM=
588
+ body:
589
+ encoding: ASCII-8BIT
590
+ string: !binary |-
591
+ R0lGODlhAQABAIAAAP///wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
592
+ http_version:
593
+ recorded_at: Thu, 20 Sep 2012 16:25:04 GMT
594
+ recorded_with: VCR 2.2.4
@@ -708,7 +708,7 @@ http_interactions:
708
708
  uri: http://api.jirafe.dev/v1/applications/1/resources?token=secret_token
709
709
  body:
710
710
  encoding: US-ASCII
711
- string: sites[0][description]=My%20Store&sites[0][url]=http%3A%2F%2Fmynewurl.com&sites[0][currency]=EUR&sites[0][timezone]=Europe%2FParis&sites[0][external_id]=1&sites[0][site_id]=1&users[0][email]=user%40example.com&users[0][first_name]=Test&users[0][last_name]=User
711
+ string: sites[0][description]=My%20Store&sites[0][url]=http%3A%2F%2Fmynewurl.com&sites[0][store_cart_url]=http%3A%2F%2Fmycarturl.com&sites[0][currency]=EUR&sites[0][timezone]=Europe%2FParis&sites[0][external_id]=1&sites[0][site_id]=1&users[0][email]=user%40example.com&users[0][first_name]=Test&users[0][last_name]=User
712
712
  headers: {}
713
713
  response:
714
714
  status:
@@ -730,12 +730,12 @@ http_interactions:
730
730
  Cache-Control:
731
731
  - no-cache
732
732
  Date:
733
- - Wed, 12 Sep 2012 18:55:32 GMT
733
+ - Thu, 20 Sep 2012 14:22:39 GMT
734
734
  X-Debug-Token:
735
- - 5050daa4b85dd
735
+ - 505b26aff1945
736
736
  body:
737
737
  encoding: US-ASCII
738
- string: ! '{"sites":[{"site_id":1,"app_id":1,"description":"My Store","url":"http:\/\/mynewurl.com","timezone":"Europe\/Paris","currency":"EUR","external_id":"1","store_api_url":null,"store_cart_url":null}],"users":[{"email":"user@example.com","username":null,"first_name":"Test","last_name":"User","mobile_phone":null,"token":"c2785280dffad7835195b7a44829a103"}]}'
738
+ string: ! '{"sites":[{"site_id":1,"app_id":1,"description":"My Store","url":"http:\/\/mynewurl.com","timezone":"Europe\/Paris","currency":"EUR","external_id":"1","store_api_url":null,"store_cart_url":"http:\/\/mycarturl.com"}],"users":[{"email":"user@example.com","username":null,"first_name":"Test","last_name":"User","mobile_phone":null,"token":"8b075a2dc1b08cf17d8c120ed85131ac"}]}'
739
739
  http_version:
740
- recorded_at: Wed, 12 Sep 2012 18:55:32 GMT
740
+ recorded_at: Thu, 20 Sep 2012 14:22:39 GMT
741
741
  recorded_with: VCR 2.2.4
@@ -5,7 +5,7 @@ http_interactions:
5
5
  uri: http://api.jirafe.dev/v1/applications/1/resources?token=secret_token
6
6
  body:
7
7
  encoding: US-ASCII
8
- string: sites[0][description]=Test%20Site&sites[0][url]=http%3A%2F%2Fjirafe.com&sites[0][currency]=EUR&sites[0][timezone]=Europe%2FParis&sites[0][external_id]=1&sites[0][site_id]=1&users[0][email]=user%40example.com&users[0][first_name]=Test&users[0][last_name]=User
8
+ string: sites[0][description]=Test%20Site&sites[0][url]=http%3A%2F%2Fjirafe.com&sites[0][store_cart_url]=http%3A%2F%2Fmycarturl.com&sites[0][currency]=EUR&sites[0][timezone]=Europe%2FParis&sites[0][external_id]=1&sites[0][site_id]=1&users[0][email]=user%40example.com&users[0][first_name]=Test&users[0][last_name]=User
9
9
  headers: {}
10
10
  response:
11
11
  status:
@@ -27,12 +27,12 @@ http_interactions:
27
27
  Cache-Control:
28
28
  - no-cache
29
29
  Date:
30
- - Wed, 12 Sep 2012 20:41:37 GMT
30
+ - Thu, 20 Sep 2012 14:22:40 GMT
31
31
  X-Debug-Token:
32
- - 5050f3815203d
32
+ - 505b26b0148c4
33
33
  body:
34
34
  encoding: US-ASCII
35
- string: ! '{"sites":[{"site_id":1,"app_id":1,"description":"Test Site","url":"http:\/\/jirafe.com","timezone":"Europe\/Paris","currency":"EUR","external_id":"1","store_api_url":null,"store_cart_url":null}],"users":[{"email":"user@example.com","username":null,"first_name":"Test","last_name":"User","mobile_phone":null,"token":"c2785280dffad7835195b7a44829a103"}]}'
35
+ string: ! '{"sites":[{"site_id":1,"app_id":1,"description":"Test Site","url":"http:\/\/jirafe.com","timezone":"Europe\/Paris","currency":"EUR","external_id":"1","store_api_url":null,"store_cart_url":"http:\/\/mycarturl.com"}],"users":[{"email":"user@example.com","username":null,"first_name":"Test","last_name":"User","mobile_phone":null,"token":"8b075a2dc1b08cf17d8c120ed85131ac"}]}'
36
36
  http_version:
37
- recorded_at: Wed, 12 Sep 2012 20:41:37 GMT
37
+ recorded_at: Thu, 20 Sep 2012 14:22:40 GMT
38
38
  recorded_with: VCR 2.2.4
@@ -17,6 +17,7 @@ module Jirafe
17
17
  autoload :LOCALES, "jirafe/locales.rb"
18
18
  autoload :Configuration, "jirafe/configuration.rb"
19
19
  autoload :Error, "jirafe/error.rb"
20
+ autoload :DataHelper, "jirafe/data_helper.rb"
20
21
  autoload :ResponseParser, "jirafe/response_parser.rb"
21
22
  autoload :Model, "jirafe/model.rb"
22
23
  autoload :Asset, "jirafe/asset.rb"
@@ -24,12 +25,17 @@ module Jirafe
24
25
  autoload :Dashboard, "jirafe/dashboard.rb"
25
26
  module Resource
26
27
  autoload :JirafeResource, "jirafe/resource/jirafe_resource.rb"
28
+ autoload :LegacyResource, "jirafe/resource/legacy_resource.rb"
27
29
  autoload :Version, "jirafe/resource/version.rb"
28
30
  autoload :Status, "jirafe/resource/status.rb"
29
31
  autoload :Application, "jirafe/resource/application.rb"
30
32
  autoload :TimeSeries, "jirafe/resource/time_series.rb"
31
33
  autoload :Site, "jirafe/resource/site.rb"
32
34
  autoload :Resources, "jirafe/resource/resources.rb"
35
+ autoload :Cart, "jirafe/resource/cart.rb"
36
+ module Carts
37
+ autoload :Item, "jirafe/resource/carts/item.rb"
38
+ end
33
39
  module Sites
34
40
  autoload :AbandonRate, "jirafe/resource/sites/abandon_rate.rb"
35
41
  autoload :AbandonedAverageOrderValue, "jirafe/resource/sites/abandoned_average_order_value.rb"
@@ -62,7 +68,6 @@ module Jirafe
62
68
  autoload :JirafeCallback, "jirafe/callback/jirafe_callback.rb"
63
69
  autoload :Event, "jirafe/callback/event.rb"
64
70
  module Events
65
- autoload :DataHelper, "jirafe/callback/events/data_helper.rb"
66
71
  autoload :Item, "jirafe/callback/events/item.rb"
67
72
  autoload :Order, "jirafe/callback/events/order.rb"
68
73
  autoload :Refund, "jirafe/callback/events/refund.rb"
@@ -3,7 +3,7 @@ module Jirafe
3
3
  module Events
4
4
  class Item
5
5
  include Jirafe::Model
6
- include DataHelper
6
+ include Jirafe::DataHelper
7
7
  attr_accessor :sku, :name, :price, :quantity, :category
8
8
 
9
9
  def data
@@ -3,7 +3,7 @@ module Jirafe
3
3
  module Events
4
4
  class Order < Jirafe::Callback::Event
5
5
  include Jirafe::Model
6
- include DataHelper
6
+ include Jirafe::DataHelper
7
7
  attr_accessor :identifier, :status, :customer, :visitor_identifier, :created_at,
8
8
  :grand_total, :sub_total, :tax_amount, :shipping_amount, :discount_amount, :items
9
9
 
@@ -3,7 +3,7 @@ module Jirafe
3
3
  module Events
4
4
  class Refund < Jirafe::Callback::Event
5
5
  include Jirafe::Model
6
- include DataHelper
6
+ include Jirafe::DataHelper
7
7
  attr_accessor :identifier, :order_identifier, :created_at,
8
8
  :grand_total, :sub_total, :tax_amount, :shipping_amount,
9
9
  :discount_amount, :items
@@ -0,0 +1,16 @@
1
+ module Jirafe
2
+ module DataHelper
3
+ def format_amount(amount)
4
+ return nil if amount.nil?
5
+ "%01.4f" % amount
6
+ end
7
+
8
+ def format_discount_amount(amount)
9
+ return nil if amount.nil?
10
+ format_amount(amount.abs)
11
+ end
12
+ end
13
+ end
14
+
15
+
16
+
@@ -1,5 +1,54 @@
1
1
  module Jirafe
2
2
  module Model
3
+
4
+ def self.included(base)
5
+ base.extend(ClassMethods)
6
+ end
7
+
8
+ module ClassMethods
9
+ def logger
10
+ Jirafe.config.logger
11
+ end
12
+
13
+ def attributes(attrs = {})
14
+ return @attributes if @attributes && attrs === {}
15
+ attrs.each_pair do |attr_name, options|
16
+ attr_accessor attr_name
17
+ define_identifier(attr_name) if options.include?(:identifier)
18
+ end
19
+ @attributes ||= attrs
20
+ end
21
+
22
+ def retrieve(*args)
23
+ raise "Not implemented"
24
+ end
25
+
26
+ def create(*args)
27
+ raise "Not implemented"
28
+ end
29
+
30
+ def update(*args)
31
+ raise "Not implemented"
32
+ end
33
+
34
+ def handle_response(resource, response)
35
+ check_response_for_exception(response)
36
+ resource.reinitialize(response.parsed_response)
37
+ end
38
+
39
+ private
40
+
41
+ def define_identifier(attribute)
42
+ define_method attribute do
43
+ ivar = instance_variable_get("@#{attribute}")
44
+ ivar.nil? ? nil : ivar.to_i
45
+ end
46
+ alias_method :identifier, attribute
47
+ alias_method :identifier=, "#{attribute}="
48
+ end
49
+
50
+ end
51
+
3
52
  def initialize(attributes = {})
4
53
  reinitialize(attributes)
5
54
  end
@@ -10,5 +59,30 @@ module Jirafe
10
59
  end
11
60
  self
12
61
  end
62
+
63
+ def attributes
64
+ self.class.attributes.inject({}) do |hash, attr|
65
+ hash[attr] = self.send(attr)
66
+ hash
67
+ end
68
+ end
69
+
70
+ def attributes_for_change(key)
71
+ attrs = self.class.attributes.keys.select do |attribute|
72
+ self.class.attributes[attribute].include?(key)
73
+ end
74
+ (attrs || []).inject({}) do |hash, attr|
75
+ hash[attr] = self.send(attr)
76
+ hash
77
+ end
78
+ end
79
+
80
+ def create
81
+ self.class.create(self)
82
+ end
83
+
84
+ def update
85
+ self.class.update(self)
86
+ end
13
87
  end
14
88
  end
@@ -0,0 +1,36 @@
1
+ module Jirafe
2
+ module Resource
3
+ class Cart < LegacyResource
4
+ include Jirafe::DataHelper
5
+ path "piwik.php"
6
+ attributes({
7
+ :site_id => [:identifier, :create, :update],
8
+ :visitor_id => [:create, :update],
9
+ :revenue => [:create, :update],
10
+ :items => [:create, :update]
11
+ })
12
+
13
+ def attributes_for_change(key)
14
+ attrs = super
15
+ attrs[:cid] = attrs.delete(:visitor_id)
16
+ attrs[:idsite] = attrs.delete(:site_id)
17
+ items = (attrs[:items] || []).map do |item|
18
+ item.data
19
+ end
20
+ unless attrs[:revenue]
21
+ attrs[:revenue] = attrs[:items].inject(0) do |sum, item|
22
+ sum += item.price
23
+ sum
24
+ end
25
+ end
26
+ attrs[:revenue] = format_amount(attrs[:revenue])
27
+ attrs[:ec_items] = items.to_json
28
+ attrs.delete(:items)
29
+ attrs.reject! {|k, v| v.nil? }
30
+ attrs
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+
@@ -0,0 +1,17 @@
1
+ module Jirafe
2
+ module Resource
3
+ module Carts
4
+ class Item
5
+ include Jirafe::Model
6
+ include Jirafe::DataHelper
7
+ attr_accessor :sku, :name, :price, :quantity, :category
8
+
9
+ def data
10
+ [sku, name, category, format_amount(price), quantity]
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+
@@ -11,19 +11,6 @@ module Jirafe
11
11
  debug_output Jirafe.config.logger if ENV["DEBUG_JIRAFE"]
12
12
 
13
13
  class << self
14
- def logger
15
- Jirafe.config.logger
16
- end
17
-
18
- def attributes(attrs = {})
19
- return @attributes if @attributes && attrs === {}
20
- attrs.each_pair do |attr_name, options|
21
- attr_accessor attr_name
22
- define_identifier(attr_name) if options.include?(:identifier)
23
- end
24
- @attributes ||= attrs
25
- end
26
-
27
14
  def path(path = nil)
28
15
  return Jirafe.config.url unless superclass == JirafeResource
29
16
  @path ||= path
@@ -78,15 +65,6 @@ module Jirafe
78
65
 
79
66
  private
80
67
 
81
- def define_identifier(attribute)
82
- define_method attribute do
83
- ivar = instance_variable_get("@#{attribute}")
84
- ivar.nil? ? nil : ivar.to_i
85
- end
86
- alias_method :identifier, attribute
87
- alias_method :identifier=, "#{attribute}="
88
- end
89
-
90
68
  def handle_response(resource, response)
91
69
  check_response_for_exception(response)
92
70
  resource.reinitialize(response.parsed_response)
@@ -106,21 +84,6 @@ module Jirafe
106
84
  end
107
85
  end
108
86
 
109
- def attributes
110
- self.class.attributes.inject({}) do |hash, attr|
111
- hash[attr] = self.send(attr)
112
- hash
113
- end
114
- end
115
-
116
- def create
117
- self.class.create(self)
118
- end
119
-
120
- def update
121
- self.class.update(self)
122
- end
123
-
124
87
  def parent
125
88
  if self.class.parent == Jirafe::Resource::JirafeResource
126
89
  self.class.parent
@@ -144,16 +107,6 @@ module Jirafe
144
107
  [parent_resource_url, self.class.path, self.identifier].compact.join("/")
145
108
  end
146
109
 
147
- def attributes_for_change(key)
148
- attrs = self.class.attributes.keys.select do |attribute|
149
- self.class.attributes[attribute].include?(key)
150
- end
151
- (attrs || []).inject({}) do |hash, attr|
152
- hash[attr] = self.send(attr)
153
- hash
154
- end
155
- end
156
-
157
110
  end
158
111
  end
159
112
  end
@@ -0,0 +1,30 @@
1
+ module Jirafe
2
+ module Resource
3
+ class LegacyResource
4
+ include HTTParty
5
+ include Jirafe::ResponseParser
6
+ include Jirafe::Model
7
+ base_uri Jirafe.config.callback_url
8
+
9
+ class << self
10
+ def path(path = nil)
11
+ @path ||= path
12
+ @path || raise(Jirafe::Error::MissingResourcePath)
13
+ end
14
+ alias_method :url, :path
15
+
16
+ def resource_url
17
+ [base_uri, path].join("/")
18
+ end
19
+
20
+ def create(resource)
21
+ response = post(resource_url, {:query => resource.attributes_for_change(:create)})
22
+ check_response_for_exception(response)
23
+ resource
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+
@@ -12,6 +12,7 @@ module Jirafe
12
12
  :currency => [],
13
13
  :external_id => [],
14
14
  :store_api_url => [:create, :update],
15
+ :store_cart_url => [:create, :update],
15
16
  :timezone_diff => []
16
17
  })
17
18
 
@@ -1,3 +1,3 @@
1
1
  module Jirafe
2
- VERSION = "0.8.1"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -9,7 +9,8 @@ describe Jirafe::Callback::Event do
9
9
 
10
10
  before :all do
11
11
  use_master_token
12
- @server = CallbackServer.run(@query_capture, 3333)
12
+ @query_capture = initialize_query_capture
13
+ @server = CallbackServer.run(@query_capture, server_port = 3333)
13
14
  end
14
15
 
15
16
  after do
@@ -17,8 +18,6 @@ describe Jirafe::Callback::Event do
17
18
  end
18
19
 
19
20
  before do
20
- static_hash = "af5f436b948804627dc5641e309f54dc87a0f1c7"
21
- @query_capture = ENV['CALLTHROUGH'] ? [] : ["confirmToken=#{'a' * 16}&hash=#{static_hash}"]
22
21
  make_request("#{cassette}_fetch_token") do
23
22
  use_master_token
24
23
  app = Jirafe::Resource::Application.new(:name => "test app cmb")
@@ -32,12 +31,9 @@ describe Jirafe::Callback::Event do
32
31
 
33
32
  use_app_token(app)
34
33
  @site.create
34
+
35
35
  Jirafe::Callback::Event.notify(@site.identifier)
36
- while @query_capture.empty?
37
- sleep 0.1
38
- end
39
- @confirm_token = @query_capture.last.split("&").detect {|param| param.match(/confirmToken/) }.split("=").last
40
- @hash = @query_capture.last.split("&").detect {|param| param.match(/hash/) }.split("=").last
36
+ @confirm_token, @hash = capture_token_and_hash_from_server
41
37
  end
42
38
  end
43
39
 
@@ -112,6 +108,24 @@ describe Jirafe::Callback::Event do
112
108
  end
113
109
  end
114
110
  end
111
+
112
+ def initialize_query_capture
113
+ static_hash = "af5f436b948804627dc5641e309f54dc87a0f1c7"
114
+ ENV['CALLTHROUGH'] ? [] : ["confirmToken=#{'a' * 16}&hash=#{static_hash}"]
115
+ end
116
+
117
+ def capture_token_and_hash_from_server
118
+ timeout = 300
119
+ while @query_capture.empty?
120
+ timeout = timeout - 1
121
+ sleep 0.1
122
+ raise "Timeout" if timeout == 0
123
+ end
124
+ confirm_token = @query_capture.last.split("&").detect {|param| param.match(/confirmToken/) }.split("=").last
125
+ hash = @query_capture.last.split("&").detect {|param| param.match(/hash/) }.split("=").last
126
+ [confirm_token, hash]
127
+ end
128
+
115
129
  end
116
130
 
117
131
 
@@ -1,9 +1,9 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Jirafe::Callback::Events::DataHelper do
3
+ describe Jirafe::DataHelper do
4
4
  before do
5
5
  class DataHelperTestClass
6
- include Jirafe::Callback::Events::DataHelper
6
+ include Jirafe::DataHelper
7
7
  end
8
8
  end
9
9
 
@@ -0,0 +1,62 @@
1
+ require "spec_helper"
2
+
3
+ describe Jirafe::Resource::Cart do
4
+ let(:resource_class) { Jirafe::Resource::Cart }
5
+ let(:site_id) { 1 }
6
+
7
+ describe ".retrieve" do
8
+ subject { resource_class.retrieve(nil) }
9
+
10
+ it "is not implemented" do
11
+ expect { subject }.to raise_error
12
+ end
13
+ end
14
+
15
+ let(:item) do
16
+ Jirafe::Resource::Carts::Item.new(:sku => 123,
17
+ :name => "Widget1",
18
+ :category => "things",
19
+ :price => 45.12,
20
+ :quantity => 2)
21
+ end
22
+
23
+ let(:cart) do
24
+ Jirafe::Resource::Cart.new(:site_id => 1,
25
+ :visitor_id => 2,
26
+ :items => [item])
27
+ end
28
+
29
+ describe ".create" do
30
+ let(:cassette) { "cart_state_call" }
31
+ subject { make_request(cassette) { cart.create } }
32
+
33
+ its(:class) { should == Jirafe::Resource::Cart }
34
+
35
+ it "calls through successfully" do
36
+ expect { subject }.to_not raise_error
37
+ end
38
+ end
39
+
40
+ describe "#attributes_for_change" do
41
+ let(:attributes) { cart.attributes_for_change(:create) }
42
+
43
+ it "does not include null values" do
44
+ attributes.has_key?(:url).should be_false
45
+ end
46
+
47
+ it "remaps attributes to piwik format" do
48
+ attributes[:idsite].should == cart.site_id
49
+ attributes[:cid].should == cart.visitor_id
50
+ attributes[:revenue].should == "45.1200"
51
+
52
+ sku, name, category, price, quantity = JSON.parse(attributes[:ec_items]).first
53
+ sku.should == item.sku
54
+ name.should == item.name
55
+ category.should == item.category
56
+ price.should == "45.1200"
57
+ quantity.should == item.quantity
58
+ end
59
+ end
60
+ end
61
+
62
+
@@ -6,6 +6,7 @@ describe Jirafe::Resource::Resources do
6
6
  let(:sites) do
7
7
  [{:description => "My Store",
8
8
  :url => "http://mynewurl.com",
9
+ :store_cart_url => "http://mycarturl.com",
9
10
  :currency => "EUR",
10
11
  :timezone => "Europe/Paris",
11
12
  :external_id => 1,
@@ -45,7 +46,7 @@ describe Jirafe::Resource::Resources do
45
46
  site["description"].should == sites.first[:description]
46
47
  site["url"].should == sites.first[:url]
47
48
  site["store_api_url"].should be_nil
48
- site["store_cart_url"].should be_nil
49
+ site["store_cart_url"].should == "http://mycarturl.com"
49
50
  end
50
51
  end
51
52
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jirafe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-18 00:00:00.000000000 Z
12
+ date: 2012-09-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -174,6 +174,7 @@ files:
174
174
  - fixtures/responses/application_sites_get_with_master_token.yml
175
175
  - fixtures/responses/callback_event_post_event.yml
176
176
  - fixtures/responses/callback_event_post_event_fetch_token.yml
177
+ - fixtures/responses/cart_state_call.yml
177
178
  - fixtures/responses/jirafe_resource_get_status_url.yml
178
179
  - fixtures/responses/jirafe_resource_get_status_url_with_query_param.yml
179
180
  - fixtures/responses/site_abandon_rate_get_with_master_token.yml
@@ -219,18 +220,21 @@ files:
219
220
  - lib/jirafe.rb
220
221
  - lib/jirafe/asset.rb
221
222
  - lib/jirafe/callback/event.rb
222
- - lib/jirafe/callback/events/data_helper.rb
223
223
  - lib/jirafe/callback/events/item.rb
224
224
  - lib/jirafe/callback/events/order.rb
225
225
  - lib/jirafe/callback/events/refund.rb
226
226
  - lib/jirafe/callback/jirafe_callback.rb
227
227
  - lib/jirafe/configuration.rb
228
228
  - lib/jirafe/dashboard.rb
229
+ - lib/jirafe/data_helper.rb
229
230
  - lib/jirafe/error.rb
230
231
  - lib/jirafe/locales.rb
231
232
  - lib/jirafe/model.rb
232
233
  - lib/jirafe/resource/application.rb
234
+ - lib/jirafe/resource/cart.rb
235
+ - lib/jirafe/resource/carts/item.rb
233
236
  - lib/jirafe/resource/jirafe_resource.rb
237
+ - lib/jirafe/resource/legacy_resource.rb
234
238
  - lib/jirafe/resource/resources.rb
235
239
  - lib/jirafe/resource/site.rb
236
240
  - lib/jirafe/resource/sites/abandon_rate.rb
@@ -267,11 +271,12 @@ files:
267
271
  - lib/jirafe/version.rb
268
272
  - spec/jirafe/asset_spec.rb
269
273
  - spec/jirafe/callback/event_spec.rb
270
- - spec/jirafe/callback/events/data_helper_spec.rb
271
274
  - spec/jirafe/configuration_spec.rb
272
275
  - spec/jirafe/dashboard_spec.rb
276
+ - spec/jirafe/data_helper_spec.rb
273
277
  - spec/jirafe/jirafe_spec.rb
274
278
  - spec/jirafe/resource/application_spec.rb
279
+ - spec/jirafe/resource/cart_spec.rb
275
280
  - spec/jirafe/resource/jirafe_resource_spec.rb
276
281
  - spec/jirafe/resource/resources_spec.rb
277
282
  - spec/jirafe/resource/site_spec.rb
@@ -336,11 +341,12 @@ summary: Client for Jirafe analytics web service
336
341
  test_files:
337
342
  - spec/jirafe/asset_spec.rb
338
343
  - spec/jirafe/callback/event_spec.rb
339
- - spec/jirafe/callback/events/data_helper_spec.rb
340
344
  - spec/jirafe/configuration_spec.rb
341
345
  - spec/jirafe/dashboard_spec.rb
346
+ - spec/jirafe/data_helper_spec.rb
342
347
  - spec/jirafe/jirafe_spec.rb
343
348
  - spec/jirafe/resource/application_spec.rb
349
+ - spec/jirafe/resource/cart_spec.rb
344
350
  - spec/jirafe/resource/jirafe_resource_spec.rb
345
351
  - spec/jirafe/resource/resources_spec.rb
346
352
  - spec/jirafe/resource/site_spec.rb
@@ -1,19 +0,0 @@
1
- module Jirafe
2
- module Callback
3
- module Events
4
- module DataHelper
5
- def format_amount(amount)
6
- return nil if amount.nil?
7
- "%01.4f" % amount
8
- end
9
-
10
- def format_discount_amount(amount)
11
- return nil if amount.nil?
12
- format_amount(amount.abs)
13
- end
14
- end
15
- end
16
- end
17
- end
18
-
19
-