worochi 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +20 -0
  3. data/lib/worochi/agent/dropbox.rb +26 -4
  4. data/lib/worochi/agent/github.rb +14 -9
  5. data/lib/worochi/agent/sample.rb +8 -3
  6. data/lib/worochi/agent.rb +64 -23
  7. data/lib/worochi/config.rb +34 -2
  8. data/lib/worochi/error.rb +1 -0
  9. data/lib/worochi/helper/github.rb +1 -0
  10. data/lib/worochi/helper.rb +10 -8
  11. data/lib/worochi/item.rb +18 -9
  12. data/lib/worochi/log.rb +11 -0
  13. data/lib/worochi/version.rb +4 -0
  14. data/lib/worochi.rb +23 -16
  15. data/spec/cassettes/Worochi_Agent_Dropbox/_list/works_with_absolute_paths.yml +60 -0
  16. data/spec/cassettes/Worochi_Agent_Dropbox/_push_item/pushes_a_single_item.yml +303 -0
  17. data/spec/cassettes/Worochi_Agent_Dropbox/_push_item_chunked/pushes_a_single_item_in_chunks.yml +349 -0
  18. data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/accepts_a_different_path.yml +60 -0
  19. data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml +60 -0
  20. data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_files/contains_file1.yml +79 -0
  21. data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/accepts_a_different_path.yml +60 -0
  22. data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml +60 -0
  23. data/spec/cassettes/Worochi_Agent_Dropbox/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml +79 -0
  24. data/spec/cassettes/Worochi_Agent_Github/_list/works_with_absolute_paths.yml +133 -0
  25. data/spec/cassettes/Worochi_Agent_Github/_push_all/pushes_a_list_of_items_to_create_a_new_commit.yml +989 -0
  26. data/spec/cassettes/Worochi_Agent_Github/_push_all/pushes_the_file_to_the_right_place.yml +687 -0
  27. data/spec/cassettes/Worochi_Agent_Github/_source_branch/retrieves_the_master_branch_correctly.yml +68 -0
  28. data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/accepts_a_different_path.yml +133 -0
  29. data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml +133 -0
  30. data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_files/contains_file1.yml +133 -0
  31. data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_path.yml +133 -0
  32. data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml +133 -0
  33. data/spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml +133 -0
  34. data/spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_Hash_parameter.yml +107 -0
  35. data/spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_String_parameter.yml +107 -0
  36. data/spec/cassettes/Worochi_Item/_open/opens_multiple_files/with_Hash_parameters.yml +211 -0
  37. data/spec/cassettes/Worochi_Item/_open/opens_multiple_files/with_String_parameters.yml +107 -0
  38. data/spec/cassettes/Worochi_Item/_open_single/accepts_a_String.yml +107 -0
  39. data/spec/cassettes/Worochi_Item/_open_single/works_with_AWS_S3_paths.yml +46 -0
  40. data/spec/helper.rb +46 -0
  41. data/spec/support/aws_uri_matcher.rb +12 -0
  42. data/spec/support/shared_exampes_for_agents.rb +36 -0
  43. data/spec/support/test_file +1 -0
  44. data/spec/support/test_files.rb +34 -0
  45. data/spec/worochi/agent/dropbox_spec.rb +48 -0
  46. data/spec/worochi/agent/github_spec.rb +77 -0
  47. data/spec/worochi/agent_spec.rb +2 -0
  48. data/spec/worochi/helper/github_spec.rb +57 -0
  49. data/spec/worochi/helper_spec.rb +23 -0
  50. data/spec/worochi/item_spec.rb +85 -0
  51. data/spec/worochi_spec.rb +109 -0
  52. data/worochi.gemspec +27 -4
  53. metadata +193 -4
