worochi 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +82 -24
  3. data/lib/worochi/agent/#example.rb +6 -0
  4. data/lib/worochi/agent/dropbox.rb +6 -8
  5. data/lib/worochi/agent/github.rb +7 -2
  6. data/lib/worochi/agent/google_drive.rb +272 -0
  7. data/lib/worochi/agent.rb +23 -2
  8. data/lib/worochi/config/google_drive.yml +3 -1
  9. data/lib/worochi/item.rb +42 -1
  10. data/lib/worochi/oauth.rb +16 -8
  11. data/lib/worochi/version.rb +1 -1
  12. data/lib/worochi.rb +1 -0
  13. data/spec/cassettes/Worochi_Agent_GoogleDrive/_delete/deletes_a_file.yml +4248 -0
  14. data/spec/cassettes/Worochi_Agent_GoogleDrive/_delete/raises_error_on_bad_token.yml +7889 -0
  15. data/spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/retrieves_the_item_ID.yml +4148 -0
  16. data/spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/returns_the_root_ID.yml +3889 -0
  17. data/spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/creates_a_new_folder_to_root.yml +4753 -0
  18. data/spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/uploads_a_file.yml +4492 -0
  19. data/spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/creates_new_directories_as_needed.yml +5961 -0
  20. data/spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/pushes_a_single_item.yml +3887 -0
  21. data/spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/raises_error_on_bad_token.yml +7833 -0
  22. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_default_options/has_the_required_options.yml +3889 -0
  23. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml +4294 -0
  24. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/contains_file1.yml +4236 -0
  25. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/does_not_contain_folder1.yml +4236 -0
  26. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/raises_error_on_invalid_path.yml +4236 -0
  27. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/contains_folder1_and_file1.yml +4583 -0
  28. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/shows_detailed_listing_including_the_required_fields.yml +4236 -0
  29. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml +4294 -0
  30. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml +4236 -0
  31. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/does_not_contain_file1.yml +4236 -0
  32. data/spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_init_client/returns_the_client.yml +7775 -0
  33. data/spec/cassettes/Worochi_Item/_content_type/detects_the_MIME_type.yml +105 -0
  34. data/spec/cassettes/Worochi_Item/_content_type/falls_back_to_file_name_when_ruby-filemagic_is_not_loaded.yml +105 -0
  35. data/spec/spec_helper.rb +5 -0
  36. data/spec/support/shared_exampes_for_agents.rb +2 -2
  37. data/spec/worochi/agent/github_spec.rb +6 -0
  38. data/spec/worochi/agent/google_drive_spec.rb +79 -0
  39. data/spec/worochi/agent_spec.rb +13 -1
  40. data/spec/worochi/item_spec.rb +18 -0
  41. data/spec/worochi/oauth_spec.rb +1 -1
  42. data/worochi.gemspec +4 -0
  43. metadata +104 -1
