pinterest-ruby 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.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.rubocop.yml +63 -0
  4. data/.travis-gemfile +17 -0
  5. data/.travis.yml +12 -0
  6. data/.yardopts +1 -0
  7. data/CHANGELOG.md +3 -0
  8. data/Gemfile +24 -0
  9. data/README.md +34 -0
  10. data/Rakefile +44 -0
  11. data/docs/FaradayMiddleware/SafeOj.html +218 -0
  12. data/docs/FaradayMiddleware.html +125 -0
  13. data/docs/Pinterest/Board.html +410 -0
  14. data/docs/Pinterest/Client.html +1894 -0
  15. data/docs/Pinterest/Collection.html +1877 -0
  16. data/docs/Pinterest/Endpoints/Authentication.html +578 -0
  17. data/docs/Pinterest/Endpoints/Boards.html +1443 -0
  18. data/docs/Pinterest/Endpoints/Pins.html +1296 -0
  19. data/docs/Pinterest/Endpoints/Users.html +1220 -0
  20. data/docs/Pinterest/Endpoints.html +127 -0
  21. data/docs/Pinterest/Entity.html +473 -0
  22. data/docs/Pinterest/Errors/AuthorizationError.html +158 -0
  23. data/docs/Pinterest/Errors/BadRequestError.html +158 -0
  24. data/docs/Pinterest/Errors/BaseError.html +487 -0
  25. data/docs/Pinterest/Errors/MethodNotAllowedError.html +158 -0
  26. data/docs/Pinterest/Errors/NotFoundError.html +158 -0
  27. data/docs/Pinterest/Errors/NotImplementedError.html +158 -0
  28. data/docs/Pinterest/Errors/PermissionsError.html +158 -0
  29. data/docs/Pinterest/Errors/RateLimitError.html +158 -0
  30. data/docs/Pinterest/Errors/ServerError.html +158 -0
  31. data/docs/Pinterest/Errors/TimeoutError.html +158 -0
  32. data/docs/Pinterest/Errors.html +377 -0
  33. data/docs/Pinterest/Image.html +617 -0
  34. data/docs/Pinterest/Interest.html +402 -0
  35. data/docs/Pinterest/Pin.html +511 -0
  36. data/docs/Pinterest/User.html +408 -0
  37. data/docs/Pinterest/Version.html +187 -0
  38. data/docs/Pinterest.html +130 -0
  39. data/docs/_index.html +401 -0
  40. data/docs/class_list.html +51 -0
  41. data/docs/css/common.css +1 -0
  42. data/docs/css/full_list.css +58 -0
  43. data/docs/css/style.css +492 -0
  44. data/docs/file.README.html +106 -0
  45. data/docs/file_list.html +56 -0
  46. data/docs/frames.html +17 -0
  47. data/docs/index.html +106 -0
  48. data/docs/js/app.js +243 -0
  49. data/docs/js/full_list.js +216 -0
  50. data/docs/js/jquery.js +4 -0
  51. data/docs/method_list.html +643 -0
  52. data/docs/top-level-namespace.html +110 -0
  53. data/lib/pinterest/client.rb +146 -0
  54. data/lib/pinterest/collection.rb +97 -0
  55. data/lib/pinterest/endpoints/authentication.rb +99 -0
  56. data/lib/pinterest/endpoints/boards.rb +193 -0
  57. data/lib/pinterest/endpoints/pins.rb +187 -0
  58. data/lib/pinterest/endpoints/users.rb +158 -0
  59. data/lib/pinterest/errors.rb +94 -0
  60. data/lib/pinterest/models/board.rb +34 -0
  61. data/lib/pinterest/models/entity.rb +42 -0
  62. data/lib/pinterest/models/image.rb +49 -0
  63. data/lib/pinterest/models/interest.rb +30 -0
  64. data/lib/pinterest/models/pin.rb +43 -0
  65. data/lib/pinterest/models/user.rb +33 -0
  66. data/lib/pinterest/safe_oj.rb +25 -0
  67. data/lib/pinterest/version.rb +23 -0
  68. data/lib/pinterest.rb +31 -0
  69. data/pinterest.gemspec +32 -0
  70. data/spec/cassettes/Pinterest_Client/_perform_network_request_private_/should_correctly_handle_malformed_requests.yml +51 -0
  71. data/spec/cassettes/Pinterest_Endpoints_Authentication/_fetch_access_token/should_make_the_call_to_Pinterest_and_return_the_authorization_token_also_saving_it.yml +58 -0
  72. data/spec/cassettes/Pinterest_Endpoints_Authentication/_verify_access_token/should_return_an_exception_when_using_an_invalid_token.yml +52 -0
  73. data/spec/cassettes/Pinterest_Endpoints_Authentication/_verify_access_token/should_verify_the_token.yml +59 -0
  74. data/spec/cassettes/Pinterest_Endpoints_Boards/_board/should_complain_for_invalid_boards.yml +48 -0
  75. data/spec/cassettes/Pinterest_Endpoints_Boards/_board/should_get_the_current_informations.yml +63 -0
  76. data/spec/cassettes/Pinterest_Endpoints_Boards/_board/should_restrict_to_requested_fields.yml +57 -0
  77. data/spec/cassettes/Pinterest_Endpoints_Boards/_boards/should_only_get_requested_fields.yml +57 -0
  78. data/spec/cassettes/Pinterest_Endpoints_Boards/_boards/should_return_a_list_of_boards.yml +74 -0
  79. data/spec/cassettes/Pinterest_Endpoints_Boards/_create_board/should_create_the_board_and_return_it_with_only_the_requested_fields.yml +56 -0
  80. data/spec/cassettes/Pinterest_Endpoints_Boards/_delete_board/should_perform_the_call_and_return_an_error.yml +48 -0
  81. data/spec/cassettes/Pinterest_Endpoints_Boards/_delete_board/should_perform_the_call_and_return_true.yml +109 -0
  82. data/spec/cassettes/Pinterest_Endpoints_Boards/_edit_board/should_edit_the_board_and_return_it_with_only_the_requested_fields.yml +56 -0
  83. data/spec/cassettes/Pinterest_Endpoints_Boards/_follow_board/should_complain_for_invalid_boards.yml +56 -0
  84. data/spec/cassettes/Pinterest_Endpoints_Boards/_follow_board/should_perform_the_call_and_return_true.yml +109 -0
  85. data/spec/cassettes/Pinterest_Endpoints_Boards/_following_boards/should_only_get_requested_fields.yml +59 -0
  86. data/spec/cassettes/Pinterest_Endpoints_Boards/_following_boards/should_paginate_correctly.yml +72 -0
  87. data/spec/cassettes/Pinterest_Endpoints_Boards/_following_boards/should_return_the_followed_boards.yml +72 -0
  88. data/spec/cassettes/Pinterest_Endpoints_Boards/_search_my_boards/should_only_get_requested_fields.yml +59 -0
  89. data/spec/cassettes/Pinterest_Endpoints_Boards/_search_my_boards/should_paginate_correctly.yml +66 -0
  90. data/spec/cassettes/Pinterest_Endpoints_Boards/_search_my_boards/should_search_boards.yml +75 -0
  91. data/spec/cassettes/Pinterest_Endpoints_Boards/_suggested_boards/should_return_the_suggested_boards_returning_only_the_requested_fields.yml +56 -0
  92. data/spec/cassettes/Pinterest_Endpoints_Boards/_unfollow_board/should_complain_for_invalid_boards.yml +56 -0
  93. data/spec/cassettes/Pinterest_Endpoints_Boards/_unfollow_board/should_perform_the_call_and_return_true.yml +109 -0
  94. data/spec/cassettes/Pinterest_Endpoints_Pins/_board_pins/should_only_get_requested_fields.yml +59 -0
  95. data/spec/cassettes/Pinterest_Endpoints_Pins/_board_pins/should_paginate_correctly.yml +85 -0
  96. data/spec/cassettes/Pinterest_Endpoints_Pins/_board_pins/should_return_the_pins_of_the_board.yml +85 -0
  97. data/spec/cassettes/Pinterest_Endpoints_Pins/_create_pin/should_create_a_pin_by_using_a_image_URL.yml +71 -0
  98. data/spec/cassettes/Pinterest_Endpoints_Pins/_create_pin/should_create_a_pin_by_using_a_image_file.yml +1997 -0
  99. data/spec/cassettes/Pinterest_Endpoints_Pins/_create_pin/should_return_a_pin_containing_only_requested_fields.yml +56 -0
  100. data/spec/cassettes/Pinterest_Endpoints_Pins/_delete_pin/should_perform_the_call_and_return_an_error.yml +56 -0
  101. data/spec/cassettes/Pinterest_Endpoints_Pins/_delete_pin/should_perform_the_call_and_return_true.yml +109 -0
  102. data/spec/cassettes/Pinterest_Endpoints_Pins/_edit_pin/should_edit_the_pin_and_return_it_with_only_the_requested_fields.yml +56 -0
  103. data/spec/cassettes/Pinterest_Endpoints_Pins/_likes/should_only_get_requested_fields.yml +58 -0
  104. data/spec/cassettes/Pinterest_Endpoints_Pins/_likes/should_paginate_correctly.yml +87 -0
  105. data/spec/cassettes/Pinterest_Endpoints_Pins/_likes/should_return_the_list_of_liked_pins.yml +85 -0
  106. data/spec/cassettes/Pinterest_Endpoints_Pins/_pin/should_complain_for_non_existent_pins.yml +56 -0
  107. data/spec/cassettes/Pinterest_Endpoints_Pins/_pin/should_get_the_current_informations.yml +71 -0
  108. data/spec/cassettes/Pinterest_Endpoints_Pins/_pin/should_restrict_to_requested_fields.yml +56 -0
  109. data/spec/cassettes/Pinterest_Endpoints_Pins/_pins/should_only_get_requested_fields.yml +59 -0
  110. data/spec/cassettes/Pinterest_Endpoints_Pins/_pins/should_paginate_correctly.yml +808 -0
  111. data/spec/cassettes/Pinterest_Endpoints_Pins/_pins/should_return_my_pins.yml +88 -0
  112. data/spec/cassettes/Pinterest_Endpoints_Pins/_search_my_pins/should_only_get_requested_fields.yml +61 -0
  113. data/spec/cassettes/Pinterest_Endpoints_Pins/_search_my_pins/should_paginate_correctly.yml +89 -0
  114. data/spec/cassettes/Pinterest_Endpoints_Pins/_search_my_pins/should_search_my_pins.yml +89 -0
  115. data/spec/cassettes/Pinterest_Endpoints_Users/_follow_interest/should_perform_the_call_and_return_an_error.yml +48 -0
  116. data/spec/cassettes/Pinterest_Endpoints_Users/_follow_user/should_complain_for_invalid_users.yml +56 -0
  117. data/spec/cassettes/Pinterest_Endpoints_Users/_follow_user/should_perform_the_call_and_return_true.yml +109 -0
  118. data/spec/cassettes/Pinterest_Endpoints_Users/_followers/should_only_get_requested_fields.yml +62 -0
  119. data/spec/cassettes/Pinterest_Endpoints_Users/_followers/should_paginate_correctly.yml +62 -0
  120. data/spec/cassettes/Pinterest_Endpoints_Users/_followers/should_return_a_list_of_followers.yml +62 -0
  121. data/spec/cassettes/Pinterest_Endpoints_Users/_following_users/should_only_get_requested_fields.yml +62 -0
  122. data/spec/cassettes/Pinterest_Endpoints_Users/_following_users/should_paginate_correctly.yml +131 -0
  123. data/spec/cassettes/Pinterest_Endpoints_Users/_following_users/should_return_a_list_of_followed_users.yml +66 -0
  124. data/spec/cassettes/Pinterest_Endpoints_Users/_interests/should_paginate_correctly.yml +112 -0
  125. data/spec/cassettes/Pinterest_Endpoints_Users/_interests/should_return_a_list_of_followed_interest.yml +58 -0
  126. data/spec/cassettes/Pinterest_Endpoints_Users/_me/should_get_the_current_informations.yml +62 -0
  127. data/spec/cassettes/Pinterest_Endpoints_Users/_me/should_restrict_to_requested_fields.yml +56 -0
  128. data/spec/cassettes/Pinterest_Endpoints_Users/_unfollow_interest/should_perform_the_call_and_return_an_error.yml +48 -0
  129. data/spec/cassettes/Pinterest_Endpoints_Users/_unfollow_user/should_complain_for_invalid_users.yml +56 -0
  130. data/spec/cassettes/Pinterest_Endpoints_Users/_unfollow_user/should_perform_the_call_and_return_true.yml +109 -0
  131. data/spec/cassettes/Pinterest_Endpoints_Users/_user/should_complain_for_non_existent_users.yml +56 -0
  132. data/spec/cassettes/Pinterest_Endpoints_Users/_user/should_get_the_current_informations.yml +60 -0
  133. data/spec/cassettes/Pinterest_Endpoints_Users/_user/should_restrict_to_requested_fields.yml +56 -0
  134. data/spec/pinterest/client_spec.rb +70 -0
  135. data/spec/pinterest/collection_spec.rb +82 -0
  136. data/spec/pinterest/endpoints/authentication_spec.rb +81 -0
  137. data/spec/pinterest/endpoints/boards_spec.rb +209 -0
  138. data/spec/pinterest/endpoints/pins_spec.rb +239 -0
  139. data/spec/pinterest/endpoints/users_spec.rb +194 -0
  140. data/spec/pinterest/errors_spec.rb +59 -0
  141. data/spec/pinterest/fixtures/first.jpg +0 -0
  142. data/spec/pinterest/models/board_spec.rb +48 -0
  143. data/spec/pinterest/models/entity_spec.rb +35 -0
  144. data/spec/pinterest/models/image_spec.rb +50 -0
  145. data/spec/pinterest/models/interest_spec.rb +20 -0
  146. data/spec/pinterest/models/pin_spec.rb +55 -0
  147. data/spec/pinterest/models/user_spec.rb +45 -0
  148. data/spec/spec_helper.rb +49 -0
  149. data/tester.rb +19 -0
  150. metadata +341 -0
