myspaceid-sdk 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. data/README +30 -0
  2. data/lib/myspace.rb +15 -0
  3. data/lib/myspace/exceptions.rb +31 -0
  4. data/lib/myspace/myspace.rb +565 -0
  5. data/lib/myspace/oauth.rb +62 -0
  6. data/lib/patches.rb +42 -0
  7. data/samples/rails/README +83 -0
  8. data/samples/rails/consumer_key.rb +4 -0
  9. data/samples/rails/consumer_key.rb-copyme +4 -0
  10. data/samples/rails/sample/README +256 -0
  11. data/samples/rails/sample/Rakefile +10 -0
  12. data/samples/rails/sample/app/controllers/application.rb +15 -0
  13. data/samples/rails/sample/app/controllers/oauth_controller.rb +68 -0
  14. data/samples/rails/sample/app/controllers/openid_controller.rb +105 -0
  15. data/samples/rails/sample/app/controllers/user_controller.rb +96 -0
  16. data/samples/rails/sample/app/helpers/application_helper.rb +3 -0
  17. data/samples/rails/sample/app/helpers/oauth_helper.rb +2 -0
  18. data/samples/rails/sample/app/helpers/openid_helper.rb +2 -0
  19. data/samples/rails/sample/app/helpers/user_helper.rb +90 -0
  20. data/samples/rails/sample/app/views/oauth/error.rhtml +8 -0
  21. data/samples/rails/sample/app/views/oauth/index.rhtml +8 -0
  22. data/samples/rails/sample/app/views/oauth/profile.rhtml +74 -0
  23. data/samples/rails/sample/app/views/openid/index.rhtml +125 -0
  24. data/samples/rails/sample/app/views/user/complete.rhtml +59 -0
  25. data/samples/rails/sample/app/views/user/index.rhtml +157 -0
  26. data/samples/rails/sample/config/boot.rb +109 -0
  27. data/samples/rails/sample/config/database.yml +22 -0
  28. data/samples/rails/sample/config/environment.rb +75 -0
  29. data/samples/rails/sample/config/environments/development.rb +17 -0
  30. data/samples/rails/sample/config/environments/production.rb +24 -0
  31. data/samples/rails/sample/config/environments/test.rb +22 -0
  32. data/samples/rails/sample/config/initializers/inflections.rb +10 -0
  33. data/samples/rails/sample/config/initializers/mime_types.rb +5 -0
  34. data/samples/rails/sample/config/initializers/new_rails_defaults.rb +17 -0
  35. data/samples/rails/sample/config/locales/en.yml +5 -0
  36. data/samples/rails/sample/config/routes.rb +43 -0
  37. data/samples/rails/sample/db/development.sqlite3 +0 -0
  38. data/samples/rails/sample/doc/README_FOR_APP +5 -0
  39. data/samples/rails/sample/public/404.html +30 -0
  40. data/samples/rails/sample/public/422.html +30 -0
  41. data/samples/rails/sample/public/500.html +33 -0
  42. data/samples/rails/sample/public/dispatch.cgi +10 -0
  43. data/samples/rails/sample/public/dispatch.fcgi +24 -0
  44. data/samples/rails/sample/public/dispatch.rb +10 -0
  45. data/samples/rails/sample/public/favicon.ico +0 -0
  46. data/samples/rails/sample/public/images/8b_Home.jpg +0 -0
  47. data/samples/rails/sample/public/images/8b_homecomp_200.jpg +0 -0
  48. data/samples/rails/sample/public/images/8b_profile_page_201.jpg +0 -0
  49. data/samples/rails/sample/public/images/LArge_150x35_myspaceID.png +0 -0
  50. data/samples/rails/sample/public/images/MySpaceID-loginwith-156x28.png +0 -0
  51. data/samples/rails/sample/public/images/appengine_button_noborder.gif +0 -0
  52. data/samples/rails/sample/public/images/background.png +0 -0
  53. data/samples/rails/sample/public/images/blue_150_Loginwithmyspaceid.png +0 -0
  54. data/samples/rails/sample/public/images/blue_150_signupwithmyspaceid.png +0 -0
  55. data/samples/rails/sample/public/images/blue_90_myspaceid.png +0 -0
  56. data/samples/rails/sample/public/images/button-background.gif +0 -0
  57. data/samples/rails/sample/public/images/grey_150_Loginwithmyspaceid.png +0 -0
  58. data/samples/rails/sample/public/images/grey_180_signupwithmyspaceid.png +0 -0
  59. data/samples/rails/sample/public/images/grey_90_myspaceid.png +0 -0
  60. data/samples/rails/sample/public/images/image.gif +0 -0
  61. data/samples/rails/sample/public/images/keyhole_buttons_only.png +0 -0
  62. data/samples/rails/sample/public/images/level_icon.png +0 -0
  63. data/samples/rails/sample/public/images/myspaceid.png +0 -0
  64. data/samples/rails/sample/public/images/nav_select.png +0 -0
  65. data/samples/rails/sample/public/images/openid-16x16.gif +0 -0
  66. data/samples/rails/sample/public/images/openid-icon.png +0 -0
  67. data/samples/rails/sample/public/images/openid-logo.png +0 -0
  68. data/samples/rails/sample/public/images/profile_icon.png +0 -0
  69. data/samples/rails/sample/public/images/profile_pic.png +0 -0
  70. data/samples/rails/sample/public/images/rails.png +0 -0
  71. data/samples/rails/sample/public/images/ranking_badge.png +0 -0
  72. data/samples/rails/sample/public/images/song_play.png +0 -0
  73. data/samples/rails/sample/public/images/song_sound.png +0 -0
  74. data/samples/rails/sample/public/images/star_grey.png +0 -0
  75. data/samples/rails/sample/public/images/star_yellow.png +0 -0
  76. data/samples/rails/sample/public/index.html +19 -0
  77. data/samples/rails/sample/public/index.html.orig +274 -0
  78. data/samples/rails/sample/public/javascripts/application.js +2 -0
  79. data/samples/rails/sample/public/javascripts/controls.js +963 -0
  80. data/samples/rails/sample/public/javascripts/dragdrop.js +973 -0
  81. data/samples/rails/sample/public/javascripts/effects.js +1128 -0
  82. data/samples/rails/sample/public/javascripts/myspaceid.rev.0.js +103 -0
  83. data/samples/rails/sample/public/javascripts/prototype.js +4320 -0
  84. data/samples/rails/sample/public/robots.txt +5 -0
  85. data/samples/rails/sample/public/stylesheets/base.css +46 -0
  86. data/samples/rails/sample/public/stylesheets/main.css +65 -0
  87. data/samples/rails/sample/public/stylesheets/openid.css +119 -0
  88. data/samples/rails/sample/script/about +4 -0
  89. data/samples/rails/sample/script/console +3 -0
  90. data/samples/rails/sample/script/dbconsole +3 -0
  91. data/samples/rails/sample/script/destroy +3 -0
  92. data/samples/rails/sample/script/generate +3 -0
  93. data/samples/rails/sample/script/performance/benchmarker +3 -0
  94. data/samples/rails/sample/script/performance/profiler +3 -0
  95. data/samples/rails/sample/script/performance/request +3 -0
  96. data/samples/rails/sample/script/plugin +3 -0
  97. data/samples/rails/sample/script/process/inspector +3 -0
  98. data/samples/rails/sample/script/process/reaper +3 -0
  99. data/samples/rails/sample/script/process/spawner +3 -0
  100. data/samples/rails/sample/script/runner +3 -0
  101. data/samples/rails/sample/script/server +3 -0
  102. data/samples/rails/sample/test/functional/oauth_controller_test.rb +8 -0
  103. data/samples/rails/sample/test/functional/openid_controller_test.rb +8 -0
  104. data/samples/rails/sample/test/functional/user_controller_test.rb +8 -0
  105. data/samples/rails/sample/test/performance/browsing_test.rb +9 -0
  106. data/samples/rails/sample/test/test_helper.rb +38 -0
  107. data/test/data.rb +8 -0
  108. data/test/myspace_test.rb +13 -0
  109. data/test/tc_albums.rb +126 -0
  110. data/test/tc_friends.rb +96 -0
  111. data/test/tc_profile.rb +107 -0
  112. data/test/tc_videos.rb +125 -0
  113. data/test/test_data.rb +14 -0
  114. data/test/ts_alltests.rb +7 -0
  115. metadata +222 -0
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,46 @@
1
+ * {
2
+ font-family: verdana,sans-serif;
3
+ }
4
+
5
+ body {
6
+ width: 60em;
7
+ margin: 1em;
8
+ }
9
+
10
+ div {
11
+ padding: .5em;
12
+ }
13
+
14
+ table {
15
+ margin: none;
16
+ padding: none;
17
+ }
18
+
19
+ .alert {
20
+ border: 1px solid #e7dc2b;
21
+ background: #fff888;
22
+ }
23
+
24
+ .success {
25
+ border: 1px solid #669966;
26
+ background: #88ff88;
27
+ }
28
+
29
+ .error {
30
+ border: 1px solid #ff0000;
31
+ background: #ffaaaa;
32
+ }
33
+
34
+ #verify-form {
35
+ border: 1px solid #777777;
36
+ background: #dddddd;
37
+ margin-top: 1em;
38
+ padding-bottom: 0em;
39
+ }
40
+
41
+ #MySpaceTabs {
42
+ margin:4em auto;
43
+ min-width:970px;
44
+ width:74.6em;
45
+ }
46
+
@@ -0,0 +1,65 @@
1
+
2
+ html { background: #5b82f3 url(/images/background.png) scroll repeat-x top left; }
3
+ body { padding: 0 0 50px 60px; width: 860px; font-family: ArcadeClassic, Tahoma; }
4
+ #branding { text-align: center; background-color: #fff; width: 160px; line-height: 200%;}
5
+
6
+ #nav { margin-top: 25px; float: left; }
7
+ #nav li { display: inline; margin-right: 20px; }
8
+ #nav a { color: #fff; text-decoration: none; font-size: 110%; }
9
+
10
+ #login {padding-bottom:15px; padding-top:15px; background-color: #e6e6e6; text-align:center; width: 260px; float: right; }
11
+ #login .logout a { font-size: 22px; line-height: 22px; color:#aaa; text-decoration: none; }
12
+
13
+ #login .logout .logout_isSignedin { display: block; }
14
+ #login .logout .logout_isSignedout { display: none; }
15
+
16
+ #login .login .login_isSignedin { display: none; }
17
+ #login .login .login_isSignedout { display: block; }
18
+
19
+ #cols { margin-top: 80px; overflow: auto; }
20
+ #cols>li { display: block; float: left; width: 260px; padding: 15px; padding-top:20px; background-color: #fff; height: 500px; overflow: auto; }
21
+ #cols>li h1 { font-size: 140%; font-weight: normal; }
22
+ #cols>li h2 { font-size: 120%; }
23
+ #cols #profile { background-color: #e6e6e6; width: 250px; }
24
+
25
+ #content p { font-size: 90%; }
26
+ #content h2 { margin-top: 15px; }
27
+
28
+ #profile-view { text-align: center; }
29
+ #profile-view a { text-decoration: none; }
30
+ #profile-pic { border: 2px solid #a9a9a9; }
31
+ #caption { overflow: auto; }
32
+ #caption-left { width: 66%; float: left; }
33
+ #caption-right { width: 32%; float: right; }
34
+
35
+ #profile h1 { color: #000; margin-top: 15px; }
36
+ #basic-info h1 { color: #6da54a; }
37
+ #activities>h1 { color: #2665ac; }
38
+ #activities>li { width:115px; }
39
+ #activities>li>h1 { color: #2665ac; }
40
+ #activities>li content{ display:block; width:100%; }
41
+ #activities>li div{ width:100%; text-align:center; margin:5px; padding:5px; }
42
+ #activities>li h5 {}
43
+ #activities>li img {height:85px;}
44
+ #profile h2 { color: #000; }
45
+ #profile h3 { color: #a9a9a9; font-size: 110%; margin-top: 10px; }
46
+ #member-since { color: #000; font-size: 110%; }
47
+ #headline { color: #424242; }
48
+ #about-me { margin-top: 20px; color: #424242; font-size: 90%; }
49
+
50
+ /* li#activities-map {width:600px;} */
51
+ div#copyright { text-align: center; margin-top: 30px; color: #FFFFFF;}
52
+
53
+ .content_loggedOut { display: none; }
54
+ .content_loggedIn { display: block; }
55
+
56
+ .welcome_LoggedOut { display: block; margin-top: 90px; width: 450px; font-size: large; font-weight: bold; padding-left: 210px; }
57
+ .welcome_LoggedIn { display: none; }
58
+
59
+ .rounded-corner-top {-moz-border-radius-topleft:5px; -webkit-border-top-left-radius:5px; -moz-border-radius-topright:5px; -webkit-border-top-right-radius:5px;}
60
+ .rounded-corner-left {-moz-border-radius-topleft:5px; -moz-border-radius-bottomleft:5px; -webkit-border-top-left-radius:5px; -webkit-border-bottom-left-radius:5px; }
61
+ .rounded-corner-right {-moz-border-radius-topright:5px; -moz-border-radius-bottomright:5px; -webkit-border-top-right-radius:5px; -webkit-border-bottom-right-radius:5px; }
62
+ .rounded-corner-bottom {-moz-border-radius-bottomleft:5px; -webkit-border-bottom-left-radius:5px; -moz-border-radius-bottomright:5px; -webkit-border-bottom-right-radius:5px;}
63
+
64
+ .activitiesContainer{margin:0px; margin-top:15px; font-size:85%;}
65
+ .activitiesContainer .activityItem {margin:0px; margin-bottom:20px;}
@@ -0,0 +1,119 @@
1
+ /* Copyright 2007 Google Inc.
2
+ *
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ */
15
+
16
+ body {
17
+ background-color: white;
18
+ color: black;
19
+ margin: 10px;
20
+ }
21
+
22
+ body, input, textarea {
23
+ font-family: Arial, sans-serif;
24
+ font-size: medium;
25
+ }
26
+
27
+ #body {
28
+ clear: both;
29
+ margin: 1em 0 0 1em;
30
+ }
31
+
32
+ #header {
33
+ margin: 1.5em 0 0 0;
34
+ }
35
+
36
+ #title, .top, .bottom {
37
+ background-color: #c3d9ff;
38
+ }
39
+
40
+ .top {
41
+ font-weight: bold;
42
+ text-align: center;
43
+ }
44
+
45
+ #title {
46
+ font-weight: bold;
47
+ padding: .3em;
48
+ }
49
+
50
+ #navbar {
51
+ font-size: 80%;
52
+ text-align: right;
53
+ }
54
+
55
+
56
+ /*
57
+ * Links
58
+ */
59
+ a img {
60
+ border: none;
61
+ }
62
+
63
+ /*
64
+ * Misc
65
+ */
66
+ img.icon {
67
+ vertical-align: middle;
68
+ }
69
+
70
+ img#openid-logo {
71
+ float: left;
72
+ background-color: white;
73
+ margin-right: .5em;
74
+ padding-right: .5em;
75
+ margin-top: -1.5em;
76
+ }
77
+
78
+ .error {
79
+ color: red;
80
+ font-style: italic;
81
+ }
82
+
83
+ span.success {
84
+ color: #55aa55;
85
+ }
86
+
87
+ span.cancel {
88
+ color: #aaaa55;
89
+ }
90
+
91
+ /*
92
+ * Forms
93
+ */
94
+ form {
95
+ margin: 0 0 1em 0;
96
+ padding: 0;
97
+ }
98
+
99
+ input#openid {
100
+ background: #fff url("/images/openid-icon.png") no-repeat 2px 2px;
101
+ padding-left: 1.5em;
102
+ }
103
+
104
+ a.button, input[type^="submit"], input[type^="button"] {
105
+ margin: 0;
106
+ padding: 2px 5px 2px 5px;
107
+ font-family: Arial, Sans-serif;
108
+ font-size: 12px;
109
+ text-decoration: none;
110
+ color: #222;
111
+ cursor: default;
112
+ background: #ddd url("/images/button-background.gif") repeat-x 0 0;
113
+ border: 1px solid #aaa;
114
+ }
115
+
116
+ a.button:hover, input[type^="submit"]:hover, input[type^="button"]:hover {
117
+ border-color: #9cf #69e #69e #7af;
118
+ }
119
+
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ $LOAD_PATH.unshift "#{RAILTIES_PATH}/builtin/rails_info"
4
+ require 'commands/about'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/console'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/dbconsole'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/destroy'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/generate'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/benchmarker'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/profiler'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/request'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/plugin'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/inspector'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/reaper'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/spawner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/runner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/server'
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class OauthControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class OpenidControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class UserControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+ require 'performance_test_help'
3
+
4
+ # Profiling results for each test method are written to tmp/performance.
5
+ class BrowsingTest < ActionController::PerformanceTest
6
+ def test_homepage
7
+ get '/'
8
+ end
9
+ end
@@ -0,0 +1,38 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3
+ require 'test_help'
4
+
5
+ class Test::Unit::TestCase
6
+ # Transactional fixtures accelerate your tests by wrapping each test method
7
+ # in a transaction that's rolled back on completion. This ensures that the
8
+ # test database remains unchanged so your fixtures don't have to be reloaded
9
+ # between every test method. Fewer database queries means faster tests.
10
+ #
11
+ # Read Mike Clark's excellent walkthrough at
12
+ # http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
13
+ #
14
+ # Every Active Record database supports transactions except MyISAM tables
15
+ # in MySQL. Turn off transactional fixtures in this case; however, if you
16
+ # don't care one way or the other, switching from MyISAM to InnoDB tables
17
+ # is recommended.
18
+ #
19
+ # The only drawback to using transactional fixtures is when you actually
20
+ # need to test transactions. Since your test is bracketed by a transaction,
21
+ # any transactions started in your code will be automatically rolled back.
22
+ self.use_transactional_fixtures = true
23
+
24
+ # Instantiated fixtures are slow, but give you @david where otherwise you
25
+ # would need people(:david). If you don't want to migrate your existing
26
+ # test cases which use the @david style and don't mind the speed hit (each
27
+ # instantiated fixtures translates to a database query per test method),
28
+ # then set this back to true.
29
+ self.use_instantiated_fixtures = false
30
+
31
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
32
+ #
33
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
34
+ # -- they do not yet inherit this setting
35
+ fixtures :all
36
+
37
+ # Add more helper methods to be used by all tests here...
38
+ end
@@ -0,0 +1,8 @@
1
+ module TestData
2
+ CONSUMER_KEY = '5796bcaafb2a4e48a94f4c1849bb2058' unless const_defined?('CONSUMER_KEY')
3
+ CONSUMER_SECRET = '5311c1fbe72b47298d4db5a098ce26d0' unless const_defined?('CONSUMER_SECRET')
4
+
5
+ TOKEN = 'BFKvhXYYsrP88LvZ+Yi3qJ2syRnUkwRUB2wfWL9jROL+MFVWOXSZfg7pi37DlCSkYoHtxLiapKMQRMXFh4mvJi9ze3t9lvKAMm85WMKPka0=' unless const_defined?('TOKEN')
6
+ SECRET = 'a062817544804c8da349e7621a8a26cb' unless const_defined?('SECRET')
7
+ USER_ID = '456073223' unless const_defined?('USER_ID')
8
+ end
@@ -0,0 +1,13 @@
1
+ require 'test/unit'
2
+
3
+ require 'myspace'
4
+
5
+ require 'test_data'
6
+
7
+ module MySpaceTest
8
+ include TestData
9
+
10
+ def setup
11
+ @myspace = MySpace::MySpace.new(CONSUMER_KEY, CONSUMER_SECRET, :access_token => TOKEN, :access_token_secret => SECRET)
12
+ end
13
+ end
@@ -0,0 +1,126 @@
1
+ require 'test/unit'
2
+ require 'myspace'
3
+
4
+ class TC_Albums < Test::Unit::TestCase
5
+ include MySpaceTest
6
+
7
+ def test_albums
8
+ obj = nil
9
+ BAD_IDS.each do |value|
10
+ assert_raise(MySpace::BadIdentifier) do
11
+ obj = @myspace.get_albums(value)
12
+ end
13
+ end
14
+ assert_nothing_raised do
15
+ obj = @myspace.get_albums(USER_ID)
16
+ end
17
+ assert_equal(1, obj['count'])
18
+ albums = obj['albums']
19
+ assert_instance_of(Array, albums)
20
+ assert_equal(1, albums.length)
21
+ album = albums[0]
22
+ assert_instance_of(Hash, album)
23
+ album_id = album['id'].to_s
24
+ assert_equal('40418', album_id)
25
+ title = album['title']
26
+ assert_instance_of(String, title)
27
+ assert_equal('My Photos', title)
28
+ end
29
+
30
+ # {"albums"=>
31
+ # [{"photosUri"=>
32
+ # "http://api.myspace.com/v1/users/456073223/albums/40418/photos",
33
+ # "photoCount"=>1,
34
+ # "location"=>"",
35
+ # "title"=>"My Photos",
36
+ # "id"=>40418,
37
+ # "defaultImage"=>
38
+ # "http://c1.ac-images.myspacecdn.com/images02/45/m_f820313641924f0f90004932c8bc310c.jpg",
39
+ # "privacy"=>"Everyone",
40
+ # "user"=>
41
+ # {"name"=>"Bob",
42
+ # "uri"=>"http://api.myspace.com/v1/users/456073223",
43
+ # "webUri"=>"http://www.myspace.com/bobvontestacount",
44
+ # "largeImage"=>
45
+ # "http://c1.ac-images.myspacecdn.com/images02/45/l_f820313641924f0f90004932c8bc310c.jpg",
46
+ # "userType"=>"RegularUser",
47
+ # "userId"=>456073223,
48
+ # "image"=>
49
+ # "http://c1.ac-images.myspacecdn.com/images02/45/s_f820313641924f0f90004932c8bc310c.jpg"},
50
+ # "albumUri"=>"http://api.myspace.com/v1/users/456073223/albums/40418"}],
51
+ # "count"=>1,
52
+ # "user"=>
53
+ # {"name"=>"Bob",
54
+ # "uri"=>"http://api.myspace.com/v1/users/456073223",
55
+ # "webUri"=>"http://www.myspace.com/bobvontestacount",
56
+ # "largeImage"=>
57
+ # "http://c1.ac-images.myspacecdn.com/images02/45/l_f820313641924f0f90004932c8bc310c.jpg",
58
+ # "userType"=>"RegularUser",
59
+ # "userId"=>456073223,
60
+ # "image"=>
61
+ # "http://c1.ac-images.myspacecdn.com/images02/45/s_f820313641924f0f90004932c8bc310c.jpg"}}
62
+
63
+ def test_album
64
+ obj = nil
65
+ BAD_IDS.each do |value|
66
+ assert_raise(MySpace::BadIdentifier) do
67
+ obj = @myspace.get_album(value, ALBUM_ID)
68
+ end
69
+ end
70
+ BAD_IDS.each do |value|
71
+ assert_raise(MySpace::BadIdentifier) do
72
+ obj = @myspace.get_album(USER_ID, value)
73
+ end
74
+ end
75
+ assert_raise(MySpace::RestException) do
76
+ obj = @myspace.get_album(USER_ID, "1234")
77
+ end
78
+ assert_nothing_raised do
79
+ obj = @myspace.get_album(USER_ID, ALBUM_ID)
80
+ end
81
+ assert_equal(1, obj['count'])
82
+ photos = obj['photos']
83
+ assert_instance_of(Array, photos)
84
+ assert_equal(1, photos.length)
85
+ photo = photos[0]
86
+ assert_instance_of(Hash, photo)
87
+ photo_id = photo['id'].to_s
88
+ assert_equal('100809', photo_id)
89
+ caption = photo['caption']
90
+ assert_instance_of(String, caption)
91
+ assert_equal('', caption)
92
+ end
93
+
94
+ # {"photos"=>
95
+ # [{"smallImageUri"=>
96
+ # "http://c1.ac-images.myspacecdn.com/images02/45/s_f820313641924f0f90004932c8bc310c.jpg",
97
+ # "photoUri"=>
98
+ # "http://api.myspace.com/v1/users/456073223/albums/40418/photos/100809",
99
+ # "id"=>100809,
100
+ # "uploadDate"=>"2/27/2009 10:14:12 AM",
101
+ # "caption"=>"",
102
+ # "lastUpdatedDate"=>"",
103
+ # "imageUri"=>
104
+ # "http://c1.ac-images.myspacecdn.com/images02/45/l_f820313641924f0f90004932c8bc310c.jpg",
105
+ # "user"=>
106
+ # {"name"=>"Bob",
107
+ # "uri"=>"http://api.myspace.com/v1/users/456073223",
108
+ # "webUri"=>"http://www.myspace.com/bobvontestacount",
109
+ # "largeImage"=>
110
+ # "http://c1.ac-images.myspacecdn.com/images02/45/l_f820313641924f0f90004932c8bc310c.jpg",
111
+ # "userType"=>"RegularUser",
112
+ # "userId"=>456073223,
113
+ # "image"=>
114
+ # "http://c1.ac-images.myspacecdn.com/images02/45/s_f820313641924f0f90004932c8bc310c.jpg"}}],
115
+ # "count"=>1,
116
+ # "user"=>
117
+ # {"name"=>"Bob",
118
+ # "uri"=>"http://api.myspace.com/v1/users/456073223",
119
+ # "webUri"=>"http://www.myspace.com/bobvontestacount",
120
+ # "largeImage"=>
121
+ # "http://c1.ac-images.myspacecdn.com/images02/45/l_f820313641924f0f90004932c8bc310c.jpg",
122
+ # "userType"=>"RegularUser",
123
+ # "userId"=>456073223,
124
+ # "image"=>
125
+ # "http://c1.ac-images.myspacecdn.com/images02/45/s_f820313641924f0f90004932c8bc310c.jpg"}}
126
+ end