@@ -0,0 +1,105 @@
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
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Thu, 22 Aug 2013 00:13:39 GMT
23
+ Server:
24
+ - Apache
25
+ Last-Modified:
26
+ - Sat, 15 Jun 2013 08:47:57 GMT
27
+ Accept-Ranges:
28
+ - bytes
29
+ Content-Length:
30
+ - '2985'
31
+ Content-Type:
32
+ - image/gif
33
+ body:
34
+ encoding: ASCII-8BIT
35
+ string: !binary |-
36
+ R0lGODlhlgCWANU0AAAAAP///w8PD8DAwICAgBAQEPDw8EBAQKCgoDAwMGBg
37
+ YNDQ0ODg4CAgIHBwcFBQUJCQkLCwsMnJyfPz8/n5+Xh4eBISEo2NjSQkJIeH
38
+ h9vb22ZmZjk5OZaWlicnJx4eHi0tLQkJCQYGBqKiovz8/KWlpZmZmYqKisPD
39
+ w/b29pOTk2lpad7e3jY2NoSEhAMDAzMzM9jY2GNjY11dXf///wAAAAAAAAAA
40
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFj
41
+ a2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
42
+ Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0
43
+ az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAy
44
+ LzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0
45
+ dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8
46
+ cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6
47
+ Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8v
48
+ bnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDov
49
+ L25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1w
50
+ OkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHht
51
+ cE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0UwNDQ4NzRENTk4MTFFMkFCNDFB
52
+ MDcyODNBREQxOUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0UwNDQ4
53
+ NzVENTk4MTFFMkFCNDFBMDcyODNBREQxOUUiPiA8eG1wTU06RGVyaXZlZEZy
54
+ b20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTA0NDg3MkQ1OTgxMUUy
55
+ QUI0MUEwNzI4M0FERDE5RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoz
56
+ RTA0NDg3M0Q1OTgxMUUyQUI0MUEwNzI4M0FERDE5RSIvPiA8L3JkZjpEZXNj
57
+ cmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVu
58
+ ZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb
59
+ 2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+u
60
+ rayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KB
61
+ gH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVU
62
+ U1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgn
63
+ JiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEA
64
+ ADQALAAAAACWAJYAAAb/QJpwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+Cw
65
+ eEwum7ks06YFArjf8Lh8Tq/b7/j8HdTamFhjExAJeoWGh4iJeQkQE14UGRaK
66
+ k5SVlnIWGRRbEh6Xn6Cheh4SWSUhoqmqqyEjVxWrsbKgFSRUsLO5uokVUyW7
67
+ wMF5JVESqMLIyW8ipU4UGMrRyRibTRnS2MIZTROS2d+5Fo5LF+DmsxdMhOfs
68
+ qQlLGu3yohpKHfP4lx1KMvn+kwqUcPhH8BAHJR8KKszzQYmAhRDrCHAYsWKc
69
+ iUkeWtyIEYnGjRU7HvkIEqJIIyRLKjxZJKVKgiyJuHzpL+aQmTTx2RSCM6e8
70
+ /500evpkB1TopAIKEAwIwLRpgAEQHhQYWqioqAcRnGrdiuAAVTxWPx1YsLXs
71
+ 1gFeLS01y7apgQFQCRxoICtspQIQ2uplGmEqpbV7AwdggECBKruTGpAV3JbB
72
+ OkWAGQc2QMDvJ8SJEhiQvNcwZM6SDTwAhfmQZtB7CXxGzRjBZYqKCixm3dY1
73
+ osi09Q6wPKl0oay59do2hDs42wGWfOd5YLzzoeLNy0KopBwPg+h6PeuBjl3r
74
+ 6N6wDynorvcxHu7kmRrgfai6HeDpy0YohD6+akXu68Q3u4C9nfrprYdfeIUc
75
+ IFlhByTowGx79UXcfmw5MGBGiBAgmAFpxXHAdcLdBv8hfxN6VOFk5sVRAAK1
76
+ JQIgU/cBkOCLDkDAIWN0IZLfHCjuNd0dOW61o4ep3fHAjM7ZSOB2gWVoR49N
77
+ aQekXi3WIZtgPxpyoxx57fUdHkw6+WRbUdbRwGZ7IWckhYdYuNdwd0wZgJdf
78
+ shVmHWrqxUAiV8bBXGA14pGAY2oFNicdCQiG55F5NCBYf8GsGMCgdBh6poiI
79
+ MNgWo7s4CukckraHaB4OMIZpLpoW0qmVn+JRgGSjylJqoqdWlSqXkgE6y6t4
80
+ jLeXAYeiiUgBZF5YYiq43kHkcb1SmkionMEZSrF1MJnipCP9BdqmgQZpxwGO
81
+ MiUhtShRAixobD4r6BsFvHj/AAEIHLtXn6j6qshpnLX6SbfY3ZlstZUYCJqt
82
+ oOAb3bfgtnSJrpyJZu6HWgm4b7gHs0Zwtgw3he0deeaBMGflTiJwcAz4J6u8
83
+ lhwQrGS7UVzxsPEq+wm99cKrYsVMOdsyv6EkYKmw1lZs880Qi+Jmwiwj+aEB
84
+ PwNtsConomZA0ed9uADUnpIsSp2hUV3Hx4wZMHFys36iwMmLinwH17tWJkrG
85
+ k/wJmpkPdncxeFYzvbO29JHX8Wt1ryItn3FD+TdbSpIWdirMMgZ3HpqOKdji
86
+ hvcdy8ZJ5h0k1nptGbnLuzxAdlvzGQ0lAOMGpm8obIMC815my/Eq5W19Dbbk
87
+ s+wZ/1jScODqrlkO8815MIl3yPi5bvhLvO84J3P3VguIDmbuNG6e/CQOYIiI
88
+ 7Xo5LycchQq2d4jTI5LAWpDr8XlZrUOPtxuDm6X1yL8bgrnsUe9VOB3QKvo4
89
+ 8kEfsuFWBpBZ/fRyvzlACwCYa0sBCyaTX7UvAM0zxPm2ssA4HLB0ezkdJVI3
90
+ NuHlwXjZG9763hC87MwufnRoQLe+Z6LdlUV7ZoGUCwGYvjxkbIJmcZCUlsc8
91
+ GJYFUtgb3QYPB4cHmoUBmoPD/7znw61sqlsBHCLt4qA/zjBALjDioVlw94YD
92
+ vgGEHnzY0vSQQJrVsIvHwxFj3icRIsKhADPcT+hEKMQUKv+ObiisQxArVkHX
93
+ pXEOZTRLH+2QOgAYkTzl+88f5YBBO4Gvf3oYGsPYiMYRzqGEbeHiHAoJgNXt
94
+ h36KtOQc4uiU3sEvfHoAY3pYuLVFzmGP26taHnMFoQg+x5UGvJAAMebGOpgs
95
+ PTq8pSjnoEq2sHKTvayDzrpTJWHWkVaCoaQbOGmiLIFskGfD5RyqWCalNfAS
96
+ DYAPaChzxmwOkw6BLAs230DNFEIAh2VZgALKmZN22iEBBIjA3d4CgXl+BSzJ
97
+ /Gcy7CnQWRC0oLE4KEIPE9CF7kKhDkVdQyNq0IlSNKEWvShDp6jRh2a0oxLl
98
+ KEgrKtKRYrSkJt0oEhKS0mQ0JAmsA2kpMg6SBE3KVBQzsMdNhbGPJMRjp8CI
99
+ wRKkCVRKvIMcRc1FOpbQjaTGQhzWcOoqttGEZ0hVFNR4ggREcNVPMCMKI+jq
100
+ JVwhBVyIVRG9mAIJVnDWRKzAFlU4wQvaqocXnCALKIAGXe2AARRsIQUuMEpX
101
+ BeCCFHjBABdow14BAIILGGAMGlDBBmDgiaR6AAYbUEE9zsDZznr2s6ANrWhH
102
+ S9rSmva0qE2tarEQBAA7
103
+ http_version:
104
+ recorded_at: Thu, 22 Aug 2013 00:13:39 GMT
105
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,105 @@
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
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Thu, 22 Aug 2013 00:13:41 GMT
23
+ Server:
24
+ - Apache
25
+ Last-Modified:
26
+ - Sat, 15 Jun 2013 08:47:57 GMT
27
+ Accept-Ranges:
28
+ - bytes
29
+ Content-Length:
30
+ - '2985'
31
+ Content-Type:
32
+ - image/gif
33
+ body:
34
+ encoding: ASCII-8BIT
35
+ string: !binary |-
36
+ R0lGODlhlgCWANU0AAAAAP///w8PD8DAwICAgBAQEPDw8EBAQKCgoDAwMGBg
37
+ YNDQ0ODg4CAgIHBwcFBQUJCQkLCwsMnJyfPz8/n5+Xh4eBISEo2NjSQkJIeH
38
+ h9vb22ZmZjk5OZaWlicnJx4eHi0tLQkJCQYGBqKiovz8/KWlpZmZmYqKisPD
39
+ w/b29pOTk2lpad7e3jY2NoSEhAMDAzMzM9jY2GNjY11dXf///wAAAAAAAAAA
40
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFj
41
+ a2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
42
+ Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0
43
+ az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAy
44
+ LzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0
45
+ dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8
46
+ cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6
47
+ Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8v
48
+ bnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDov
49
+ L25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1w
50
+ OkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHht
51
+ cE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0UwNDQ4NzRENTk4MTFFMkFCNDFB
52
+ MDcyODNBREQxOUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0UwNDQ4
53
+ NzVENTk4MTFFMkFCNDFBMDcyODNBREQxOUUiPiA8eG1wTU06RGVyaXZlZEZy
54
+ b20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRTA0NDg3MkQ1OTgxMUUy
55
+ QUI0MUEwNzI4M0FERDE5RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoz
56
+ RTA0NDg3M0Q1OTgxMUUyQUI0MUEwNzI4M0FERDE5RSIvPiA8L3JkZjpEZXNj
57
+ cmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVu
58
+ ZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb
59
+ 2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+u
60
+ rayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KB
61
+ gH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVU
62
+ U1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgn
63
+ JiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEA
64
+ ADQALAAAAACWAJYAAAb/QJpwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+Cw
65
+ eEwum7ks06YFArjf8Lh8Tq/b7/j8HdTamFhjExAJeoWGh4iJeQkQE14UGRaK
66
+ k5SVlnIWGRRbEh6Xn6Cheh4SWSUhoqmqqyEjVxWrsbKgFSRUsLO5uokVUyW7
67
+ wMF5JVESqMLIyW8ipU4UGMrRyRibTRnS2MIZTROS2d+5Fo5LF+DmsxdMhOfs
68
+ qQlLGu3yohpKHfP4lx1KMvn+kwqUcPhH8BAHJR8KKszzQYmAhRDrCHAYsWKc
69
+ iUkeWtyIEYnGjRU7HvkIEqJIIyRLKjxZJKVKgiyJuHzpL+aQmTTx2RSCM6e8
70
+ /500evpkB1TopAIKEAwIwLRpgAEQHhQYWqioqAcRnGrdiuAAVTxWPx1YsLXs
71
+ 1gFeLS01y7apgQFQCRxoICtspQIQ2uplGmEqpbV7AwdggECBKruTGpAV3JbB
72
+ OkWAGQc2QMDvJ8SJEhiQvNcwZM6SDTwAhfmQZtB7CXxGzRjBZYqKCixm3dY1
73
+ osi09Q6wPKl0oay59do2hDs42wGWfOd5YLzzoeLNy0KopBwPg+h6PeuBjl3r
74
+ 6N6wDynorvcxHu7kmRrgfai6HeDpy0YohD6+akXu68Q3u4C9nfrprYdfeIUc
75
+ IFlhByTowGx79UXcfmw5MGBGiBAgmAFpxXHAdcLdBv8hfxN6VOFk5sVRAAK1
76
+ JQIgU/cBkOCLDkDAIWN0IZLfHCjuNd0dOW61o4ep3fHAjM7ZSOB2gWVoR49N
77
+ aQekXi3WIZtgPxpyoxx57fUdHkw6+WRbUdbRwGZ7IWckhYdYuNdwd0wZgJdf
78
+ shVmHWrqxUAiV8bBXGA14pGAY2oFNicdCQiG55F5NCBYf8GsGMCgdBh6poiI
79
+ MNgWo7s4CukckraHaB4OMIZpLpoW0qmVn+JRgGSjylJqoqdWlSqXkgE6y6t4
80
+ jLeXAYeiiUgBZF5YYiq43kHkcb1SmkionMEZSrF1MJnipCP9BdqmgQZpxwGO
81
+ MiUhtShRAixobD4r6BsFvHj/AAEIHLtXn6j6qshpnLX6SbfY3ZlstZUYCJqt
82
+ oOAb3bfgtnSJrpyJZu6HWgm4b7gHs0Zwtgw3he0deeaBMGflTiJwcAz4J6u8
83
+ lhwQrGS7UVzxsPEq+wm99cKrYsVMOdsyv6EkYKmw1lZs880Qi+Jmwiwj+aEB
84
+ PwNtsConomZA0ed9uADUnpIsSp2hUV3Hx4wZMHFys36iwMmLinwH17tWJkrG
85
+ k/wJmpkPdncxeFYzvbO29JHX8Wt1ryItn3FD+TdbSpIWdirMMgZ3HpqOKdji
86
+ hvcdy8ZJ5h0k1nptGbnLuzxAdlvzGQ0lAOMGpm8obIMC815my/Eq5W19Dbbk
87
+ s+wZ/1jScODqrlkO8815MIl3yPi5bvhLvO84J3P3VguIDmbuNG6e/CQOYIiI
88
+ 7Xo5LycchQq2d4jTI5LAWpDr8XlZrUOPtxuDm6X1yL8bgrnsUe9VOB3QKvo4
89
+ 8kEfsuFWBpBZ/fRyvzlACwCYa0sBCyaTX7UvAM0zxPm2ssA4HLB0ezkdJVI3
90
+ NuHlwXjZG9763hC87MwufnRoQLe+Z6LdlUV7ZoGUCwGYvjxkbIJmcZCUlsc8
91
+ GJYFUtgb3QYPB4cHmoUBmoPD/7znw61sqlsBHCLt4qA/zjBALjDioVlw94YD
92
+ vgGEHnzY0vSQQJrVsIvHwxFj3icRIsKhADPcT+hEKMQUKv+ObiisQxArVkHX
93
+ pXEOZTRLH+2QOgAYkTzl+88f5YBBO4Gvf3oYGsPYiMYRzqGEbeHiHAoJgNXt
94
+ h36KtOQc4uiU3sEvfHoAY3pYuLVFzmGP26taHnMFoQg+x5UGvJAAMebGOpgs
95
+ PTq8pSjnoEq2sHKTvayDzrpTJWHWkVaCoaQbOGmiLIFskGfD5RyqWCalNfAS
96
+ DYAPaChzxmwOkw6BLAs230DNFEIAh2VZgALKmZN22iEBBIjA3d4CgXl+BSzJ
97
+ /Gcy7CnQWRC0oLE4KEIPE9CF7kKhDkVdQyNq0IlSNKEWvShDp6jRh2a0oxLl
98
+ KEgrKtKRYrSkJt0oEhKS0mQ0JAmsA2kpMg6SBE3KVBQzsMdNhbGPJMRjp8CI
99
+ wRKkCVRKvIMcRc1FOpbQjaTGQhzWcOoqttGEZ0hVFNR4ggREcNVPMCMKI+jq
100
+ JVwhBVyIVRG9mAIJVnDWRKzAFlU4wQvaqocXnCALKIAGXe2AARRsIQUuMEpX
101
+ BeCCFHjBABdow14BAIILGGAMGlDBBmDgiaR6AAYbUEE9zsDZznr2s6ANrWhH
102
+ S9rSmva0qE2tarEQBAA7
103
+ http_version:
104
+ recorded_at: Thu, 22 Aug 2013 00:13:42 GMT
105
+ recorded_with: VCR 2.5.0
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,8 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
8
8
  SimpleCov.start