@@ -0,0 +1,211 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://soraven.com/blog/wp-content/uploads/2013/06/sr3.gif
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - soraven.com
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Date:
24
+ - Fri, 09 Aug 2013 22:12:49 GMT
25
+ Server:
26
+ - Apache
27
+ Last-Modified:
28
+ - Sat, 15 Jun 2013 08:47:57 GMT
29
+ Accept-Ranges:
30
+ - bytes
31
+ Content-Length:
32
+ - '2985'
33
+ Content-Type:
34
+ - image/gif
35
+ body:
36
+ encoding: ASCII-8BIT
37
+ string: !binary |-
38
+ R0lGODlhlgCWANU0AAAAAP///w8PD8DAwICAgBAQEPDw8EBAQKCgoDAwMGBg
39
+ YNDQ0ODg4CAgIHBwcFBQUJCQkLCwsMnJyfPz8/n5+Xh4eBISEo2NjSQkJIeH
40
+ h9vb22ZmZjk5OZaWlicnJx4eHi0tLQkJCQYGBqKiovz8/KWlpZmZmYqKisPD
41
+ w/b29pOTk2lpad7e3jY2NoSEhAMDAzMzM9jY2GNjY11dXf///wAAAAAAAAAA
42
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFj
43
+ a2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
44
+ Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0
45
+ az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAy
46
+ LzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0
47
+ dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8
48
+ cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6
49
+ Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8v
50
+ bnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDov
51
+ L25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1w
52
+ OkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHht
53
+ cE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0UwNDQ4NzRENTk4MTFFMkFCNDFB
54
+ MDcyODNBREQxOUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0UwNDQ4
55
+ NzVENTk4MTFFMkFCNDFBMDcyODNBREQxOUUiPiA8eG1wTU06RGVyaXZlZEZy
56
+ b20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTA0NDg3MkQ1OTgxMUUy
57
+ QUI0MUEwNzI4M0FERDE5RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoz
58
+ RTA0NDg3M0Q1OTgxMUUyQUI0MUEwNzI4M0FERDE5RSIvPiA8L3JkZjpEZXNj
59
+ cmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVu
60
+ ZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb
61
+ 2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+u
62
+ rayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KB
63
+ gH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVU
64
+ U1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgn
65
+ JiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEA
66
+ ADQALAAAAACWAJYAAAb/QJpwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+Cw
67
+ eEwum7ks06YFArjf8Lh8Tq/b7/j8HdTamFhjExAJeoWGh4iJeQkQE14UGRaK
68
+ k5SVlnIWGRRbEh6Xn6Cheh4SWSUhoqmqqyEjVxWrsbKgFSRUsLO5uokVUyW7
69
+ wMF5JVESqMLIyW8ipU4UGMrRyRibTRnS2MIZTROS2d+5Fo5LF+DmsxdMhOfs
70
+ qQlLGu3yohpKHfP4lx1KMvn+kwqUcPhH8BAHJR8KKszzQYmAhRDrCHAYsWKc
71
+ iUkeWtyIEYnGjRU7HvkIEqJIIyRLKjxZJKVKgiyJuHzpL+aQmTTx2RSCM6e8
72
+ /500evpkB1TopAIKEAwIwLRpgAEQHhQYWqioqAcRnGrdiuAAVTxWPx1YsLXs
73
+ 1gFeLS01y7apgQFQCRxoICtspQIQ2uplGmEqpbV7AwdggECBKruTGpAV3JbB
74
+ OkWAGQc2QMDvJ8SJEhiQvNcwZM6SDTwAhfmQZtB7CXxGzRjBZYqKCixm3dY1
75
+ osi09Q6wPKl0oay59do2hDs42wGWfOd5YLzzoeLNy0KopBwPg+h6PeuBjl3r
76
+ 6N6wDynorvcxHu7kmRrgfai6HeDpy0YohD6+akXu68Q3u4C9nfrprYdfeIUc
77
+ IFlhByTowGx79UXcfmw5MGBGiBAgmAFpxXHAdcLdBv8hfxN6VOFk5sVRAAK1
78
+ JQIgU/cBkOCLDkDAIWN0IZLfHCjuNd0dOW61o4ep3fHAjM7ZSOB2gWVoR49N
79
+ aQekXi3WIZtgPxpyoxx57fUdHkw6+WRbUdbRwGZ7IWckhYdYuNdwd0wZgJdf
80
+ shVmHWrqxUAiV8bBXGA14pGAY2oFNicdCQiG55F5NCBYf8GsGMCgdBh6poiI
81
+ MNgWo7s4CukckraHaB4OMIZpLpoW0qmVn+JRgGSjylJqoqdWlSqXkgE6y6t4
82
+ jLeXAYeiiUgBZF5YYiq43kHkcb1SmkionMEZSrF1MJnipCP9BdqmgQZpxwGO
83
+ MiUhtShRAixobD4r6BsFvHj/AAEIHLtXn6j6qshpnLX6SbfY3ZlstZUYCJqt
84
+ oOAb3bfgtnSJrpyJZu6HWgm4b7gHs0Zwtgw3he0deeaBMGflTiJwcAz4J6u8
85
+ lhwQrGS7UVzxsPEq+wm99cKrYsVMOdsyv6EkYKmw1lZs880Qi+Jmwiwj+aEB
86
+ PwNtsConomZA0ed9uADUnpIsSp2hUV3Hx4wZMHFys36iwMmLinwH17tWJkrG
87
+ k/wJmpkPdncxeFYzvbO29JHX8Wt1ryItn3FD+TdbSpIWdirMMgZ3HpqOKdji
88
+ hvcdy8ZJ5h0k1nptGbnLuzxAdlvzGQ0lAOMGpm8obIMC815my/Eq5W19Dbbk
89
+ s+wZ/1jScODqrlkO8815MIl3yPi5bvhLvO84J3P3VguIDmbuNG6e/CQOYIiI
90
+ 7Xo5LycchQq2d4jTI5LAWpDr8XlZrUOPtxuDm6X1yL8bgrnsUe9VOB3QKvo4
91
+ 8kEfsuFWBpBZ/fRyvzlACwCYa0sBCyaTX7UvAM0zxPm2ssA4HLB0ezkdJVI3
92
+ NuHlwXjZG9763hC87MwufnRoQLe+Z6LdlUV7ZoGUCwGYvjxkbIJmcZCUlsc8
93
+ GJYFUtgb3QYPB4cHmoUBmoPD/7znw61sqlsBHCLt4qA/zjBALjDioVlw94YD
94
+ vgGEHnzY0vSQQJrVsIvHwxFj3icRIsKhADPcT+hEKMQUKv+ObiisQxArVkHX
95
+ pXEOZTRLH+2QOgAYkTzl+88f5YBBO4Gvf3oYGsPYiMYRzqGEbeHiHAoJgNXt
96
+ h36KtOQc4uiU3sEvfHoAY3pYuLVFzmGP26taHnMFoQg+x5UGvJAAMebGOpgs
97
+ PTq8pSjnoEq2sHKTvayDzrpTJWHWkVaCoaQbOGmiLIFskGfD5RyqWCalNfAS
98
+ DYAPaChzxmwOkw6BLAs230DNFEIAh2VZgALKmZN22iEBBIjA3d4CgXl+BSzJ
99
+ /Gcy7CnQWRC0oLE4KEIPE9CF7kKhDkVdQyNq0IlSNKEWvShDp6jRh2a0oxLl
100
+ KEgrKtKRYrSkJt0oEhKS0mQ0JAmsA2kpMg6SBE3KVBQzsMdNhbGPJMRjp8CI
101
+ wRKkCVRKvIMcRc1FOpbQjaTGQhzWcOoqttGEZ0hVFNR4ggREcNVPMCMKI+jq
102
+ JVwhBVyIVRG9mAIJVnDWRKzAFlU4wQvaqocXnCALKIAGXe2AARRsIQUuMEpX
103
+ BeCCFHjBABdow14BAIILGGAMGlDBBmDgiaR6AAYbUEE9zsDZznr2s6ANrWhH
104
+ S9rSmva0qE2tarEQBAA7
105
+ http_version:
106
+ recorded_at: Fri, 09 Aug 2013 22:12:49 GMT
107
+ - request:
108
+ method: get
109
+ uri: http://soraven.com/blog/wp-content/uploads/2013/06/sr3.gif
110
+ body:
111
+ encoding: US-ASCII
112
+ string: ''
113
+ headers:
114
+ Accept-Encoding:
115
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
116
+ Accept:
117
+ - '*/*'
118
+ User-Agent:
119
+ - Ruby
120
+ Host:
121
+ - soraven.com
122
+ response:
123
+ status:
124
+ code: 200
125
+ message: OK
126
+ headers:
127
+ Date:
128
+ - Fri, 09 Aug 2013 22:12:49 GMT
129
+ Server:
130
+ - Apache
131
+ Last-Modified:
132
+ - Sat, 15 Jun 2013 08:47:57 GMT
133
+ Accept-Ranges:
134
+ - bytes
135
+ Content-Length:
136
+ - '2985'
137
+ Content-Type:
138
+ - image/gif
139
+ body:
140
+ encoding: ASCII-8BIT
141
+ string: !binary |-
142
+ R0lGODlhlgCWANU0AAAAAP///w8PD8DAwICAgBAQEPDw8EBAQKCgoDAwMGBg
143
+ YNDQ0ODg4CAgIHBwcFBQUJCQkLCwsMnJyfPz8/n5+Xh4eBISEo2NjSQkJIeH
144
+ h9vb22ZmZjk5OZaWlicnJx4eHi0tLQkJCQYGBqKiovz8/KWlpZmZmYqKisPD
145
+ w/b29pOTk2lpad7e3jY2NoSEhAMDAzMzM9jY2GNjY11dXf///wAAAAAAAAAA
146
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFj
147
+ a2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
148
+ Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0
149
+ az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAy
150
+ LzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0
151
+ dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8
152
+ cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6
153
+ Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8v
154
+ bnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDov
155
+ L25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1w
156
+ OkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHht
157
+ cE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0UwNDQ4NzRENTk4MTFFMkFCNDFB
158
+ MDcyODNBREQxOUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0UwNDQ4
159
+ NzVENTk4MTFFMkFCNDFBMDcyODNBREQxOUUiPiA8eG1wTU06RGVyaXZlZEZy
160
+ b20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTA0NDg3MkQ1OTgxMUUy
161
+ QUI0MUEwNzI4M0FERDE5RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoz
162
+ RTA0NDg3M0Q1OTgxMUUyQUI0MUEwNzI4M0FERDE5RSIvPiA8L3JkZjpEZXNj
163
+ cmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVu
164
+ ZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb
165
+ 2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+u
166
+ rayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KB
167
+ gH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVU
168
+ U1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgn
169
+ JiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEA
170
+ ADQALAAAAACWAJYAAAb/QJpwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+Cw
171
+ eEwum7ks06YFArjf8Lh8Tq/b7/j8HdTamFhjExAJeoWGh4iJeQkQE14UGRaK
172
+ k5SVlnIWGRRbEh6Xn6Cheh4SWSUhoqmqqyEjVxWrsbKgFSRUsLO5uokVUyW7
173
+ wMF5JVESqMLIyW8ipU4UGMrRyRibTRnS2MIZTROS2d+5Fo5LF+DmsxdMhOfs
174
+ qQlLGu3yohpKHfP4lx1KMvn+kwqUcPhH8BAHJR8KKszzQYmAhRDrCHAYsWKc
175
+ iUkeWtyIEYnGjRU7HvkIEqJIIyRLKjxZJKVKgiyJuHzpL+aQmTTx2RSCM6e8
176
+ /500evpkB1TopAIKEAwIwLRpgAEQHhQYWqioqAcRnGrdiuAAVTxWPx1YsLXs
177
+ 1gFeLS01y7apgQFQCRxoICtspQIQ2uplGmEqpbV7AwdggECBKruTGpAV3JbB
178
+ OkWAGQc2QMDvJ8SJEhiQvNcwZM6SDTwAhfmQZtB7CXxGzRjBZYqKCixm3dY1
179
+ osi09Q6wPKl0oay59do2hDs42wGWfOd5YLzzoeLNy0KopBwPg+h6PeuBjl3r
180
+ 6N6wDynorvcxHu7kmRrgfai6HeDpy0YohD6+akXu68Q3u4C9nfrprYdfeIUc
181
+ IFlhByTowGx79UXcfmw5MGBGiBAgmAFpxXHAdcLdBv8hfxN6VOFk5sVRAAK1
182
+ JQIgU/cBkOCLDkDAIWN0IZLfHCjuNd0dOW61o4ep3fHAjM7ZSOB2gWVoR49N
183
+ aQekXi3WIZtgPxpyoxx57fUdHkw6+WRbUdbRwGZ7IWckhYdYuNdwd0wZgJdf
184
+ shVmHWrqxUAiV8bBXGA14pGAY2oFNicdCQiG55F5NCBYf8GsGMCgdBh6poiI
185
+ MNgWo7s4CukckraHaB4OMIZpLpoW0qmVn+JRgGSjylJqoqdWlSqXkgE6y6t4
186
+ jLeXAYeiiUgBZF5YYiq43kHkcb1SmkionMEZSrF1MJnipCP9BdqmgQZpxwGO
187
+ MiUhtShRAixobD4r6BsFvHj/AAEIHLtXn6j6qshpnLX6SbfY3ZlstZUYCJqt
188
+ oOAb3bfgtnSJrpyJZu6HWgm4b7gHs0Zwtgw3he0deeaBMGflTiJwcAz4J6u8
189
+ lhwQrGS7UVzxsPEq+wm99cKrYsVMOdsyv6EkYKmw1lZs880Qi+Jmwiwj+aEB
190
+ PwNtsConomZA0ed9uADUnpIsSp2hUV3Hx4wZMHFys36iwMmLinwH17tWJkrG
191
+ k/wJmpkPdncxeFYzvbO29JHX8Wt1ryItn3FD+TdbSpIWdirMMgZ3HpqOKdji
192
+ hvcdy8ZJ5h0k1nptGbnLuzxAdlvzGQ0lAOMGpm8obIMC815my/Eq5W19Dbbk
193
+ s+wZ/1jScODqrlkO8815MIl3yPi5bvhLvO84J3P3VguIDmbuNG6e/CQOYIiI
194
+ 7Xo5LycchQq2d4jTI5LAWpDr8XlZrUOPtxuDm6X1yL8bgrnsUe9VOB3QKvo4
195
+ 8kEfsuFWBpBZ/fRyvzlACwCYa0sBCyaTX7UvAM0zxPm2ssA4HLB0ezkdJVI3
196
+ NuHlwXjZG9763hC87MwufnRoQLe+Z6LdlUV7ZoGUCwGYvjxkbIJmcZCUlsc8
197
+ GJYFUtgb3QYPB4cHmoUBmoPD/7znw61sqlsBHCLt4qA/zjBALjDioVlw94YD
198
+ vgGEHnzY0vSQQJrVsIvHwxFj3icRIsKhADPcT+hEKMQUKv+ObiisQxArVkHX
199
+ pXEOZTRLH+2QOgAYkTzl+88f5YBBO4Gvf3oYGsPYiMYRzqGEbeHiHAoJgNXt
200
+ h36KtOQc4uiU3sEvfHoAY3pYuLVFzmGP26taHnMFoQg+x5UGvJAAMebGOpgs
201
+ PTq8pSjnoEq2sHKTvayDzrpTJWHWkVaCoaQbOGmiLIFskGfD5RyqWCalNfAS
202
+ DYAPaChzxmwOkw6BLAs230DNFEIAh2VZgALKmZN22iEBBIjA3d4CgXl+BSzJ
203
+ /Gcy7CnQWRC0oLE4KEIPE9CF7kKhDkVdQyNq0IlSNKEWvShDp6jRh2a0oxLl
204
+ KEgrKtKRYrSkJt0oEhKS0mQ0JAmsA2kpMg6SBE3KVBQzsMdNhbGPJMRjp8CI
205
+ wRKkCVRKvIMcRc1FOpbQjaTGQhzWcOoqttGEZ0hVFNR4ggREcNVPMCMKI+jq
206
+ JVwhBVyIVRG9mAIJVnDWRKzAFlU4wQvaqocXnCALKIAGXe2AARRsIQUuMEpX
207
+ BeCCFHjBABdow14BAIILGGAMGlDBBmDgiaR6AAYbUEE9zsDZznr2s6ANrWhH
208
+ S9rSmva0qE2tarEQBAA7
209
+ http_version:
210
+ recorded_at: Fri, 09 Aug 2013 22:12:49 GMT
211
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,107 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://soraven.com/blog/wp-content/uploads/2013/06/sr3.gif
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - soraven.com
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Date:
24
+ - Fri, 09 Aug 2013 22:12:47 GMT
25
+ Server:
26
+ - Apache
27
+ Last-Modified:
28
+ - Sat, 15 Jun 2013 08:47:57 GMT
29
+ Accept-Ranges:
30
+ - bytes
31
+ Content-Length:
32
+ - '2985'
33
+ Content-Type:
34
+ - image/gif
35
+ body:
36
+ encoding: ASCII-8BIT
37
+ string: !binary |-
38
+ R0lGODlhlgCWANU0AAAAAP///w8PD8DAwICAgBAQEPDw8EBAQKCgoDAwMGBg
39
+ YNDQ0ODg4CAgIHBwcFBQUJCQkLCwsMnJyfPz8/n5+Xh4eBISEo2NjSQkJIeH
40
+ h9vb22ZmZjk5OZaWlicnJx4eHi0tLQkJCQYGBqKiovz8/KWlpZmZmYqKisPD
41
+ w/b29pOTk2lpad7e3jY2NoSEhAMDAzMzM9jY2GNjY11dXf///wAAAAAAAAAA
42
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFj
43
+ a2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
44
+ Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0
45
+ az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAy
46
+ LzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0
47
+ dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8
48
+ cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6
49
+ Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8v
50
+ bnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDov
51
+ L25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1w
52
+ OkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHht
53
+ cE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0UwNDQ4NzRENTk4MTFFMkFCNDFB
54
+ MDcyODNBREQxOUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0UwNDQ4
55
+ NzVENTk4MTFFMkFCNDFBMDcyODNBREQxOUUiPiA8eG1wTU06RGVyaXZlZEZy
56
+ b20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTA0NDg3MkQ1OTgxMUUy
57
+ QUI0MUEwNzI4M0FERDE5RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoz
58
+ RTA0NDg3M0Q1OTgxMUUyQUI0MUEwNzI4M0FERDE5RSIvPiA8L3JkZjpEZXNj
59
+ cmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVu
60
+ ZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb
61
+ 2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+u
62
+ rayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KB
63
+ gH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVU
64
+ U1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgn
65
+ JiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEA
66
+ ADQALAAAAACWAJYAAAb/QJpwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+Cw
67
+ eEwum7ks06YFArjf8Lh8Tq/b7/j8HdTamFhjExAJeoWGh4iJeQkQE14UGRaK
68
+ k5SVlnIWGRRbEh6Xn6Cheh4SWSUhoqmqqyEjVxWrsbKgFSRUsLO5uokVUyW7
69
+ wMF5JVESqMLIyW8ipU4UGMrRyRibTRnS2MIZTROS2d+5Fo5LF+DmsxdMhOfs
70
+ qQlLGu3yohpKHfP4lx1KMvn+kwqUcPhH8BAHJR8KKszzQYmAhRDrCHAYsWKc
71
+ iUkeWtyIEYnGjRU7HvkIEqJIIyRLKjxZJKVKgiyJuHzpL+aQmTTx2RSCM6e8
72
+ /500evpkB1TopAIKEAwIwLRpgAEQHhQYWqioqAcRnGrdiuAAVTxWPx1YsLXs
73
+ 1gFeLS01y7apgQFQCRxoICtspQIQ2uplGmEqpbV7AwdggECBKruTGpAV3JbB
74
+ OkWAGQc2QMDvJ8SJEhiQvNcwZM6SDTwAhfmQZtB7CXxGzRjBZYqKCixm3dY1
75
+ osi09Q6wPKl0oay59do2hDs42wGWfOd5YLzzoeLNy0KopBwPg+h6PeuBjl3r
76
+ 6N6wDynorvcxHu7kmRrgfai6HeDpy0YohD6+akXu68Q3u4C9nfrprYdfeIUc
77
+ IFlhByTowGx79UXcfmw5MGBGiBAgmAFpxXHAdcLdBv8hfxN6VOFk5sVRAAK1
78
+ JQIgU/cBkOCLDkDAIWN0IZLfHCjuNd0dOW61o4ep3fHAjM7ZSOB2gWVoR49N
79
+ aQekXi3WIZtgPxpyoxx57fUdHkw6+WRbUdbRwGZ7IWckhYdYuNdwd0wZgJdf
80
+ shVmHWrqxUAiV8bBXGA14pGAY2oFNicdCQiG55F5NCBYf8GsGMCgdBh6poiI
81
+ MNgWo7s4CukckraHaB4OMIZpLpoW0qmVn+JRgGSjylJqoqdWlSqXkgE6y6t4
82
+ jLeXAYeiiUgBZF5YYiq43kHkcb1SmkionMEZSrF1MJnipCP9BdqmgQZpxwGO
83
+ MiUhtShRAixobD4r6BsFvHj/AAEIHLtXn6j6qshpnLX6SbfY3ZlstZUYCJqt
84
+ oOAb3bfgtnSJrpyJZu6HWgm4b7gHs0Zwtgw3he0deeaBMGflTiJwcAz4J6u8
85
+ lhwQrGS7UVzxsPEq+wm99cKrYsVMOdsyv6EkYKmw1lZs880Qi+Jmwiwj+aEB
86
+ PwNtsConomZA0ed9uADUnpIsSp2hUV3Hx4wZMHFys36iwMmLinwH17tWJkrG
87
+ k/wJmpkPdncxeFYzvbO29JHX8Wt1ryItn3FD+TdbSpIWdirMMgZ3HpqOKdji
88
+ hvcdy8ZJ5h0k1nptGbnLuzxAdlvzGQ0lAOMGpm8obIMC815my/Eq5W19Dbbk
89
+ s+wZ/1jScODqrlkO8815MIl3yPi5bvhLvO84J3P3VguIDmbuNG6e/CQOYIiI
90
+ 7Xo5LycchQq2d4jTI5LAWpDr8XlZrUOPtxuDm6X1yL8bgrnsUe9VOB3QKvo4
91
+ 8kEfsuFWBpBZ/fRyvzlACwCYa0sBCyaTX7UvAM0zxPm2ssA4HLB0ezkdJVI3
92
+ NuHlwXjZG9763hC87MwufnRoQLe+Z6LdlUV7ZoGUCwGYvjxkbIJmcZCUlsc8
93
+ GJYFUtgb3QYPB4cHmoUBmoPD/7znw61sqlsBHCLt4qA/zjBALjDioVlw94YD
94
+ vgGEHnzY0vSQQJrVsIvHwxFj3icRIsKhADPcT+hEKMQUKv+ObiisQxArVkHX
95
+ pXEOZTRLH+2QOgAYkTzl+88f5YBBO4Gvf3oYGsPYiMYRzqGEbeHiHAoJgNXt
96
+ h36KtOQc4uiU3sEvfHoAY3pYuLVFzmGP26taHnMFoQg+x5UGvJAAMebGOpgs
97
+ PTq8pSjnoEq2sHKTvayDzrpTJWHWkVaCoaQbOGmiLIFskGfD5RyqWCalNfAS
98
+ DYAPaChzxmwOkw6BLAs230DNFEIAh2VZgALKmZN22iEBBIjA3d4CgXl+BSzJ
99
+ /Gcy7CnQWRC0oLE4KEIPE9CF7kKhDkVdQyNq0IlSNKEWvShDp6jRh2a0oxLl
100
+ KEgrKtKRYrSkJt0oEhKS0mQ0JAmsA2kpMg6SBE3KVBQzsMdNhbGPJMRjp8CI
101
+ wRKkCVRKvIMcRc1FOpbQjaTGQhzWcOoqttGEZ0hVFNR4ggREcNVPMCMKI+jq
102
+ JVwhBVyIVRG9mAIJVnDWRKzAFlU4wQvaqocXnCALKIAGXe2AARRsIQUuMEpX
103
+ BeCCFHjBABdow14BAIILGGAMGlDBBmDgiaR6AAYbUEE9zsDZznr2s6ANrWhH
104
+ S9rSmva0qE2tarEQBAA7
105
+ http_version:
106
+ recorded_at: Fri, 09 Aug 2013 22:12:48 GMT
107
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,107 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://soraven.com/blog/wp-content/uploads/2013/06/sr3.gif
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - soraven.com
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Date:
24
+ - Fri, 09 Aug 2013 22:12:49 GMT
25
+ Server:
26
+ - Apache
27
+ Last-Modified:
28
+ - Sat, 15 Jun 2013 08:47:57 GMT
29
+ Accept-Ranges:
30
+ - bytes
31
+ Content-Length:
32
+ - '2985'
33
+ Content-Type:
34
+ - image/gif
35
+ body:
36
+ encoding: ASCII-8BIT
37
+ string: !binary |-
38
+ R0lGODlhlgCWANU0AAAAAP///w8PD8DAwICAgBAQEPDw8EBAQKCgoDAwMGBg
39
+ YNDQ0ODg4CAgIHBwcFBQUJCQkLCwsMnJyfPz8/n5+Xh4eBISEo2NjSQkJIeH
40
+ h9vb22ZmZjk5OZaWlicnJx4eHi0tLQkJCQYGBqKiovz8/KWlpZmZmYqKisPD
41
+ w/b29pOTk2lpad7e3jY2NoSEhAMDAzMzM9jY2GNjY11dXf///wAAAAAAAAAA
42
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFj
43
+ a2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
44
+ Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0
45
+ az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAy
46
+ LzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0
47
+ dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8
48
+ cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6
49
+ Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8v
50
+ bnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDov
51
+ L25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1w
52
+ OkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHht
53
+ cE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0UwNDQ4NzRENTk4MTFFMkFCNDFB
54
+ MDcyODNBREQxOUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0UwNDQ4
55
+ NzVENTk4MTFFMkFCNDFBMDcyODNBREQxOUUiPiA8eG1wTU06RGVyaXZlZEZy
56
+ b20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTA0NDg3MkQ1OTgxMUUy
57
+ QUI0MUEwNzI4M0FERDE5RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoz
58
+ RTA0NDg3M0Q1OTgxMUUyQUI0MUEwNzI4M0FERDE5RSIvPiA8L3JkZjpEZXNj
59
+ cmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVu
60
+ ZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb
61
+ 2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+u
62
+ rayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KB
63
+ gH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVU
64
+ U1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgn
65
+ JiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEA
66
+ ADQALAAAAACWAJYAAAb/QJpwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+Cw
67
+ eEwum7ks06YFArjf8Lh8Tq/b7/j8HdTamFhjExAJeoWGh4iJeQkQE14UGRaK
68
+ k5SVlnIWGRRbEh6Xn6Cheh4SWSUhoqmqqyEjVxWrsbKgFSRUsLO5uokVUyW7
69
+ wMF5JVESqMLIyW8ipU4UGMrRyRibTRnS2MIZTROS2d+5Fo5LF+DmsxdMhOfs
70
+ qQlLGu3yohpKHfP4lx1KMvn+kwqUcPhH8BAHJR8KKszzQYmAhRDrCHAYsWKc
71
+ iUkeWtyIEYnGjRU7HvkIEqJIIyRLKjxZJKVKgiyJuHzpL+aQmTTx2RSCM6e8
72
+ /500evpkB1TopAIKEAwIwLRpgAEQHhQYWqioqAcRnGrdiuAAVTxWPx1YsLXs
73
+ 1gFeLS01y7apgQFQCRxoICtspQIQ2uplGmEqpbV7AwdggECBKruTGpAV3JbB
74
+ OkWAGQc2QMDvJ8SJEhiQvNcwZM6SDTwAhfmQZtB7CXxGzRjBZYqKCixm3dY1
75
+ osi09Q6wPKl0oay59do2hDs42wGWfOd5YLzzoeLNy0KopBwPg+h6PeuBjl3r
76
+ 6N6wDynorvcxHu7kmRrgfai6HeDpy0YohD6+akXu68Q3u4C9nfrprYdfeIUc
77
+ IFlhByTowGx79UXcfmw5MGBGiBAgmAFpxXHAdcLdBv8hfxN6VOFk5sVRAAK1
78
+ JQIgU/cBkOCLDkDAIWN0IZLfHCjuNd0dOW61o4ep3fHAjM7ZSOB2gWVoR49N
79
+ aQekXi3WIZtgPxpyoxx57fUdHkw6+WRbUdbRwGZ7IWckhYdYuNdwd0wZgJdf
80
+ shVmHWrqxUAiV8bBXGA14pGAY2oFNicdCQiG55F5NCBYf8GsGMCgdBh6poiI
81
+ MNgWo7s4CukckraHaB4OMIZpLpoW0qmVn+JRgGSjylJqoqdWlSqXkgE6y6t4
82
+ jLeXAYeiiUgBZF5YYiq43kHkcb1SmkionMEZSrF1MJnipCP9BdqmgQZpxwGO
83
+ MiUhtShRAixobD4r6BsFvHj/AAEIHLtXn6j6qshpnLX6SbfY3ZlstZUYCJqt
84
+ oOAb3bfgtnSJrpyJZu6HWgm4b7gHs0Zwtgw3he0deeaBMGflTiJwcAz4J6u8
85
+ lhwQrGS7UVzxsPEq+wm99cKrYsVMOdsyv6EkYKmw1lZs880Qi+Jmwiwj+aEB
86
+ PwNtsConomZA0ed9uADUnpIsSp2hUV3Hx4wZMHFys36iwMmLinwH17tWJkrG
87
+ k/wJmpkPdncxeFYzvbO29JHX8Wt1ryItn3FD+TdbSpIWdirMMgZ3HpqOKdji
88
+ hvcdy8ZJ5h0k1nptGbnLuzxAdlvzGQ0lAOMGpm8obIMC815my/Eq5W19Dbbk
89
+ s+wZ/1jScODqrlkO8815MIl3yPi5bvhLvO84J3P3VguIDmbuNG6e/CQOYIiI
90
+ 7Xo5LycchQq2d4jTI5LAWpDr8XlZrUOPtxuDm6X1yL8bgrnsUe9VOB3QKvo4
91
+ 8kEfsuFWBpBZ/fRyvzlACwCYa0sBCyaTX7UvAM0zxPm2ssA4HLB0ezkdJVI3
92
+ NuHlwXjZG9763hC87MwufnRoQLe+Z6LdlUV7ZoGUCwGYvjxkbIJmcZCUlsc8
93
+ GJYFUtgb3QYPB4cHmoUBmoPD/7znw61sqlsBHCLt4qA/zjBALjDioVlw94YD
94
+ vgGEHnzY0vSQQJrVsIvHwxFj3icRIsKhADPcT+hEKMQUKv+ObiisQxArVkHX
95
+ pXEOZTRLH+2QOgAYkTzl+88f5YBBO4Gvf3oYGsPYiMYRzqGEbeHiHAoJgNXt
96
+ h36KtOQc4uiU3sEvfHoAY3pYuLVFzmGP26taHnMFoQg+x5UGvJAAMebGOpgs
97
+ PTq8pSjnoEq2sHKTvayDzrpTJWHWkVaCoaQbOGmiLIFskGfD5RyqWCalNfAS
98
+ DYAPaChzxmwOkw6BLAs230DNFEIAh2VZgALKmZN22iEBBIjA3d4CgXl+BSzJ
99
+ /Gcy7CnQWRC0oLE4KEIPE9CF7kKhDkVdQyNq0IlSNKEWvShDp6jRh2a0oxLl
100
+ KEgrKtKRYrSkJt0oEhKS0mQ0JAmsA2kpMg6SBE3KVBQzsMdNhbGPJMRjp8CI
101
+ wRKkCVRKvIMcRc1FOpbQjaTGQhzWcOoqttGEZ0hVFNR4ggREcNVPMCMKI+jq
102
+ JVwhBVyIVRG9mAIJVnDWRKzAFlU4wQvaqocXnCALKIAGXe2AARRsIQUuMEpX
103
+ BeCCFHjBABdow14BAIILGGAMGlDBBmDgiaR6AAYbUEE9zsDZznr2s6ANrWhH
104
+ S9rSmva0qE2tarEQBAA7
105
+ http_version:
106
+ recorded_at: Fri, 09 Aug 2013 22:12:50 GMT
107
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,46 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://data-pixelapse.s3.amazonaws.com/12061/271934/orig_232903?AWSAccessKeyId=<AWS_ID>&Expires=1376089970&Signature=hbtQM2Az4viropQJZNUy7cqJWa8=
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ Host:
17
+ - data-pixelapse.s3.amazonaws.com
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ X-Amz-Id-2:
24
+ - O2rlqW/ubwjAIZ2pV4Ug3is3N7pl+cjghHdBemSlnSDnZfJXjX1JAWtndZxOLUpM
25
+ X-Amz-Request-Id:
26
+ - E962F3B837EDD910
27
+ Date:
28
+ - Fri, 09 Aug 2013 22:12:51 GMT
29
+ Last-Modified:
30
+ - Tue, 06 Nov 2012 18:03:02 GMT
31
+ Etag:
32
+ - '"571411c9077a539675188e984056c508"'
33
+ Accept-Ranges:
34
+ - bytes
35
+ Content-Type:
36
+ - application/octet-stream
37
+ Content-Length:
38
+ - '8'
39
+ Server:
40
+ - AmazonS3
41
+ body:
42
+ encoding: UTF-8
43
+ string: "#empty\r\n"
44
+ http_version:
45
+ recorded_at: Fri, 09 Aug 2013 22:12:50 GMT
46
+ recorded_with: VCR 2.5.0
data/spec/helper.rb ADDED
@@ -0,0 +1,46 @@
1
+ require 'worochi'
2
+ require 'awesome_print'
3
+ require 'digest'
4
+ require 'ostruct'
5
+ require 'vcr'
6
+
7
+ Dir["./spec/support/**/*.rb"].sort.each { |f| require f }
8
+
9
+ VCR.configure do |c|
10
+ c.cassette_library_dir = 'spec/cassettes'
11
+ c.hook_into :webmock
12
+ c.configure_rspec_metadata!
13
+ c.default_cassette_options = {
14
+ record: :once
15
+ }
16
+ end
17
+
18
+ # Removes sensitive keys from recordings
19
+ VCR.configure do |c|
20
+ c.filter_sensitive_data('<AWS_KEY>') { ENV['AWS_SECRET_ACCESS_KEY'] }
21
+ c.filter_sensitive_data('<AWS_ID>') { ENV['AWS_ACCESS_KEY_ID'] }
22
+ c.filter_sensitive_data('<GITHUB_TOKEN>') { ENV['GITHUB_TEST_TOKEN'] }
23
+ c.filter_sensitive_data('<DROPBOX_TOKEN>') { ENV['DROPBOX_TEST_TOKEN'] }
24
+ end
25
+
26
+ RSpec.configure do |c|
27
+ c.color_enabled = true
28
+ c.tty = true
29
+ c.formatter = :documentation
30
+ c.treat_symbols_as_metadata_keys_with_true_values = true # needed for vcr
31
+ c.include TestFiles
32
+
33
+ original_stderr = $stderr
34
+ original_stdout = $stdout
35
+ c.before(:all) do
36
+ Worochi::Config.silent = true
37
+ end
38
+ c.after(:all) do
39
+ Worochi::Config.silent = false
40
+ end
41
+
42
+ # Exclude tests involving AWS if secret key is not set
43
+ if !ENV['AWS_SECRET_ACCESS_KEY']
44
+ c.filter_run_excluding :aws
45
+ end
46
+ end
@@ -0,0 +1,12 @@
1
+ # Allows of matching of dynamic AWS addresses for playback
2
+ VCR.configure do |c|
3
+ c.register_request_matcher :uri_aws do |x, y|
4
+ next true if x.uri == y.uri
5
+ next false unless x.uri.include?('amazonaws.com')
6
+ URI(x.uri).path == URI(y.uri).path
7
+ end
8
+
9
+ c.default_cassette_options = {
10
+ match_requests_on: [:method, :uri_aws]
11
+ }
12
+ end
@@ -0,0 +1,36 @@
1
+ shared_examples_for 'a service agent' do
2
+ describe '#default_options' do
3
+ it 'has the required options' do
4
+ (required_keys + [:dir, :service]).each do |key|
5
+ expect(agent.default_options).to include(key)
6
+ end
7
+ end
8
+ end
9
+
10
+ describe '#init_client' do
11
+ it 'returns the client' do
12
+ client = agent.init_client
13
+ expect(client.class).to be(client_class)
14
+ end
15
+ end
16
+
17
+ describe '#files', :vcr do
18
+ it 'contains file1' do
19
+ expect(agent.files).to include('file1')
20
+ end
21
+
22
+ it 'accepts a different relative path' do
23
+ expect(agent.files('folder1')).to include('test.txt')
24
+ end
25
+ end
26
+
27
+ describe '#folders', :vcr do
28
+ it 'contains folder1' do
29
+ expect(agent.folders).to include('folder1')
30
+ end
31
+
32
+ it 'accepts a different relative path' do
33
+ expect(agent.folders('folder1').size).to be(0)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1 @@
1
+ This is a file used for RSpec tests involving Worochi::Item.
@@ -0,0 +1,34 @@
1
+ module TestFiles
2
+ # Remote file for testing.
3
+ def remote
4
+ @remote ||= OpenStruct.new({
5
+ source: 'http://soraven.com/blog/wp-content/uploads/2013/06/sr3.gif',
6
+ checksum: '3c0d873709da4a08e9d9978f678dbc30a6cc5138182c2fee56db1c0b8b806d67',
7
+ name: 'sr3.gif',
8
+ path: '/folder1/sr3.gif',
9
+ size: 2985
10
+ })
11
+ end
12
+
13
+ # Local file for testing.
14
+ def local
15
+ @local ||= OpenStruct.new({
16
+ source: File.join(File.dirname(__FILE__), 'test_file'),
17
+ checksum: '798d1088d589c155841cfd6ddd5c8254e883d49220d3a60c10d0f77ce96a5ac4',
18
+ name: 'test_file',
19
+ path: '/folder2/test_file',
20
+ size: File.open(File.join(File.dirname(__FILE__), 'test_file')).size
21
+ })
22
+ end
23
+
24
+ # Amazon S3 file for testing.
25
+ def s3
26
+ @s3 ||= OpenStruct.new({
27
+ source: 's3:12061/271934/orig_232903',
28
+ checksum: 'f0891f199f0966ec1b1d209b91ff3f51273577944dbbe338f1947ae9f33cb79a',
29
+ name: '__init__.py',
30
+ path: '/folder3/__init__.py',
31
+ size: 4257
32
+ })
33
+ end
34
+ end
@@ -0,0 +1,48 @@
1
+ require 'helper'
2
+
3
+ describe Worochi::Agent::Dropbox do
4
+ let(:required_keys) { [:chunk_size, :overwrite] }
5
+ let(:client_class) { DropboxClient }
6
+
7
+ let(:agent) do
8
+ Worochi::Agent::Dropbox.new({
9
+ token: ENV['DROPBOX_TEST_TOKEN'],
10
+ dir: '/Dev/test'
11
+ })
12
+ end
13
+
14
+ it_should_behave_like 'a service agent'
15
+
16
+ describe '#push_item', :vcr do
17
+ it 'pushes a single item' do
18
+ agent.delete(local.name)
19
+ expect(agent.files).not_to include(local.name)
20
+
21
+ item = Worochi::Item.open_single(local.source)
22
+ agent.push_item(item)
23
+
24
+ expect(agent.files).to include(local.name)
25
+ agent.delete(local.name)
26
+ end
27
+ end
28
+
29
+ describe '#push_item_chunked', :vcr do
30
+ it 'pushes a single item in chunks' do
31
+ agent.delete(local.name)
32
+ expect(agent.files).not_to include(local.name)
33
+
34
+ item = Worochi::Item.open_single(local.source)
35
+ agent.push_item_chunked(item)
36
+
37
+ expect(agent.files).to include(local.name)
38
+ agent.delete(local.name)
39
+ end
40
+ end
41
+
42
+ describe '#list', :vcr do
43
+ it 'works with absolute paths' do
44
+ ls = agent.list('/Dev/test/folder2/subfolder/test').map { |x| x[:name] }
45
+ expect(ls).to include('abc.txt')
46
+ end
47
+ end
48
+ end