chute 0.0.2 → 2.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.
Files changed (85) hide show
  1. data/Gemfile +16 -2
  2. data/Gemfile.lock +52 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.md +46 -0
  5. data/Rakefile +48 -6
  6. data/VERSION +1 -0
  7. data/chute.gemspec +120 -16
  8. data/lib/chute.rb +7 -20
  9. data/lib/chute/client.rb +42 -0
  10. data/lib/chute/configuration.rb +40 -0
  11. data/lib/chute/connection.rb +64 -0
  12. data/lib/chute/response.rb +22 -0
  13. data/lib/chute/v2/albums.rb +60 -0
  14. data/lib/chute/v2/assets.rb +55 -0
  15. data/lib/chute/v2/comments.rb +29 -0
  16. data/lib/chute/v2/flags.rb +21 -0
  17. data/lib/chute/v2/hearts.rb +21 -0
  18. data/lib/chute/v2/parcels.rb +21 -0
  19. data/lib/chute/v2/tags.rb +36 -0
  20. data/lib/chute/v2/triggers.rb +26 -0
  21. data/lib/chute/v2/users.rb +18 -0
  22. data/lib/chute/v2/votes.rb +21 -0
  23. data/lib/chute/version.rb +7 -1
  24. data/spec/chute/chute_spec.rb +64 -0
  25. data/spec/chute/client_spec.rb +82 -0
  26. data/spec/chute/connection_spec.rb +47 -0
  27. data/spec/chute/response_spec.rb +16 -0
  28. data/spec/chute/v2/albums_spec.rb +197 -0
  29. data/spec/chute/v2/assets_spec.rb +171 -0
  30. data/spec/chute/v2/comments_spec.rb +88 -0
  31. data/spec/chute/v2/flags_spec.rb +56 -0
  32. data/spec/chute/v2/hearts_spec.rb +57 -0
  33. data/spec/chute/v2/parcels_spec.rb +24 -0
  34. data/spec/chute/v2/tags_spec.rb +79 -0
  35. data/spec/chute/v2/trigger_spec.rb +127 -0
  36. data/spec/chute/v2/users_spec.rb +53 -0
  37. data/spec/chute/v2/votes_spec.rb +56 -0
  38. data/spec/fixtures/chute_cassettes/albums/album_create_with_permission_view.yml +69 -0
  39. data/spec/fixtures/chute_cassettes/albums/albums_add_remove_assets.yml +187 -0
  40. data/spec/fixtures/chute_cassettes/albums/albums_create.yml +69 -0
  41. data/spec/fixtures/chute_cassettes/albums/albums_delete.yml +128 -0
  42. data/spec/fixtures/chute_cassettes/albums/albums_get.yml +135 -0
  43. data/spec/fixtures/chute_cassettes/albums/albums_list.yml +89 -0
  44. data/spec/fixtures/chute_cassettes/albums/albums_stats.yml +128 -0
  45. data/spec/fixtures/chute_cassettes/albums/albums_update.yml +135 -0
  46. data/spec/fixtures/chute_cassettes/assets/assets_delete.yml +131 -0
  47. data/spec/fixtures/chute_cassettes/assets/assets_geo.yml +197 -0
  48. data/spec/fixtures/chute_cassettes/assets/assets_get.yml +138 -0
  49. data/spec/fixtures/chute_cassettes/assets/assets_import.yml +76 -0
  50. data/spec/fixtures/chute_cassettes/assets/assets_list.yml +77 -0
  51. data/spec/fixtures/chute_cassettes/assets/assets_update.yml +138 -0
  52. data/spec/fixtures/chute_cassettes/comments/comments_create.yml +196 -0
  53. data/spec/fixtures/chute_cassettes/comments/comments_list.yml +259 -0
  54. data/spec/fixtures/chute_cassettes/flags/flags_methods.yml +313 -0
  55. data/spec/fixtures/chute_cassettes/hearts/hearts_methods.yml +254 -0
  56. data/spec/fixtures/chute_cassettes/tags/tags_assets.yml +311 -0
  57. data/spec/fixtures/chute_cassettes/triggers/trigger_errors.yml +62 -0
  58. data/spec/fixtures/chute_cassettes/triggers/triggers_cleanup.yml +184 -0
  59. data/spec/fixtures/chute_cassettes/triggers/triggers_create.yml +65 -0
  60. data/spec/fixtures/chute_cassettes/triggers/triggers_delete.yml +124 -0
  61. data/spec/fixtures/chute_cassettes/triggers/triggers_list.yml +66 -0
  62. data/spec/fixtures/chute_cassettes/triggers/triggers_update.yml +127 -0
  63. data/spec/fixtures/chute_cassettes/users/users_get.yml +128 -0
  64. data/spec/fixtures/chute_cassettes/users/users_me.yml +66 -0
  65. data/spec/fixtures/chute_cassettes/votes/votes_methods.yml +313 -0
  66. data/spec/spec_helper.rb +27 -0
  67. metadata +210 -33
  68. data/.gitignore +0 -5
  69. data/README +0 -125
  70. data/config/chute.rb +0 -0
  71. data/lib/chute/account.rb +0 -58
  72. data/lib/chute/app.rb +0 -32
  73. data/lib/chute/asset.rb +0 -124
  74. data/lib/chute/bundle.rb +0 -72
  75. data/lib/chute/chute.rb +0 -203
  76. data/lib/chute/collection.rb +0 -47
  77. data/lib/chute/comment.rb +0 -32
  78. data/lib/chute/exception.rb +0 -7
  79. data/lib/chute/http_service.rb +0 -114
  80. data/lib/chute/inbox.rb +0 -41
  81. data/lib/chute/parcel.rb +0 -45
  82. data/lib/chute/resource.rb +0 -354
  83. data/lib/chute/user.rb +0 -113
  84. data/lib/chute/util.rb +0 -14
  85. data/test/test_sudoku.rb +0 -7