@@ -0,0 +1,59 @@
1
+ #
2
+ # This file is part of the pinterest-ruby gem. Copyright (C) 2017 and above Shogun <shogun@cowtech.it>.
3
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
4
+ #
5
+
6
+ require "spec_helper"
7
+ require "ostruct"
8
+
9
+ describe Pinterest::Errors::BaseError do
10
+ context "#initialize" do
11
+ it "should save the code, the reason and the env" do
12
+ subject = Pinterest::Errors::BaseError.new("CODE", "REASON", "ENV")
13
+
14
+ expect(subject.message).to eq("[CODE] REASON")
15
+ expect(subject.code).to eq("CODE")
16
+ expect(subject.reason).to eq("REASON")
17
+ expect(subject.env).to eq("ENV")
18
+ end
19
+ end
20
+ end
21
+
22
+ describe Pinterest::Errors do
23
+ context ".create" do
24
+ it "should initialize the right class" do
25
+ subject = Pinterest::Errors.create(OpenStruct.new(status: 401, body: {"error" => "ERROR"}, env: "ENV"))
26
+ expect(subject).to be_a(Pinterest::Errors::AuthorizationError)
27
+ expect(subject.code).to eq(401)
28
+ expect(subject.reason).to eq("ERROR")
29
+ expect(subject.env).to eq("ENV")
30
+
31
+ expect(Pinterest::Errors.create(OpenStruct.new(status: 400, body: {"error" => "ERROR"}, env: "ENV"))).to be_a(Pinterest::Errors::BadRequestError)
32
+ expect(Pinterest::Errors.create(OpenStruct.new(status: 403, body: {"error" => "ERROR"}, env: "ENV"))).to be_a(Pinterest::Errors::PermissionsError)
33
+ expect(Pinterest::Errors.create(OpenStruct.new(status: 404, body: {"error" => "ERROR"}, env: "ENV"))).to be_a(Pinterest::Errors::NotFoundError)
34
+ expect(Pinterest::Errors.create(OpenStruct.new(status: 405, body: {"error" => "ERROR"}, env: "ENV"))).to be_a(Pinterest::Errors::MethodNotAllowedError)
35
+ expect(Pinterest::Errors.create(OpenStruct.new(status: 408, body: {"error" => "ERROR"}, env: "ENV"))).to be_a(Pinterest::Errors::TimeoutError)
36
+ expect(Pinterest::Errors.create(OpenStruct.new(status: 429, body: {"error" => "ERROR"}, env: "ENV"))).to be_a(Pinterest::Errors::RateLimitError)
37
+ expect(Pinterest::Errors.create(OpenStruct.new(status: 501, body: {"error" => "ERROR"}, env: "ENV"))).to be_a(Pinterest::Errors::NotImplementedError)
38
+
39
+ subject = Pinterest::Errors.create(OpenStruct.new(status: 523, body: {"error" => "ERROR"}, env: "ENV"))
40
+ expect(subject).to be_a(Pinterest::Errors::ServerError)
41
+ expect(subject.code).to eq(523)
42
+ end
43
+ end
44
+
45
+ context ".create" do
46
+ it "should return the right class" do
47
+ expect(Pinterest::Errors.class_for_code(400)).to eq(Pinterest::Errors::BadRequestError)
48
+ expect(Pinterest::Errors.class_for_code(401)).to eq(Pinterest::Errors::AuthorizationError)
49
+ expect(Pinterest::Errors.class_for_code(403)).to eq(Pinterest::Errors::PermissionsError)
50
+ expect(Pinterest::Errors.class_for_code(404)).to eq(Pinterest::Errors::NotFoundError)
51
+ expect(Pinterest::Errors.class_for_code(405)).to eq(Pinterest::Errors::MethodNotAllowedError)
52
+ expect(Pinterest::Errors.class_for_code(408)).to eq(Pinterest::Errors::TimeoutError)
53
+ expect(Pinterest::Errors.class_for_code(429)).to eq(Pinterest::Errors::RateLimitError)
54
+ expect(Pinterest::Errors.class_for_code(501)).to eq(Pinterest::Errors::NotImplementedError)
55
+ expect(Pinterest::Errors.class_for_code(503)).to eq(Pinterest::Errors::ServerError)
56
+ expect(Pinterest::Errors.class_for_code(523)).to eq(Pinterest::Errors::ServerError)
57
+ end
58
+ end
59
+ end
Binary file
@@ -0,0 +1,48 @@
1
+ #
2
+ # This file is part of the pinterest-ruby gem. Copyright (C) 2017 and above Shogun <shogun@cowtech.it>.
3
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
4
+ #
5
+
6
+ require "spec_helper"
7
+
8
+ describe Pinterest::Board do
9
+ context ".create" do
10
+ it "should create a object" do
11
+ expect(Pinterest::Board.create({})).to be_a(Pinterest::Board)
12
+ end
13
+
14
+ it "should parse dates" do
15
+ expect(Pinterest::Board.create({"created_at" => "2015-11-16T12:34:56+00:00"}).created_at).to eq(DateTime.civil(2015, 11, 16, 12, 34, 56))
16
+ end
17
+
18
+ it "should create relationships" do
19
+ expect(Pinterest::User).to receive(:create).with("CREATOR").and_return("CREATOR-OBJ")
20
+ expect(Pinterest::Image).to receive(:new).with("IMAGE").and_return("IMAGE-OBJ")
21
+
22
+ subject = Pinterest::Board.create({"creator" => "CREATOR", "image" => "IMAGE"})
23
+ expect(subject.creator).to eq("CREATOR-OBJ")
24
+ expect(subject.image).to eq("IMAGE-OBJ")
25
+ end
26
+ end
27
+
28
+ context "#as_json" do
29
+ it "should return a hash" do
30
+ expect(Pinterest::User).to receive(:create).with("CREATOR").and_return("CREATOR-OBJ")
31
+ expect(Pinterest::Image).to receive(:new).with("IMAGE").and_return("IMAGE-OBJ")
32
+
33
+ expect(Pinterest::Board.create({
34
+ "id" => "ID", "name" => "NAME", "url" => "URL", "description" => "DESCRIPTION",
35
+ "creator" => "CREATOR", "created_at" => "2015-11-16T12:34:56+00:00", "counts" => "COUNTS", "image" => "IMAGE"
36
+ }).as_json).to eq({
37
+ id: "ID",
38
+ name: "NAME",
39
+ url: "URL",
40
+ description: "DESCRIPTION",
41
+ creator: "CREATOR-OBJ",
42
+ created_at: DateTime.civil(2015, 11, 16, 12, 34, 56),
43
+ counts: "COUNTS",
44
+ image: "IMAGE-OBJ"
45
+ })
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,35 @@
1
+ #
2
+ # This file is part of the pinterest-ruby gem. Copyright (C) 2017 and above Shogun <shogun@cowtech.it>.
3
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
4
+ #
5
+
6
+ require "spec_helper"
7
+
8
+ describe Pinterest::Entity do
9
+ class EntityMockClass < Pinterest::Entity
10
+ attr_accessor :a, :b, :c
11
+ end
12
+
13
+ context ".parse_timestamp" do
14
+ it "should parse a timestamp" do
15
+ expect(Pinterest::Entity.parse_timestamp("2015-11-16T12:34:56")).to eq(DateTime.civil(2015, 11, 16, 12, 34, 56))
16
+ end
17
+ end
18
+
19
+ context "#initialize" do
20
+ it "should initialize valid keys" do
21
+ subject = EntityMockClass.new({a: 1, "b" => 2, d: 4})
22
+ expect(subject.a).to eq(1)
23
+ expect(subject.b).to eq(2)
24
+ expect(subject.c).to be_nil
25
+ end
26
+ end
27
+
28
+ context "#as_json" do
29
+ it "should serialize request keys" do
30
+ subject = EntityMockClass.new({a: 1, "b" => 2, d: 4})
31
+
32
+ expect(subject.as_json(["a", :c])).to eq({a: 1, c: nil})
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,50 @@
1
+ #
2
+ # This file is part of the pinterest-ruby gem. Copyright (C) 2017 and above Shogun <shogun@cowtech.it>.
3
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
4
+ #
5
+
6
+ require "spec_helper"
7
+
8
+ describe Pinterest::Image do
9
+ subject {
10
+ Pinterest::Image.new({
11
+ "a" => {"width" => 1, "height" => 2, "url" => 3},
12
+ "b" => {"width" => 4, "height" => 5, "url" => 6}
13
+ })
14
+ }
15
+
16
+ context "#initialize" do
17
+ it "should save the data" do
18
+ expect(Pinterest::Image.new("DATA").instance_variable_get(:@data)).to eq("DATA")
19
+ end
20
+ end
21
+
22
+ context "#versions" do
23
+ it "should return the versions" do
24
+ expect(subject.versions).to eq(["a", "b"])
25
+ end
26
+ end
27
+
28
+ context "#size" do
29
+ it "should return the sizes" do
30
+ expect(subject.size("a")).to eq({width: 1, height: 2})
31
+ expect { subject.size("c") }.to raise_error(KeyError)
32
+ end
33
+ end
34
+
35
+ context "#url" do
36
+ it "should return the sizes" do
37
+ expect(subject.url("b")).to eq(6)
38
+ expect { subject.url("c") }.to raise_error(KeyError)
39
+ end
40
+ end
41
+
42
+ context "#as_json" do
43
+ it "shuold simply return the data" do
44
+ expect(subject.as_json).to eq({
45
+ "a" => {"width" => 1, "height" => 2, "url" => 3},
46
+ "b" => {"width" => 4, "height" => 5, "url" => 6}
47
+ })
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,20 @@
1
+ #
2
+ # This file is part of the pinterest-ruby gem. Copyright (C) 2017 and above Shogun <shogun@cowtech.it>.
3
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
4
+ #
5
+
6
+ require "spec_helper"
7
+
8
+ describe Pinterest::Interest do
9
+ context ".create" do
10
+ it "should create a object" do
11
+ expect(Pinterest::Interest.create({})).to be_a(Pinterest::Interest)
12
+ end
13
+ end
14
+
15
+ context ".as_json" do
16
+ it "should return a hash" do
17
+ expect(Pinterest::Interest.create({"id" => "ID", "name" => "NAME"}).as_json).to eq({id: "ID", name: "NAME"})
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,55 @@
1
+ #
2
+ # This file is part of the pinterest-ruby gem. Copyright (C) 2017 and above Shogun <shogun@cowtech.it>.
3
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
4
+ #
5
+
6
+ require "spec_helper"
7
+
8
+ describe Pinterest::Board do
9
+ context ".create" do
10
+ it "should create a object" do
11
+ expect(Pinterest::Pin.create({})).to be_a(Pinterest::Pin)
12
+ end
13
+
14
+ it "should parse dates" do
15
+ expect(Pinterest::Board.create({"created_at" => "2015-11-16T12:34:56+00:00"}).created_at).to eq(DateTime.civil(2015, 11, 16, 12, 34, 56))
16
+ end
17
+
18
+ it "should create relationships" do
19
+ expect(Pinterest::User).to receive(:create).with("CREATOR").and_return("CREATOR-OBJ")
20
+ expect(Pinterest::Board).to receive(:create).with("BOARD").and_return("BOARD-OBJ")
21
+ expect(Pinterest::Image).to receive(:new).with("IMAGE").and_return("IMAGE-OBJ")
22
+
23
+ subject = Pinterest::Pin.create({"creator" => "CREATOR", "board" => "BOARD", "image" => "IMAGE"})
24
+ expect(subject.creator).to eq("CREATOR-OBJ")
25
+ expect(subject.board).to eq("BOARD-OBJ")
26
+ expect(subject.image).to eq("IMAGE-OBJ")
27
+ end
28
+ end
29
+
30
+ context "#as_json" do
31
+ it "should return a hash" do
32
+ expect(Pinterest::User).to receive(:create).with("CREATOR").and_return("CREATOR-OBJ")
33
+ expect(Pinterest::Board).to receive(:create).with("BOARD").and_return("BOARD-OBJ")
34
+ expect(Pinterest::Image).to receive(:new).with("IMAGE").and_return("IMAGE-OBJ")
35
+
36
+ expect(Pinterest::Pin.create({
37
+ "id" => "ID", "link" => "LINK", "url" => "URL", "creator" => "CREATOR", "board" => "BOARD", "created_at" => "2015-11-16T12:34:56+00:00",
38
+ "note" => "NOTE", "color" => "COLOR", "counts" => "COUNTS", "media" => "MEDIA", "attribution" => "ATTRIBUTION", "image" => "IMAGE"
39
+ }).as_json).to eq({
40
+ id: "ID",
41
+ link: "LINK",
42
+ url: "URL",
43
+ creator: "CREATOR-OBJ",
44
+ board: "BOARD-OBJ",
45
+ created_at: DateTime.civil(2015, 11, 16, 12, 34, 56),
46
+ note: "NOTE",
47
+ color: "COLOR",
48
+ counts: "COUNTS",
49
+ media: "MEDIA",
50
+ attribution: "ATTRIBUTION",
51
+ image: "IMAGE-OBJ"
52
+ })
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,45 @@
1
+ #
2
+ # This file is part of the pinterest-ruby gem. Copyright (C) 2017 and above Shogun <shogun@cowtech.it>.
3
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
4
+ #
5
+
6
+ require "spec_helper"
7
+
8
+ describe Pinterest::User do
9
+ context ".create" do
10
+ it "should create a object" do
11
+ expect(Pinterest::User.create({})).to be_a(Pinterest::User)
12
+ end
13
+
14
+ it "should parse dates" do
15
+ expect(Pinterest::User.create({"created_at" => "2015-11-16T12:34:56+00:00"}).created_at).to eq(DateTime.civil(2015, 11, 16, 12, 34, 56))
16
+ end
17
+
18
+ it "should create relationships" do
19
+ expect(Pinterest::Image).to receive(:new).with("IMAGE").and_return("IMAGE-OBJ")
20
+
21
+ subject = Pinterest::User.create({"image" => "IMAGE"})
22
+ expect(subject.image).to eq("IMAGE-OBJ")
23
+ end
24
+ end
25
+
26
+ context "#as_json" do
27
+ it "should return a hash" do
28
+ expect(Pinterest::Image).to receive(:new).with("IMAGE").and_return("IMAGE-OBJ")
29
+
30
+ expect(Pinterest::User.create({
31
+ "id" => "ID", "username" => "USERNAME", "first_name" => "FIRST", "last_name" => "LAST",
32
+ "bio" => "BIO", "created_at" => "2015-11-16T12:34:56+00:00", "counts" => "COUNTS", "image" => "IMAGE"
33
+ }).as_json).to eq({
34
+ id: "ID",
35
+ username: "USERNAME",
36
+ first_name: "FIRST",
37
+ last_name: "LAST",
38
+ bio: "BIO",
39
+ created_at: DateTime.civil(2015, 11, 16, 12, 34, 56),
40
+ counts: "COUNTS",
41
+ image: "IMAGE-OBJ"
42
+ })
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,49 @@
1
+ #
2
+ # This file is part of the pinterest-ruby gem. Copyright (C) 2017 and above Shogun <shogun@cowtech.it>.
3
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
4
+ #
5
+
6
+ require "bundler/setup"
7
+
8
+ if ENV["COVERAGE"]
9
+ require "simplecov"
10
+ require "coveralls"
11
+
12
+ Coveralls.wear! if ENV["CI"]
13
+
14
+ SimpleCov.start do
15
+ root = Pathname.new(File.dirname(__FILE__)) + ".."
16
+
17
+ add_filter do |src_file|
18
+ path = Pathname.new(src_file.filename).relative_path_from(root).to_s
19
+ path !~ /^lib/
20
+ end
21
+ end
22
+ end
23
+
24
+ require "rubygems"
25
+ require "vcr"
26
+ require "rspec"
27
+ require "pinterest"
28
+
29
+ RSpec.configure do |config|
30
+ config.add_formatter RSpec::Core::Formatters::ProgressFormatter if config.formatter_loader.formatters.empty?
31
+ config.tty = true
32
+ config.color = ENV["NO_COLOR"].nil?
33
+
34
+ config.expect_with(:rspec) do |c|
35
+ c.syntax = :expect
36
+ end
37
+ end
38
+
39
+ VCR.configure do |config|
40
+ config.cassette_library_dir = File.dirname(__FILE__) + "/cassettes"
41
+ config.hook_into(:webmock)
42
+ config.default_cassette_options = {record: :once}
43
+ config.configure_rspec_metadata!
44
+ config.allow_http_connections_when_no_cassette = false
45
+ end
46
+
47
+ # Credentials
48
+ $pinterest_client_id = "4878490596204882047"
49
+ $pinterest_client_secret = "aaa4922dadd0a08b0d767df5263e2e8987f88faa16c4079e17c10c0447c0fce0"
data/tester.rb ADDED
@@ -0,0 +1,19 @@
1
+ $: << __dir__ + "/lib"
2
+ require "pinterest"
3
+
4
+ client_id = "4878490596204882047"
5
+ client_secret = "aaa4922dadd0a08b0d767df5263e2e8987f88faa16c4079e17c10c0447c0fce0"
6
+ callback_url = "https://local.cowtech.it:3000"
7
+ access_token = "AVP99QpzwII-f1I2p5gyHi8CiCeQFJkDr8dP-JpDs-LEtAAyegAAAAA"
8
+ client = Pinterest::Client.new(client_id: client_id, client_secret: client_secret)
9
+
10
+ # Authorization
11
+ puts client.authorization_url(callback_url)
12
+ #puts client.fetch_access_token("3baf2adea5c82d46")
13
+ client.access_token = access_token
14
+
15
+ # Verify authentication
16
+ p client.verify_access_token
17
+
18
+ # User
19
+ p client.me