9
9
 
10
10
  require 'worochi'
11
+ require 'filemagic'
12
+ require 'awesome_print'
11
13
  require 'digest'
12
14
  require 'vcr'
13
15
  require 'webmock/rspec'
@@ -33,6 +35,9 @@ VCR.configure do |c|
33
35
  c.filter_sensitive_data('<DROPBOX_TOKEN>') { ENV['DROPBOX_TEST_TOKEN'] }
34
36
  c.filter_sensitive_data('<DROPBOX_ID>') { ENV['DROPBOX_ID'] }
35
37
  c.filter_sensitive_data('<DROPBOX_SECRET>') { ENV['DROPBOX_SECRET'] }
38
+ c.filter_sensitive_data('<GOOGLE_TOKEN>') { ENV['GOOGLE_TEST_TOKEN'] }
39
+ c.filter_sensitive_data('<GOOGLE_ID>') { ENV['GOOGLE_ID'] }
40
+ c.filter_sensitive_data('<GOOGLE_SECRET>') { ENV['GOOGLE_SECRET'] }
36
41
  end
37
42
 
38
43
  RSpec.configure do |c|
@@ -1,5 +1,5 @@
1
1
  shared_examples_for 'a service agent' do
2
- describe '#default_options' do
2
+ describe '#default_options', :vcr do
3
3
  it 'has the required options' do