@@ -0,0 +1,88 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chute::V2::Comments do
4
+ include_context "init credentials"
5
+
6
+ let(:album_id) do
7
+ Chute::V2::Albums.create({:name => "Album for Comments"}).data.id
8
+ end
9
+
10
+ let(:asset_id) do
11
+ Chute::V2::Albums.import(album_id,'http://farm9.staticflickr.com/8194/8141607138_bfaea3afd9.jpg').data[0].id
12
+ end
13
+
14
+ describe ".all" do
15
+ it { Chute::V2::Comments.should respond_to(:all).with(2).arguments }
16
+ it { Chute::V2::Comments.should_not respond_to(:all).with(1).arguments }
17
+ end
18
+
19
+ describe ".create" do
20
+ it { Chute::V2::Comments.should respond_to(:create).with(3).arguments }
21
+ it { Chute::V2::Comments.should_not respond_to(:create).with(1).arguments }
22
+ end
23
+
24
+ describe ".delete" do
25
+ it { Chute::V2::Comments.should respond_to(:delete).with(1).arguments }
26
+ it { Chute::V2::Comments.should_not respond_to(:delete).with(0).arguments }
27
+ end
28
+
29
+
30
+ describe "POST Comment Create" do
31
+
32
+ before do
33
+ VCR.insert_cassette 'comments/comments_create', :record => :new_episodes
34
+ end
35
+ after do
36
+ VCR.eject_cassette
37
+ end
38
+
39
+ it "should be able to create new comments" do
40
+ email = "random@someemail.com"
41
+ name = "Darko"
42
+ comment = "Some random comment"
43
+
44
+ response = Chute::V2::Comments.create(album_id,asset_id, :comment_text => comment, :name => name , :email => email )
45
+ response.data.comment_text.should == comment
46
+ response.data.name.should == name
47
+ response.data.email.should == email
48
+ end
49
+
50
+ end
51
+
52
+ describe "GET List all comments" do
53
+
54
+ before do
55
+ VCR.insert_cassette 'comments/comments_list', :record => :new_episodes
56
+ end
57
+ after do
58
+ VCR.eject_cassette
59
+ end
60
+
61
+ it "should list all comments" do
62
+ response = Chute::V2::Comments.create(album_id,asset_id, :comment_text => "My Test Comment for listing")
63
+ comment_id = response.data.id
64
+ response = Chute::V2::Comments.all(album_id,asset_id)
65
+ response.success?.should == true
66
+ response.data.empty?.should == false
67
+ end
68
+ end
69
+
70
+ describe "DELETE comment" do
71
+
72
+ before do
73
+ VCR.insert_cassette 'comments/comments_delete', :record => :new_episodes
74
+ end
75
+ after do
76
+ VCR.eject_cassette
77
+ end
78
+
79
+ it "should delete comment by id" do
80
+ pending "FIX Needs to be deployed to server"
81
+ response = Chute::V2::Comments.create(album_id,asset_id, :comment_text => "My Test Comment for delete")
82
+ comment_id = response.data.id
83
+ response = Chute::V2::Comments.delete(comment_id)
84
+ response.success?.should == true
85
+ end
86
+ end
87
+
88
+ end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chute::V2::Flags do
4
+ include_context "init credentials"
5
+
6
+ let(:album_id) do
7
+ Chute::V2::Albums.create({:name => "Album for Flags"}).data.id
8
+ end
9
+
10
+ let(:asset_id) do
11
+ Chute::V2::Albums.import(album_id,'http://sphotos-f.ak.fbcdn.net/hphotos-ak-snc6/6393_451942991531262_1464781412_n.jpg').data[0].id
12
+ end
13
+
14
+ describe ".all" do
15
+ it { Chute::V2::Flags.should respond_to(:count).with(2).arguments }
16
+ it { Chute::V2::Flags.should_not respond_to(:count).with(1).arguments }
17
+ end
18
+
19
+ describe ".create" do
20
+ it { Chute::V2::Flags.should respond_to(:flag).with(2).arguments }
21
+ it { Chute::V2::Flags.should_not respond_to(:flag).with(1).arguments }
22
+ end
23
+
24
+ describe ".delete" do
25
+ it { Chute::V2::Flags.should respond_to(:unflag).with(2).arguments }
26
+ it { Chute::V2::Flags.should_not respond_to(:unflag).with(1).arguments }
27
+ end
28
+
29
+
30
+ describe "flag methods" do
31
+
32
+ before do
33
+ VCR.insert_cassette 'flags/flags_methods', :record => :new_episodes
34
+ end
35
+ after do
36
+ VCR.eject_cassette
37
+ end
38
+
39
+ it "should be able to flag an asset" do
40
+ response = Chute::V2::Flags.flag(album_id,asset_id)
41
+ response.success?.should == true
42
+ end
43
+
44
+ it "should be able list all flags" do
45
+ response = Chute::V2::Flags.count(album_id,asset_id)
46
+ response.success?.should == true
47
+ end
48
+
49
+ it "should be able delete a flag" do
50
+ response = Chute::V2::Flags.flag(album_id,asset_id)
51
+ response = Chute::V2::Flags.unflag(album_id,asset_id)
52
+ response.success?.should == true
53
+ end
54
+
55
+ end
56
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chute::V2::Hearts do
4
+ include_context "init credentials"
5
+
6
+ let(:album_id) do
7
+ Chute::V2::Albums.create({:name => "Album for Hearts"}).data.id
8
+ end
9
+
10
+ let(:asset_id) do
11
+ Chute::V2::Albums.import(album_id,'http://sphotos-f.ak.fbcdn.net/hphotos-ak-snc6/6393_451942991531262_1464781412_n.jpg').data[0].id
12
+ end
13
+
14
+ describe ".all" do
15
+ it { Chute::V2::Hearts.should respond_to(:count).with(2).arguments }
16
+ it { Chute::V2::Hearts.should_not respond_to(:count).with(1).arguments }
17
+ end
18
+
19
+ describe ".create" do
20
+ it { Chute::V2::Hearts.should respond_to(:heart).with(2).arguments }
21
+ it { Chute::V2::Hearts.should_not respond_to(:heart).with(1).arguments }
22
+ end
23
+
24
+ describe ".delete" do
25
+ it { Chute::V2::Hearts.should respond_to(:unheart).with(3).arguments }
26
+ it { Chute::V2::Hearts.should_not respond_to(:unheart).with(2).arguments }
27
+ end
28
+
29
+
30
+ describe "heart methods" do
31
+
32
+ before do
33
+ VCR.insert_cassette 'hearts/hearts_methods', :record => :new_episodes
34
+ end
35
+ after do
36
+ VCR.eject_cassette
37
+ end
38
+
39
+ it "should be able to heart an asset" do
40
+ response = Chute::V2::Hearts.heart(album_id,asset_id)
41
+ response.success?.should == true
42
+ end
43
+
44
+ it "should be able list all hearts" do
45
+ response = Chute::V2::Hearts.count(album_id,asset_id)
46
+ response.success?.should == true
47
+ end
48
+
49
+ it "should be able delete a heart" do
50
+ pending "Not working"
51
+ response = Chute::V2::Hearts.heart(album_id,asset_id)
52
+ response = Chute::V2::Hearts.unheart(album_id,asset_id,response.data.id)
53
+ response.success?.should == true
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chute::V2::Albums do
4
+ include_context "init credentials"
5
+
6
+ describe "methods" do
7
+
8
+ describe ".all_parcel_assets" do
9
+ it { Chute::V2::Parcels.should respond_to(:all_parcel_assets).with(1).arguments }
10
+ it { Chute::V2::Parcels.should_not respond_to(:all_parcel_assets).with(0).arguments }
11
+ end
12
+
13
+ describe ".find" do
14
+ it { Chute::V2::Parcels.should respond_to(:find).with(1).arguments }
15
+ it { Chute::V2::Parcels.should_not respond_to(:find).with(0).arguments }
16
+ end
17
+
18
+ describe ".all_album_parcels" do
19
+ it { Chute::V2::Parcels.should respond_to(:all_album_parcels).with(1).arguments }
20
+ it { Chute::V2::Parcels.should_not respond_to(:all_album_parcels).with(0).arguments }
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chute::V2::Tags do
4
+ include_context "init credentials"
5
+
6
+ let(:album_id) do
7
+ Chute::V2::Albums.create({:name => "Album for Tags"}).data.id
8
+ end
9
+
10
+ let(:asset_id) do
11
+ Chute::V2::Albums.import(album_id,'http://farm9.staticflickr.com/8194/8141607138_bfaea3afd9.jpg').data[0].id
12
+ end
13
+
14
+ describe ".all_asset_tags" do
15
+ it { Chute::V2::Tags.should respond_to(:all_asset_tags).with(2).arguments }
16
+ it { Chute::V2::Tags.should_not respond_to(:all_asset_tags).with(1).arguments }
17
+ end
18
+
19
+ describe ".update_asset_tags" do
20
+ it { Chute::V2::Tags.should respond_to(:update_asset_tags).with(3).arguments }
21
+ it { Chute::V2::Tags.should_not respond_to(:update_asset_tags).with(0).arguments }
22
+ end
23
+
24
+ describe ".add_asset_tags" do
25
+ it { Chute::V2::Tags.should respond_to(:add_asset_tags).with(3).arguments }
26
+ it { Chute::V2::Tags.should_not respond_to(:add_asset_tags).with(0).arguments }
27
+ end
28
+
29
+ describe "asset tags" do
30
+
31
+ before do
32
+ VCR.insert_cassette 'tags/tags_assets', :record => :new_episodes
33
+ end
34
+ after do
35
+ VCR.eject_cassette
36
+ end
37
+
38
+ it "should be able to add asset tags" do
39
+ response = Chute::V2::Tags.add_asset_tags(album_id,asset_id,"TAG","AnotherTag")
40
+ response.success?.should == true
41
+ end
42
+
43
+ it "should list all asset tags" do
44
+ response = Chute::V2::Tags.all_asset_tags(album_id,asset_id)
45
+ response.success?.should == true
46
+ end
47
+
48
+ it "should replace all existing asset tags" do
49
+ response = Chute::V2::Tags.update_asset_tags(album_id,asset_id,"Replaced TAG1","Replaced Tag2" )
50
+ response.success?.should == true
51
+ end
52
+
53
+ it "should delete tags by name" do
54
+ pending "Not deployed on server yet. check soon"
55
+ response = Chute::V2::Tags.delete_asset_tags(album_id,asset_id,"Replaced TAG1")
56
+ response.success?.should == true
57
+ end
58
+
59
+ end
60
+
61
+ describe ".process_array" do
62
+
63
+ it "should be able to produce a single flat array of unique tags" do
64
+ Chute::V2::Tags.send(:process_array, ["TAG", "AnotherTag", ["TAG", "AnotherTag"]]).should == ["TAG", "AnotherTag"]
65
+ end
66
+
67
+ it "should not remain unmodified" do
68
+ Chute::V2::Tags.send(:process_array, ["TAG", "AnotherTag", ["TAG", "AnotherTag"]]).should_not == ["TAG", "AnotherTag", ["TAG", "AnotherTag"]]
69
+ end
70
+
71
+ it "should not modify the array if its simple" do
72
+ Chute::V2::Tags.send(:process_array, ["TAG", "AnotherTag"]).should == ["TAG", "AnotherTag"]
73
+ end
74
+
75
+ end
76
+
77
+
78
+
79
+ end
@@ -0,0 +1,127 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chute::V2::Triggers do
4
+ include_context "init credentials"
5
+
6
+ RANDOM_POST_RESPONDING_URL = "http://www.opencalais.com/HTTPexamples"
7
+ RANDOM_NOT_CORRECT_RESPONSE_URL = "http://www.google.com"
8
+
9
+
10
+ after(:all) do
11
+ VCR.insert_cassette 'triggers/triggers_cleanup', :record => :new_episodes
12
+ # Delete all triggers for reuse
13
+ response = Chute::V2::Triggers.all
14
+ response.data.each do |item|
15
+ Chute::V2::Triggers.delete(item.id)
16
+ end
17
+ VCR.eject_cassette
18
+ end
19
+
20
+ describe ".all" do
21
+ it { Chute::V2::Triggers.should respond_to(:all).with(0).arguments }
22
+ it { Chute::V2::Triggers.should_not respond_to(:all).with(1).arguments }
23
+ end
24
+
25
+ describe ".create" do
26
+ it { Chute::V2::Triggers.should respond_to(:create).with(2).arguments }
27
+ it { Chute::V2::Triggers.should_not respond_to(:create).with(1).arguments }
28
+ end
29
+
30
+
31
+ describe ".update" do
32
+ it { Chute::V2::Triggers.should respond_to(:update).with(3).arguments }
33
+ it { Chute::V2::Triggers.should_not respond_to(:update).with(2).arguments }
34
+ end
35
+
36
+ describe ".delete" do
37
+ it { Chute::V2::Triggers.should respond_to(:delete).with(1).arguments }
38
+ it { Chute::V2::Triggers.should_not respond_to(:delete).with(0).arguments }
39
+ end
40
+
41
+
42
+ describe "trigger errors" do
43
+ before do
44
+ VCR.insert_cassette 'triggers/trigger_errors', :record => :new_episodes
45
+ end
46
+ after do
47
+ VCR.eject_cassette
48
+ end
49
+
50
+ it "should return error if event is non-existent" do
51
+ event = 'asset_created_once'
52
+ response = Chute::V2::Triggers.create(RANDOM_NOT_CORRECT_RESPONSE_URL, event)
53
+ response.response.error.nil?.should == false
54
+ end
55
+
56
+ it "should return error if url doesn't respond to POST with 200 code" do
57
+ response = Chute::V2::Triggers.create(RANDOM_NOT_CORRECT_RESPONSE_URL, "comment_created")
58
+ response.response.error.nil?.should == false
59
+ end
60
+
61
+ end
62
+
63
+ describe "trigger operations" do
64
+
65
+ describe "POST create a new trigger" do
66
+
67
+ before do
68
+ VCR.insert_cassette 'triggers/triggers_create', :record => :new_episodes
69
+ end
70
+ after do
71
+ VCR.eject_cassette
72
+ end
73
+
74
+ it "should be able to create a new trigger" do
75
+ response = Chute::V2::Triggers.create(RANDOM_POST_RESPONDING_URL, "asset_created")
76
+ response.response.error.nil?.should == true
77
+ end
78
+ end
79
+
80
+ describe "PUT update existing trigger" do
81
+
82
+ before do
83
+ VCR.insert_cassette 'triggers/triggers_update', :record => :new_episodes
84
+ end
85
+ after do
86
+ VCR.eject_cassette
87
+ end
88
+
89
+ it "should be able to update an existing trigger" do
90
+ response = Chute::V2::Triggers.create(RANDOM_POST_RESPONDING_URL, "asset_updated")
91
+ response = Chute::V2::Triggers.update(response.data.id,RANDOM_POST_RESPONDING_URL, "album_asset_moderated")
92
+ response.response.error.nil?.should == true
93
+ end
94
+ end
95
+
96
+ describe "GET all triggers" do
97
+
98
+ before do
99
+ VCR.insert_cassette 'triggers/triggers_list', :record => :new_episodes
100
+ end
101
+ after do
102
+ VCR.eject_cassette
103
+ end
104
+
105
+ it "should list all active triggers " do
106
+ response = Chute::V2::Triggers.all
107
+ response.success?.should == true
108
+ end
109
+ end
110
+
111
+ describe "DELETE trigger" do
112
+
113
+ before do
114
+ VCR.insert_cassette 'triggers/triggers_delete', :record => :new_episodes
115
+ end
116
+ after do
117
+ VCR.eject_cassette
118
+ end
119
+
120
+ it "should delete a trigger by its id " do
121
+ response = Chute::V2::Triggers.create(RANDOM_POST_RESPONDING_URL, "asset_deleted")
122
+ response = Chute::V2::Triggers.delete(response.data.id)
123
+ response.success?.should == true
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chute::V2::Users do
4
+ include_context "init credentials"
5
+
6
+ describe "methods" do
7
+
8
+ describe ".find" do
9
+ it { Chute::V2::Users.should respond_to(:find).with(1).arguments }
10
+ it { Chute::V2::Users.should_not respond_to(:find).with(0).arguments }
11
+
12
+ end
13
+
14
+ describe ".me" do
15
+ it { Chute::V2::Users.should respond_to(:me).with(0).arguments }
16
+ it { Chute::V2::Users.should_not respond_to(:me).with(1).arguments }
17
+ end
18
+
19
+ end
20
+
21
+ describe "requests" do
22
+
23
+ describe "GET Current user info" do
24
+ before do
25
+ VCR.insert_cassette 'users/users_me', :record => :new_episodes
26
+ end
27
+ after do
28
+ VCR.eject_cassette
29
+ end
30
+
31
+ it "should get the current user info" do
32
+ response = Chute::V2::Users.me
33
+ end
34
+
35
+ end
36
+
37
+ describe "GET User By Id" do
38
+ before do
39
+ VCR.insert_cassette 'users/users_get', :record => :new_episodes
40
+ end
41
+ after do
42
+ VCR.eject_cassette
43
+ end
44
+
45
+ it "should be able to get user by id" do
46
+ response = Chute::V2::Users.me
47
+ response = Chute::V2::Users.find(response.data.id)
48
+ end
49
+
50
+ end
51
+ end
52
+
53
+ end