brickset_api 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +4 -0
  6. data/Gemfile +6 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +145 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/brickset.gemspec +30 -0
  13. data/lib/brickset.rb +55 -0
  14. data/lib/brickset/api/auth.rb +22 -0
  15. data/lib/brickset/api/collection/advanced.rb +34 -0
  16. data/lib/brickset/api/collection/minifig.rb +35 -0
  17. data/lib/brickset/api/collection/set.rb +117 -0
  18. data/lib/brickset/api/set.rb +157 -0
  19. data/lib/brickset/client.rb +56 -0
  20. data/lib/brickset/configuration.rb +9 -0
  21. data/lib/brickset/elements/additional_image.rb +13 -0
  22. data/lib/brickset/elements/collection_detail.rb +28 -0
  23. data/lib/brickset/elements/collection_total.rb +15 -0
  24. data/lib/brickset/elements/condition.rb +11 -0
  25. data/lib/brickset/elements/instruction.rb +12 -0
  26. data/lib/brickset/elements/minifig_collection.rb +15 -0
  27. data/lib/brickset/elements/review.rb +20 -0
  28. data/lib/brickset/elements/set.rb +67 -0
  29. data/lib/brickset/elements/subtheme.rb +15 -0
  30. data/lib/brickset/elements/theme.rb +15 -0
  31. data/lib/brickset/elements/user_note.rb +12 -0
  32. data/lib/brickset/elements/year.rb +13 -0
  33. data/lib/brickset/version.rb +3 -0
  34. data/spec/brickset/api/auth_spec.rb +84 -0
  35. data/spec/brickset/api/collection/advanced_spec.rb +59 -0
  36. data/spec/brickset/api/collection/minifig_spec.rb +95 -0
  37. data/spec/brickset/api/collection/set_spec.rb +350 -0
  38. data/spec/brickset/api/set_spec.rb +658 -0
  39. data/spec/brickset/client_spec.rb +155 -0
  40. data/spec/brickset/configuration_spec.rb +9 -0
  41. data/spec/brickset/elements/additional_image_spec.rb +26 -0
  42. data/spec/brickset/elements/collection_detail_spec.rb +40 -0
  43. data/spec/brickset/elements/collection_total_spec.rb +27 -0
  44. data/spec/brickset/elements/condition_spec.rb +23 -0
  45. data/spec/brickset/elements/instruction_spec.rb +24 -0
  46. data/spec/brickset/elements/minifig_collection_spec.rb +27 -0
  47. data/spec/brickset/elements/review_spec.rb +32 -0
  48. data/spec/brickset/elements/set_spec.rb +72 -0
  49. data/spec/brickset/elements/subtheme_spec.rb +27 -0
  50. data/spec/brickset/elements/theme_spec.rb +27 -0
  51. data/spec/brickset/elements/user_note_spec.rb +24 -0
  52. data/spec/brickset/elements/year_spec.rb +25 -0
  53. data/spec/brickset_spec.rb +59 -0
  54. data/spec/fixtures/api_key_invalid.xml +2 -0
  55. data/spec/fixtures/api_key_valid.xml +2 -0
  56. data/spec/fixtures/get_additional_images.xml +24 -0
  57. data/spec/fixtures/get_additional_images_no_result.xml +2 -0
  58. data/spec/fixtures/get_collection_detail.xml +23 -0
  59. data/spec/fixtures/get_collection_detail_conditions.xml +24 -0
  60. data/spec/fixtures/get_collection_detail_no_result.xml +2 -0
  61. data/spec/fixtures/get_collection_totals.xml +8 -0
  62. data/spec/fixtures/get_collection_totals_no_result.xml +8 -0
  63. data/spec/fixtures/get_instructions.xml +7 -0
  64. data/spec/fixtures/get_instructions_no_result.xml +2 -0
  65. data/spec/fixtures/get_minifig_collection.xml +31 -0
  66. data/spec/fixtures/get_minifig_collection_owned.xml +17 -0
  67. data/spec/fixtures/get_minifig_collection_wanted.xml +10 -0
  68. data/spec/fixtures/get_recently_updated_sets.xml +52 -0
  69. data/spec/fixtures/get_recently_updated_sets_invalid_key.xml +1 -0
  70. data/spec/fixtures/get_reviews.xml +28 -0
  71. data/spec/fixtures/get_reviews_no_result.xml +2 -0
  72. data/spec/fixtures/get_set.xml +52 -0
  73. data/spec/fixtures/get_set_no_result.xml +2 -0
  74. data/spec/fixtures/get_sets.xml +101 -0
  75. data/spec/fixtures/get_sets_no_result.xml +2 -0
  76. data/spec/fixtures/get_subthemes.xml +24 -0
  77. data/spec/fixtures/get_subthemes_for_user.xml +24 -0
  78. data/spec/fixtures/get_subthemes_for_user_no_result.xml +2 -0
  79. data/spec/fixtures/get_subthemes_for_user_owned.xml +24 -0
  80. data/spec/fixtures/get_subthemes_for_user_wanted.xml +31 -0
  81. data/spec/fixtures/get_subthemes_no_result.xml +2 -0
  82. data/spec/fixtures/get_themes.xml +17 -0
  83. data/spec/fixtures/get_themes_for_user.xml +17 -0
  84. data/spec/fixtures/get_themes_for_user_no_result.xml +2 -0
  85. data/spec/fixtures/get_themes_for_user_owned.xml +17 -0
  86. data/spec/fixtures/get_themes_for_user_wanted.xml +25 -0
  87. data/spec/fixtures/get_themes_no_result.xml +2 -0
  88. data/spec/fixtures/get_user_notes.xml +11 -0
  89. data/spec/fixtures/get_user_notes_no_result.xml +2 -0
  90. data/spec/fixtures/get_years.xml +18 -0
  91. data/spec/fixtures/get_years_for_user.xml +18 -0
  92. data/spec/fixtures/get_years_for_user_no_result.xml +2 -0
  93. data/spec/fixtures/get_years_for_user_owned.xml +13 -0
  94. data/spec/fixtures/get_years_for_user_wanted.xml +13 -0
  95. data/spec/fixtures/get_years_no_result.xml +2 -0
  96. data/spec/fixtures/login.xml +2 -0
  97. data/spec/fixtures/login_invalid_credentials.xml +2 -0
  98. data/spec/fixtures/login_invalid_key.xml +2 -0
  99. data/spec/fixtures/set_collection.xml +2 -0
  100. data/spec/fixtures/set_collection_invalid.xml +2 -0
  101. data/spec/fixtures/set_collection_owns.xml +2 -0
  102. data/spec/fixtures/set_collection_owns_invalid.xml +2 -0
  103. data/spec/fixtures/set_collection_qty_owned.xml +2 -0
  104. data/spec/fixtures/set_collection_qty_owned_invalid.xml +2 -0
  105. data/spec/fixtures/set_collection_user_notes.xml +2 -0
  106. data/spec/fixtures/set_collection_user_notes_invalid.xml +2 -0
  107. data/spec/fixtures/set_collection_wants.xml +2 -0
  108. data/spec/fixtures/set_collection_wants_invalid.xml +2 -0
  109. data/spec/fixtures/set_minifig_collection.xml +2 -0
  110. data/spec/fixtures/set_minifig_collection_invalid.xml +2 -0
  111. data/spec/fixtures/set_user_rating.xml +2 -0
  112. data/spec/fixtures/set_user_rating_invalid.xml +2 -0
  113. data/spec/fixtures/token_invalid.xml +2 -0
  114. data/spec/fixtures/token_valid.xml +2 -0
  115. data/spec/spec_helper.rb +43 -0
  116. metadata +355 -0
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Brickset::Elements::Subtheme do
4
+
5
+ it 'knows its ancestors' do
6
+ expect(described_class.ancestors).to include HappyMapper
7
+ end
8
+
9
+ it 'knows its tag' do
10
+ expect(described_class.tag_name).to eq 'subthemes'
11
+ end
12
+
13
+ describe '#parse' do
14
+ let(:xml) { fixture('get_subthemes.xml') }
15
+ let(:parsed) { described_class.parse(xml, single: true) }
16
+
17
+ it 'knows its attributes' do
18
+ aggregate_failures do
19
+ expect(parsed.theme).to eq 'Star Wars'
20
+ expect(parsed.subtheme).to eq 'Ultimate Collector Series'
21
+ expect(parsed.set_count).to eq 30
22
+ expect(parsed.year_from).to eq 2000
23
+ expect(parsed.year_to).to eq 2018
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Brickset::Elements::Theme do
4
+
5
+ it 'knows its ancestors' do
6
+ expect(described_class.ancestors).to include HappyMapper
7
+ end
8
+
9
+ it 'knows its tag' do
10
+ expect(described_class.tag_name).to eq 'themes'
11
+ end
12
+
13
+ describe '#parse' do
14
+ let(:xml) { fixture('get_themes.xml') }
15
+ let(:parsed) { described_class.parse(xml, single: true) }
16
+
17
+ it 'knows its attributes' do
18
+ aggregate_failures do
19
+ expect(parsed.theme).to eq 'Advanced Models'
20
+ expect(parsed.set_count).to eq 61
21
+ expect(parsed.subtheme_count).to eq 10
22
+ expect(parsed.year_from).to eq 2000
23
+ expect(parsed.year_to).to eq 2018
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Brickset::Elements::UserNote do
4
+
5
+ it 'knows its ancestors' do
6
+ expect(described_class.ancestors).to include HappyMapper
7
+ end
8
+
9
+ it 'knows its tag' do
10
+ expect(described_class.tag_name).to eq 'userNotes'
11
+ end
12
+
13
+ describe '#parse' do
14
+ let(:xml) { fixture('get_user_notes.xml') }
15
+ let(:parsed) { described_class.parse(xml, single: true) }
16
+
17
+ it 'knows its attributes' do
18
+ aggregate_failures do
19
+ expect(parsed.set_id).to eq 5860
20
+ expect(parsed.user_notes).to eq 'A long time ago in a galaxy far, far away...'
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Brickset::Elements::Year do
4
+
5
+ it 'knows its ancestors' do
6
+ expect(described_class.ancestors).to include HappyMapper
7
+ end
8
+
9
+ it 'knows its tag' do
10
+ expect(described_class.tag_name).to eq 'years'
11
+ end
12
+
13
+ describe '#parse' do
14
+ let(:xml) { fixture('get_years.xml') }
15
+ let(:parsed) { described_class.parse(xml, single: true) }
16
+
17
+ it 'knows its attributes' do
18
+ aggregate_failures do
19
+ expect(parsed.theme).to eq 'Star Wars'
20
+ expect(parsed.year).to eq '2016'
21
+ expect(parsed.set_count).to eq 67
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Brickset do
4
+ it 'has a version number' do
5
+ expect(Brickset::VERSION).not_to be_nil
6
+ end
7
+
8
+ it 'knows its base URI' do
9
+ expect(Brickset::BASE_URI).to eq 'https://brickset.com/api/v2.asmx'
10
+ end
11
+
12
+ describe '.client' do
13
+ context 'when the options hash is specified' do
14
+ it 'instantiates a new instance with the specified options' do
15
+ expect(Brickset::Client).to receive(:new).with token: 'access-token'
16
+ described_class.client(token: 'access-token')
17
+ end
18
+ end
19
+
20
+ context 'when no options have been specified' do
21
+ it 'instantiates a new instance withouth any options' do
22
+ expect(Brickset::Client).to receive(:new).with({})
23
+ described_class.client
24
+ end
25
+ end
26
+ end
27
+
28
+ describe '.login' do
29
+ it 'calls #login on the Brickset::Client instance' do
30
+ expect_any_instance_of(Brickset::Client).to receive(:login).with 'darth-vader', 'i-am-your-father'
31
+ described_class.login('darth-vader', 'i-am-your-father')
32
+ end
33
+ end
34
+
35
+ describe '.configure' do
36
+ before do
37
+ Brickset.configure do |config|
38
+ config.api_key = 'super-secret'
39
+ end
40
+ end
41
+
42
+ it 'sets the api key' do
43
+ expect(Brickset.configuration.api_key).to eq 'super-secret'
44
+ end
45
+ end
46
+
47
+ describe '.reset' do
48
+ before do
49
+ Brickset.configure do |config|
50
+ config.api_key = 'super-secret'
51
+ end
52
+ end
53
+
54
+ it 'resets the configuration' do
55
+ Brickset.reset
56
+ expect(Brickset.configuration.api_key).to be_nil
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <string xmlns="https://brickset.com/api/">INVALIDKEY</string>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <string xmlns="https://brickset.com/api/">OK</string>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfAdditionalImages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <additionalImages>
4
+ <thumbnailURL>https://images.brickset.com/sets/AdditionalImages/10179-1/tn_10179-0000-xx-13-1_jpg.jpg</thumbnailURL>
5
+ <largeThumbnailURL>https://images.brickset.com/sets/AdditionalImages/10179-1/tn_large_10179-0000-xx-13-1_jpg.jpg</largeThumbnailURL>
6
+ <imageURL>https://images.brickset.com/sets/AdditionalImages/10179-1/10179-0000-xx-13-1.jpg</imageURL>
7
+ </additionalImages>
8
+ <additionalImages>
9
+ <thumbnailURL>https://images.brickset.com/sets/AdditionalImages/10179-1/tn_10179-0000-xx-23-1_jpg.jpg</thumbnailURL>
10
+ <imageURL>https://images.brickset.com/sets/AdditionalImages/10179-1/10179-0000-xx-23-1.jpg</imageURL>
11
+ </additionalImages>
12
+ <additionalImages>
13
+ <thumbnailURL>https://images.brickset.com/sets/AdditionalImages/10179-1/tn_10179-0000-xx-33-1_jpg.jpg</thumbnailURL>
14
+ <imageURL>https://images.brickset.com/sets/AdditionalImages/10179-1/10179-0000-xx-33-1.jpg</imageURL>
15
+ </additionalImages>
16
+ <additionalImages>
17
+ <thumbnailURL>https://images.brickset.com/sets/AdditionalImages/10179-1/tn_10179-0000-xx-33-2_jpg.jpg</thumbnailURL>
18
+ <imageURL>https://images.brickset.com/sets/AdditionalImages/10179-1/10179-0000-xx-33-2.jpg</imageURL>
19
+ </additionalImages>
20
+ <additionalImages>
21
+ <thumbnailURL>https://images.brickset.com/sets/AdditionalImages/10179-1/tn_10179-0000-xx-33-3_jpg.jpg</thumbnailURL>
22
+ <imageURL>https://images.brickset.com/sets/AdditionalImages/10179-1/10179-0000-xx-33-3.jpg</imageURL>
23
+ </additionalImages>
24
+ </ArrayOfAdditionalImages>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfAdditionalImages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:nil="true" xmlns="https://brickset.com/api/" />
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfCollectionDetails xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <collectionDetails>
4
+ <collectionID>12712521</collectionID>
5
+ <dateAcquired>21-08-18</dateAcquired>
6
+ <currency>EUR</currency>
7
+ <pricePaid>3.0000</pricePaid>
8
+ <additionalPricePaid>0.4900</additionalPricePaid>
9
+ <currentEstimatedValue>3.4900</currentEstimatedValue>
10
+ <conditionWhenAcquired>As new</conditionWhenAcquired>
11
+ <acquiredFrom>Mos Eisley</acquiredFrom>
12
+ <conditionNow>Assembled</conditionNow>
13
+ <location>In a galaxy far, far away...</location>
14
+ <notes>A long time ago...</notes>
15
+ <parts>true</parts>
16
+ <minifigs>false</minifigs>
17
+ <instructions>true</instructions>
18
+ <box>true</box>
19
+ <willTrade>false</willTrade>
20
+ <modified>true</modified>
21
+ <deleted>false</deleted>
22
+ </collectionDetails>
23
+ </ArrayOfCollectionDetails>
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfConditions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <conditions>
4
+ <condition>Assembled</condition>
5
+ </conditions>
6
+ <conditions>
7
+ <condition>Bagged up</condition>
8
+ </conditions>
9
+ <conditions>
10
+ <condition>Boxed</condition>
11
+ </conditions>
12
+ <conditions>
13
+ <condition>MISB</condition>
14
+ </conditions>
15
+ <conditions>
16
+ <condition>Modified</condition>
17
+ </conditions>
18
+ <conditions>
19
+ <condition>Parted out</condition>
20
+ </conditions>
21
+ <conditions>
22
+ <condition>Unknown</condition>
23
+ </conditions>
24
+ </ArrayOfConditions>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfCollectionDetails xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:nil="true" xmlns="https://brickset.com/api/" />
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <collectionTotals xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <totalSetsOwned>126</totalSetsOwned>
4
+ <totalDistinctSetsOwned>121</totalDistinctSetsOwned>
5
+ <totalSetsWanted>85</totalSetsWanted>
6
+ <totalMinifigsOwned>156</totalMinifigsOwned>
7
+ <totalMinifigsWanted>40</totalMinifigsWanted>
8
+ </collectionTotals>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <collectionTotals xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <totalSetsOwned>0</totalSetsOwned>
4
+ <totalDistinctSetsOwned>0</totalDistinctSetsOwned>
5
+ <totalSetsWanted>0</totalSetsWanted>
6
+ <totalMinifigsOwned>0</totalMinifigsOwned>
7
+ <totalMinifigsWanted>0</totalMinifigsWanted>
8
+ </collectionTotals>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfInstructions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <instructions>
4
+ <URL>https://www.lego.com/biassets/bi/4525430.pdf</URL>
5
+ <description>Building instruction 10179</description>
6
+ </instructions>
7
+ </ArrayOfInstructions>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfInstructions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:nil="true" xmlns="https://brickset.com/api/" />
@@ -0,0 +1,31 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfMinifigCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <minifigCollection>
4
+ <minifigNumber>85863pb076</minifigNumber>
5
+ <ownedInSets>1</ownedInSets>
6
+ <ownedLoose>0</ownedLoose>
7
+ <ownedTotal>1</ownedTotal>
8
+ <wanted>true</wanted>
9
+ </minifigCollection>
10
+ <minifigCollection>
11
+ <minifigNumber>85863pb078</minifigNumber>
12
+ <ownedInSets>1</ownedInSets>
13
+ <ownedLoose>0</ownedLoose>
14
+ <ownedTotal>1</ownedTotal>
15
+ <wanted>false</wanted>
16
+ </minifigCollection>
17
+ <minifigCollection>
18
+ <minifigNumber>85863pb079</minifigNumber>
19
+ <ownedInSets>0</ownedInSets>
20
+ <ownedLoose>0</ownedLoose>
21
+ <ownedTotal>0</ownedTotal>
22
+ <wanted>false</wanted>
23
+ </minifigCollection>
24
+ <minifigCollection>
25
+ <minifigNumber>85863pb082</minifigNumber>
26
+ <ownedInSets>0</ownedInSets>
27
+ <ownedLoose>1</ownedLoose>
28
+ <ownedTotal>2</ownedTotal>
29
+ <wanted>false</wanted>
30
+ </minifigCollection>
31
+ </ArrayOfMinifigCollection>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfMinifigCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <minifigCollection>
4
+ <minifigNumber>85863pb078</minifigNumber>
5
+ <ownedInSets>1</ownedInSets>
6
+ <ownedLoose>0</ownedLoose>
7
+ <ownedTotal>1</ownedTotal>
8
+ <wanted>false</wanted>
9
+ </minifigCollection>
10
+ <minifigCollection>
11
+ <minifigNumber>85863pb082</minifigNumber>
12
+ <ownedInSets>0</ownedInSets>
13
+ <ownedLoose>1</ownedLoose>
14
+ <ownedTotal>2</ownedTotal>
15
+ <wanted>false</wanted>
16
+ </minifigCollection>
17
+ </ArrayOfMinifigCollection>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfMinifigCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <minifigCollection>
4
+ <minifigNumber>85863pb076</minifigNumber>
5
+ <ownedInSets>0</ownedInSets>
6
+ <ownedLoose>0</ownedLoose>
7
+ <ownedTotal>0</ownedTotal>
8
+ <wanted>true</wanted>
9
+ </minifigCollection>
10
+ </ArrayOfMinifigCollection>
@@ -0,0 +1,52 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfSets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <sets>
4
+ <setID>5860</setID>
5
+ <number>10179</number>
6
+ <numberVariant>1</numberVariant>
7
+ <name>Ultimate Collector's Millennium Falcon</name>
8
+ <year>2007</year>
9
+ <theme>Star Wars</theme>
10
+ <themeGroup>Licensed</themeGroup>
11
+ <subtheme>Ultimate Collector Series</subtheme>
12
+ <pieces>5197</pieces>
13
+ <minifigs>5</minifigs>
14
+ <image>true</image>
15
+ <imageFilename>10179-1</imageFilename>
16
+ <thumbnailURL>https://images.brickset.com/sets/thumbs/tn_10179-1_jpg.jpg</thumbnailURL>
17
+ <largeThumbnailURL>https://images.brickset.com/sets/small/10179-1.jpg</largeThumbnailURL>
18
+ <imageURL>https://images.brickset.com/sets/images/10179-1.jpg</imageURL>
19
+ <bricksetURL>https://brickset.com/sets/10179-1</bricksetURL>
20
+ <released>true</released>
21
+ <owned>false</owned>
22
+ <wanted>true</wanted>
23
+ <qtyOwned>0</qtyOwned>
24
+ <userNotes />
25
+ <ACMDataCount>0</ACMDataCount>
26
+ <ownedByTotal>3807</ownedByTotal>
27
+ <wantedByTotal>9349</wantedByTotal>
28
+ <UKRetailPrice>342.49</UKRetailPrice>
29
+ <USRetailPrice>499.99</USRetailPrice>
30
+ <CARetailPrice />
31
+ <EURetailPrice />
32
+ <USDateAddedToSAH>2007-10-24</USDateAddedToSAH>
33
+ <USDateRemovedFromSAH>2010-05-04</USDateRemovedFromSAH>
34
+ <rating>4.76190476190476</rating>
35
+ <reviewCount>21</reviewCount>
36
+ <packagingType>Box</packagingType>
37
+ <availability>LEGO exclusive</availability>
38
+ <instructionsCount>1</instructionsCount>
39
+ <additionalImageCount>5</additionalImageCount>
40
+ <ageMin>16</ageMin>
41
+ <ageMax />
42
+ <height />
43
+ <width />
44
+ <depth />
45
+ <weight />
46
+ <category>Normal</category>
47
+ <userRating>0</userRating>
48
+ <EAN />
49
+ <UPC />
50
+ <lastUpdated>2017-08-23T21:44:34.273</lastUpdated>
51
+ </sets>
52
+ </ArrayOfSets>
@@ -0,0 +1 @@
1
+ <ArrayOfSets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/" xsi:nil="true"/>
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfReviews xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://brickset.com/api/">
3
+ <reviews>
4
+ <author>darth-vader</author>
5
+ <datePosted>2010-10-01T20:30:30.264</datePosted>
6
+ <overallRating>5</overallRating>
7
+ <parts>5</parts>
8
+ <buildingExperience>5</buildingExperience>
9
+ <playability>3</playability>
10
+ <valueForMoney>4</valueForMoney>
11
+ <title>Ultimate Collector Series Millennium Falcon</title>
12
+ <review>A long time ago, in a Lego factory far, far away...
13
+
14
+ To start off I must say that this kit is simply amazing; the level of detail on this model is staggering. This set is not for the casual builder, be prepared to spend 15+ hours putting this monster together. The box is about the same size as the Star Destroyer or Death Star with a shipping weight of 25lbs (11kg for my friends overseas) and an instruction manual that checks in at a whopping 300 pages.
15
+
16
+ Like most other UCS models the build is broken in to several sections starting with the massive internal frame. There are some interesting techniques used in securing the frames ‘layers’ together as well as the use of different colors in the internal structure. Similar to the Star Destroyer the frame on the Falcon is very solid and heavy. I think this is also the first UCS model that doesn’t use a display stand (possible exception is the Blockade Runner); instead the ship sits on its 7 landing gear. After the frame is finished the remainder of the build is basically building the front mandibles and then building the ‘skin’ sections and adding them to the model. Like the frame there are some interesting building techniques used, i.e. the way the upper and lower gun sections lock in to each other. A major plus to the Falcon is the lack of ‘repeated’ steps, for me this kept the build moving forward and I never found myself getting bored.
17
+
18
+ The level of detail on the surface of the model is simply amazing. There is a nice mix of dark red, gray and black pieces that really help bring the Falcon to life. Since this model is minifig scale the designers have added some details to showcase the minifigs included with the kit. The top gun turret is removable so a minifig can be placed in the gunner’s seat. The cockpit seats four and the boarding ramp can be raised and lowered. The set includes 5 minifigs; Luke, Leia, Han, Chewie, and Obi Wan. It also includes an extra smiley head (or at least my set did).
19
+
20
+ For those who do not like stickers be aware that there are a few stickers to be applied in the cockpit. These stickers are rather small and are applied to one piece each. Thankfully the radar dish came with its sticker already applied.
21
+
22
+ The only awkward section on the ship is the lower back section beneath the engine. This part seems warped when it is put on but after checking the instructions and the pictures on the Lego website I found that this is how it is supposed to look. This might be a good spot for a mod…
23
+
24
+ All in all this is an amazing model; yes it is expensive but at 5125 pieces it averages out to a price of about 10 cents per piece (USD). I own all of the UCS models and can honestly say that this is easily my favorite Lego kit made to date; I am not sure if they will be able to top this one, but I guess we will see…
25
+ </review>
26
+ <HTML>false</HTML>
27
+ </reviews>
28
+ </ArrayOfReviews>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <ArrayOfReviews xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:nil="true" xmlns="https://brickset.com/api/" />