4
4
  (required_keys + [:dir, :service]).each do |key|
5
5
  expect(agent.send(:default_options)).to include(key)
@@ -7,7 +7,7 @@ shared_examples_for 'a service agent' do
7
7
  end
8
8
  end
9
9
 
10
- describe '#init_client' do
10
+ describe '#init_client', :vcr do
11
11
  it 'returns the client' do
12
12
  client = agent.init_client
13
13
  expect(client.class).to be(client_class)
@@ -102,4 +102,10 @@ describe Worochi::Agent::Github do
102
102
  expect(ls).to include('abc.txt')
103
103
  end
104
104
  end
105
+
106
+ describe '#delete' do
107
+ it 'does not allow file deletion' do
108
+ expect{agent.delete('test')}.to raise_error(Worochi::Error)
109
+ end
110
+ end
105
111
  end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe Worochi::Agent::GoogleDrive do
4
+ let(:required_keys) { [] }
5
+ let(:client_class) { Google::APIClient }
6
+ let(:folder_id) { '0B30CGkhrN5qzaUJGbFNDRjl0S2M' }
7
+
8
+ let(:agent) do
9
+ Worochi::Agent::GoogleDrive.new(
10
+ token: ENV['GOOGLE_TEST_TOKEN'],
11
+ dir: '/worochi/test')
12
+ end
13
+
14
+ before do
15
+ agent.clear_cache
16
+ end
17
+
18
+ it_should_behave_like 'a service agent'
19
+
20
+ describe '#get_item_id', :vcr do
21
+ it 'retrieves the item ID' do
22
+ expect(agent.send(:get_item_id, '/worochi/test')).to eq(folder_id)
23
+ # test cache
24
+ expect(agent.send(:get_item_id, '/worochi/test')).to eq(folder_id)
25
+ end
26
+ it 'returns the root ID' do
27
+ expect(agent.send(:get_item_id, '/')).to eq('root')
28
+ end
29
+ end
30
+
31
+ describe '#delete', :vcr do
32
+ it 'deletes a file' do
33
+ agent.send(:insert_file, 'to_delete', 'root')
34
+ expect(agent.delete('/to_delete')).to be(true)
35
+ end
36
+ it 'raises error on bad token' do
37
+ bad_agent = Worochi::Agent::GoogleDrive.new(token: 'badtoken')
38
+ expect{bad_agent.delete('test')}.to raise_error(Worochi::Error)
39
+ end
40
+ end
41
+
42
+ describe '#push_item', :vcr do
43
+ it 'pushes a single item' do
44
+ end
45
+ it 'creates new directories as needed' do
46
+ item = Worochi::Item.open_single(
47
+ source: local.source,
48
+ path:'aaa/bbb/ccc.txt')
49
+ agent.push_item(item)
50
+ expect(agent.folders).to include('aaa')
51
+ expect(agent.folders('aaa')).to include('bbb')
52
+ expect(agent.files('aaa/bbb')).to include('ccc.txt')
53
+ expect(agent.delete('aaa')).to be(true)
54
+ end
55
+
56
+ it 'raises error on bad token' do
57
+ bad_agent = Worochi::Agent::GoogleDrive.new(token: 'badtoken')
58
+ item = Worochi::Item.open_single(local.source)
59
+ expect{bad_agent.push_item(item)}.to raise_error(Worochi::Error)
60
+ end
61
+ end
62
+
63
+ describe '#insert_file', :vcr do
64
+ it 'creates a new folder to root' do
65
+ agent.send(:insert_file, 'worochi_insertion_test', folder_id)
66
+ expect(agent.folders).to include('worochi_insertion_test')
67
+ expect(agent.delete('worochi_insertion_test')).to be(true)
68
+ end
69
+
70
+ it 'uploads a file' do
71
+ item = Worochi::Item.open_single(
72
+ source: local.source,
73
+ path: 'worochi_test.txt')
74
+ agent.send(:insert_file, item, 'root')
75
+ expect(agent.files('/')).to include('worochi_test.txt')
76
+ expect(agent.delete('/worochi_test.txt')).to be(true)
77
+ end
78
+ end
79
+ end
@@ -2,13 +2,25 @@ require 'spec_helper'
2
2
 
3
3
  class Worochi
4
4
  describe Agent do
5
- let(:agent) { Agent.new({ service: :github, token: '' }) }
5
+ let(:agent) { Agent.new({ service: :github, token: '', dir: '/folder' }) }
6
6
  describe '.new' do
7
7
  it 'initializes the right child class' do
8
8
  expect(agent.class).to be(Agent::Github)
9
9
  end
10
10
  end
11
11
 
12
+ describe '.full_path' do
13
+ let(:item) { Item.open_single(local.source) }
14
+ it 'accepts relative paths' do
15
+ item.path = 'test'
16
+ expect(agent.send(:full_path, item.path)).to eq('/folder/test')
17
+ end
18
+ it 'accepts absolute paths' do
19
+ item.path = '/test'
20
+ expect(agent.send(:full_path, item.path)).to eq('/test')
21
+ end
22
+ end
23
+
12
24
  describe '#name' do
13
25
  it 'returns the display name for the agent' do
14
26
  expect(agent.name).to eq('GitHub')
@@ -98,4 +98,22 @@ describe Worochi::Item do
98
98
  expect(item.read.size).to eq(local.file_size)
99
99
  end
100
100
  end
101
+
102
+ describe '#content_type', :vcr do
103
+ it 'detects the MIME type' do
104
+ item = Worochi::Item.open_single(local.source)
105
+ expect(item.content_type).to eq('text/plain')
106
+ item = Worochi::Item.open_single(remote.source)
107
+ expect(item.content_type).to eq('image/gif')
108
+ end
109
+ it 'falls back to file name when ruby-filemagic is not loaded' do
110
+ temp = FileMagic
111
+ Object.send(:remove_const, :FileMagic)
112
+ item = Worochi::Item.open_single(local.source)
113
+ expect(item.content_type).to eq('application/octet-stream')
114
+ item = Worochi::Item.open_single(remote.source)
115
+ expect(item.content_type).to eq('image/gif')
116
+ FileMagic = temp
117
+ end
118
+ end
101
119
  end
@@ -39,7 +39,7 @@ describe Worochi::OAuth do
39
39
  refresh_token: "bbbbb",
40
40
  expires_at: 1376702712
41
41
  }
42
- expect(auth.refresh!(token)).to include(:refresh_token)
42
+ expect{auth.refresh(token)}.to raise_error(Worochi::Error)
43
43
  end
44
44
  end
45
45
  end
data/worochi.gemspec CHANGED
@@ -24,9 +24,12 @@ Gem::Specification.new do |s|
24
24
  s.add_runtime_dependency('hashie')
25
25
  s.add_runtime_dependency('oauth2')
26
26
  s.add_runtime_dependency('aws-sdk')
27
+ s.add_runtime_dependency('mime-types')
27
28
  s.add_runtime_dependency('dropbox-sdk') # Dropbox
29
+ s.add_runtime_dependency('google-api-client') # Google
28
30
  s.add_runtime_dependency('octokit', ['1.25.0']) # GitHub
29
31
 
32
+ s.add_development_dependency('ruby-filemagic')
30
33
  s.add_development_dependency('rspec', ['~> 2.14.1'])
31
34
  s.add_development_dependency('vcr', ['~> 2.5.0'])
32
35
  s.add_development_dependency('webmock', ['~> 1.9.3'])
@@ -35,6 +38,7 @@ Gem::Specification.new do |s|
35
38
  s.add_development_dependency('coveralls')
36
39
  s.add_development_dependency('rake')
37
40
  s.add_development_dependency('redcarpet')
41
+ s.add_development_dependency('awesome_print')
38
42
 
39
43
  s.post_install_message = <<-MESSAGE
40
44
  Worochi says, \033[33;1m"RAWRRRRR!!!"\033[0m
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: worochi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raven Jiang
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mime-types
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: dropbox-sdk
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,20 @@ dependencies:
66
80
  - - '>='
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: google-api-client
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: octokit
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +108,20 @@ dependencies:
80
108
  - - '='
81
109
  - !ruby/object:Gem::Version
82
110
  version: 1.25.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: ruby-filemagic
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: rspec
85
127
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +234,20 @@ dependencies:
192
234
  - - '>='
193
235
  - !ruby/object:Gem::Version
194
236
  version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: awesome_print
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - '>='
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
195
251
  description: Provides a standard way to interface with Ruby API wrappers provided
196
252
  by various cloud storage services such as Dropbox and Google Drive.
197
253
  email:
@@ -210,6 +266,7 @@ files:
210
266
  - lib/worochi/config.rb
211
267
  - lib/worochi/agent/github.rb
212
268
  - lib/worochi/agent/#example.rb
269
+ - lib/worochi/agent/google_drive.rb
213
270
  - lib/worochi/agent/dropbox.rb
214
271
  - lib/worochi/helper.rb
215
272
  - lib/worochi/item.rb
@@ -229,6 +286,7 @@ files:
229
286
  - spec/worochi/helper/github_helper_spec.rb
230
287
  - spec/worochi/agent/dropbox_spec.rb
231
288
  - spec/worochi/agent/github_spec.rb
289
+ - spec/worochi/agent/google_drive_spec.rb
232
290
  - spec/worochi/config_spec.rb
233
291
  - spec/worochi/agent_spec.rb
234
292
  - spec/worochi/oauth_spec.rb
@@ -270,6 +328,26 @@ files:
270
328
  - spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
271
329
  - spec/cassettes/Worochi_Agent_Github/_source_branch/retrieves_the_master_branch_correctly.yml
272
330
  - spec/cassettes/Worochi_Agent_Github/_repos/lists_the_repos.yml
331
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_init_client/returns_the_client.yml
332
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/shows_detailed_listing_including_the_required_fields.yml
333
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/contains_folder1_and_file1.yml
334
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/raises_error_on_invalid_path.yml
335
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/does_not_contain_folder1.yml
336
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/contains_file1.yml
337
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml
338
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_default_options/has_the_required_options.yml
339
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml
340
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/does_not_contain_file1.yml
341
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
342
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/uploads_a_file.yml
343
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/creates_a_new_folder_to_root.yml
344
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/retrieves_the_item_ID.yml
345
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/returns_the_root_ID.yml
346
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/pushes_a_single_item.yml
347
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/raises_error_on_bad_token.yml
348
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/creates_new_directories_as_needed.yml
349
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_delete/deletes_a_file.yml
350
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_delete/raises_error_on_bad_token.yml
273
351
  - spec/cassettes/Worochi/_push/pushes_with_agents.yml
274
352
  - spec/cassettes/Worochi_Item/_open_single/accepts_a_String.yml
275
353
  - spec/cassettes/Worochi_Item/_open_single/works_with_AWS_S3_paths.yml
@@ -281,6 +359,8 @@ files:
281
359
  - spec/cassettes/Worochi_Item/_open/with_multiple_files/accepts_Hash_parameters.yml
282
360
  - spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_String_parameter.yml
283
361
  - spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_Hash_parameter.yml
362
+ - spec/cassettes/Worochi_Item/_content_type/detects_the_MIME_type.yml
363
+ - spec/cassettes/Worochi_Item/_content_type/falls_back_to_file_name_when_ruby-filemagic_is_not_loaded.yml
284
364
  - spec/cassettes/Worochi_OAuth/_flow_end/rejects_bad_code.yml
285
365
  - spec/cassettes/Worochi_OAuth/_refresh/tries_to_refresh_the_access_token.yml
286
366
  homepage: https://github.com/Pixelapse/worochi
@@ -315,6 +395,7 @@ test_files:
315
395
  - spec/worochi/helper/github_helper_spec.rb
316
396
  - spec/worochi/agent/dropbox_spec.rb
317
397
  - spec/worochi/agent/github_spec.rb
398
+ - spec/worochi/agent/google_drive_spec.rb
318
399
  - spec/worochi/config_spec.rb
319
400
  - spec/worochi/agent_spec.rb
320
401
  - spec/worochi/oauth_spec.rb
@@ -356,6 +437,26 @@ test_files:
356
437
  - spec/cassettes/Worochi_Agent_Github/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
357
438
  - spec/cassettes/Worochi_Agent_Github/_source_branch/retrieves_the_master_branch_correctly.yml
358
439
  - spec/cassettes/Worochi_Agent_Github/_repos/lists_the_repos.yml
440
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_init_client/returns_the_client.yml
441
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/shows_detailed_listing_including_the_required_fields.yml
442
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files_and_folders/contains_folder1_and_file1.yml
443
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/raises_error_on_invalid_path.yml
444
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/does_not_contain_folder1.yml
445
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/contains_file1.yml
446
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_files/accepts_a_different_relative_path.yml
447
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_default_options/has_the_required_options.yml
448
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/contains_folder1.yml
449
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/does_not_contain_file1.yml
450
+ - spec/cassettes/Worochi_Agent_GoogleDrive/it_should_behave_like_a_service_agent/_folders/accepts_a_different_relative_path.yml
451
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/uploads_a_file.yml
452
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_insert_file/creates_a_new_folder_to_root.yml
453
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/retrieves_the_item_ID.yml
454
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_get_item_id/returns_the_root_ID.yml
455
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/pushes_a_single_item.yml
456
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/raises_error_on_bad_token.yml
457
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_push_item/creates_new_directories_as_needed.yml
458
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_delete/deletes_a_file.yml
459
+ - spec/cassettes/Worochi_Agent_GoogleDrive/_delete/raises_error_on_bad_token.yml
359
460
  - spec/cassettes/Worochi/_push/pushes_with_agents.yml
360
461
  - spec/cassettes/Worochi_Item/_open_single/accepts_a_String.yml
361
462
  - spec/cassettes/Worochi_Item/_open_single/works_with_AWS_S3_paths.yml
@@ -367,6 +468,8 @@ test_files:
367
468
  - spec/cassettes/Worochi_Item/_open/with_multiple_files/accepts_Hash_parameters.yml
368
469
  - spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_String_parameter.yml
369
470
  - spec/cassettes/Worochi_Item/_open/opens_a_single_file/with_Hash_parameter.yml
471
+ - spec/cassettes/Worochi_Item/_content_type/detects_the_MIME_type.yml
472
+ - spec/cassettes/Worochi_Item/_content_type/falls_back_to_file_name_when_ruby-filemagic_is_not_loaded.yml
370
473
  - spec/cassettes/Worochi_OAuth/_flow_end/rejects_bad_code.yml
371
474
  - spec/cassettes/Worochi_OAuth/_refresh/tries_to_refresh_the_access_token.yml
372
475
  has_rdoc: