certificate-factory 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +3 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +19 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +154 -0
  7. data/LICENSE.md +10 -0
  8. data/README.md +54 -0
  9. data/Rakefile +114 -0
  10. data/certificate-factory.gemspec +33 -0
  11. data/env.example +3 -0
  12. data/lib/certificate-factory.rb +14 -0
  13. data/lib/certificate-factory/api.rb +19 -0
  14. data/lib/certificate-factory/certificate.rb +112 -0
  15. data/lib/certificate-factory/factory.rb +89 -0
  16. data/lib/certificate-factory/version.rb +3 -0
  17. data/spec/api_spec.rb +12 -0
  18. data/spec/cassettes/CertificateFactory_API/returns_the_correct_URL_for_a_dataset.yml +107 -0
  19. data/spec/cassettes/CertificateFactory_Certificate/keeps_trying_for_a_result_until_it_gets_one.yml +64 -0
  20. data/spec/cassettes/CertificateFactory_Certificate/requests_and_gets_a_certificate.yml +781 -0
  21. data/spec/cassettes/CertificateFactory_Certificate/requests_certificate_creation.yml +39 -0
  22. data/spec/cassettes/CertificateFactory_Certificate/returns_an_error_if_dataset_already_exists.yml +106 -0
  23. data/spec/cassettes/CertificateFactory_Factory/builds_certificates_correctly.yml +726 -0
  24. data/spec/cassettes/CertificateFactory_Factory/creates_the_correct_number_of_certificates_going_over_multiple_pages.yml +4900 -0
  25. data/spec/cassettes/CertificateFactory_Factory/creates_the_correct_number_of_certificates_when_querying_a_single_page.yml +696 -0
  26. data/spec/cassettes/CertificateFactory_Factory/stops_when_it_gets_to_the_end_of_a_feed.yml +126 -0
  27. data/spec/certificate_spec.rb +93 -0
  28. data/spec/factory_spec.rb +88 -0
  29. data/spec/fixtures/certificate.json +1 -0
  30. data/spec/fixtures/feed.atom +97 -0
  31. data/spec/fixtures/one-page.atom +23 -0
  32. data/spec/fixtures/single-feed-1.atom +26 -0
  33. data/spec/fixtures/single-feed-2.atom +32 -0
  34. data/spec/fixtures/single-feed.atom +24 -0
  35. data/spec/spec_helper.rb +43 -0
  36. metadata +254 -0
@@ -0,0 +1,126 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://data.gov.uk/api/2/rest/package/cambridgeshire-county-council-management-band-pay-scales
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Server:
16
+ - nginx/1.6.0
17
+ Date:
18
+ - Fri, 19 Sep 2014 08:23:43 GMT
19
+ Content-Type:
20
+ - application/json;charset=utf-8
21
+ Content-Length:
22
+ - '2770'
23
+ Connection:
24
+ - keep-alive
25
+ Vary:
26
+ - Accept-Encoding
27
+ - Cookie
28
+ Pragma:
29
+ - no-cache
30
+ Cache-Control:
31
+ - no-cache
32
+ Access-Control-Allow-Origin:
33
+ - "*"
34
+ Access-Control-Allow-Methods:
35
+ - POST, PUT, GET, DELETE, OPTIONS
36
+ Access-Control-Allow-Headers:
37
+ - X-CKAN-API-KEY, Authorization, Content-Type
38
+ Accept-Ranges:
39
+ - bytes
40
+ X-Varnish:
41
+ - 2133354971 2133354772
42
+ Age:
43
+ - '29'
44
+ Via:
45
+ - 1.1 varnish
46
+ X-App:
47
+ - ckan
48
+ X-Varnish-Cache:
49
+ - HIT
50
+ body:
51
+ encoding: UTF-8
52
+ string: "{\"license_title\": \"UK Open Government Licence (OGL)\", \"maintainer\":
53
+ null, \"private\": false, \"maintainer_email\": null, \"id\": \"4820b7ee-e960-4d65-9bbd-bf05fdd5dd26\",
54
+ \"metadata_created\": \"2014-09-11T08:45:05.302023\", \"relationships\": [],
55
+ \"license\": \"UK Open Government Licence (OGL)\", \"metadata_modified\":
56
+ \"2014-09-11T08:45:05.313103\", \"author\": null, \"author_email\": null,
57
+ \"state\": \"active\", \"version\": null, \"creator_user_id\": \"edec0bc8-46b1-4266-94e0-77257e6ee87e\",
58
+ \"type\": \"dataset\", \"resources\": [{\"resource_group_id\": \"dd82640b-e02d-4921-9258-fb711bc5153c\",
59
+ \"cache_last_updated\": null, \"package_id\": \"4820b7ee-e960-4d65-9bbd-bf05fdd5dd26\",
60
+ \"webstore_last_updated\": null, \"id\": \"ae142d42-3456-4132-996b-df5c99bbf836\",
61
+ \"size\": null, \"last_modified\": null, \"hash\": \"\", \"description\":
62
+ \"Cambridgeshire County Council Management Band pay scales 2014\", \"format\":
63
+ \"CSV\", \"mimetype_inner\": null, \"url_type\": null, \"date\": \"2014-04-01\",
64
+ \"mimetype\": null, \"cache_url\": null, \"name\": null, \"created\": \"2014-09-11T09:45:05.351967\",
65
+ \"url\": \"http://www.cambridgeshire.gov.uk/download/downloads/id/3110/management_band_payscales.csv\",
66
+ \"webstore_url\": null, \"position\": 0, \"resource_type\": \"file\"}], \"num_resources\":
67
+ 1, \"tags\": [], \"groups\": [], \"license_id\": \"uk-ogl\", \"num_tags\":
68
+ 0, \"organization\": {\"description\": \"\", \"title\": \"Cambridgeshire County
69
+ Council\", \"created\": \"2012-06-27T14:49:31.613796\", \"approval_status\":
70
+ \"pending\", \"revision_timestamp\": \"2014-07-22T11:35:00.168201\", \"is_organization\":
71
+ true, \"state\": \"active\", \"image_url\": \"\", \"revision_id\": \"85796520-5663-4477-b49a-b4d4c3514ce7\",
72
+ \"type\": \"organization\", \"id\": \"d0149ce5-e526-4c09-8230-c8cc6a687f6a\",
73
+ \"name\": \"cambridgeshire-county-council\"}, \"name\": \"cambridgeshire-county-council-management-band-pay-scales\",
74
+ \"isopen\": true, \"notes_rendered\": \"<p>This dataset contains the pay scale
75
+ for Management Band roles within Cambridgeshire County Council.\\n</p>\",
76
+ \"url\": null, \"ckan_url\": \"http://data.gov.uk/dataset/cambridgeshire-county-council-management-band-pay-scales\",
77
+ \"notes\": \"This dataset contains the pay scale for Management Band roles
78
+ within Cambridgeshire County Council.\", \"owner_org\": \"d0149ce5-e526-4c09-8230-c8cc6a687f6a\",
79
+ \"ratings_average\": null, \"extras\": {\"contact-name\": \"\", \"temporal_coverage-from\":
80
+ \"\", \"contact-email\": \"\", \"foi-web\": \"\", \"foi-name\": \"\", \"temporal_coverage-to\":
81
+ \"\", \"foi-email\": \"\", \"contact-phone\": \"\", \"mandate\": \"\", \"date\":
82
+ \"01/04/2014\", \"update_frequency\": \"annual\", \"foi-phone\": \"\", \"unpublished\":
83
+ \"false\", \"theme-primary\": \"Government\"}, \"license_url\": \"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/\",
84
+ \"ratings_count\": 0, \"title\": \"Cambridgeshire County Council Management
85
+ Band pay scales\", \"revision_id\": \"2cdcc85e-1f97-4520-a453-dede54ab81e2\"}"
86
+ http_version:
87
+ recorded_at: Fri, 19 Sep 2014 08:23:44 GMT
88
+ - request:
89
+ method: post
90
+ uri: http://api%40example.com:<ODC_API_KEY>@open-data-certificate.dev/datasets
91
+ body:
92
+ encoding: UTF-8
93
+ string: "{\"jurisdiction\":\"gb\",\"create_user\":\"true\",\"dataset\":{\"documentationUrl\":\"http://data.gov.uk/dataset/cambridgeshire-county-council-management-band-pay-scales\"}}"
94
+ headers:
95
+ Content-Type:
96
+ - application/json
97
+ response:
98
+ status:
99
+ code: 200
100
+ message: OK
101
+ headers:
102
+ Date:
103
+ - Fri, 19 Sep 2014 08:23:44 GMT
104
+ Content-Type:
105
+ - application/json; charset=utf-8
106
+ X-Ua-Compatible:
107
+ - IE=Edge
108
+ Etag:
109
+ - "\"085f003f6b44a84cab4f753cec61bcaf\""
110
+ Cache-Control:
111
+ - max-age=0, private, must-revalidate
112
+ X-Request-Id:
113
+ - 108568fc39ea75bc209cc1fe1346c74e
114
+ X-Runtime:
115
+ - '0.026713'
116
+ Set-Cookie:
117
+ - _open-data-certificate_session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRkkiJTMyY2U5OTg1YjcyMTU1YjFhM2IxYjYxOGViMjJjMDc3BjsAVA%3D%3D--b537156c2f104d8e41340f0309c83774bbcfe857;
118
+ path=/; HttpOnly
119
+ Transfer-Encoding:
120
+ - chunked
121
+ body:
122
+ encoding: UTF-8
123
+ string: "{\"success\":false,\"errors\":[\"Dataset already exists\"]}"
124
+ http_version:
125
+ recorded_at: Fri, 19 Sep 2014 08:23:44 GMT
126
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,93 @@
1
+ require 'spec_helper'
2
+
3
+ describe CertificateFactory::Certificate do
4
+
5
+ before(:each) do
6
+ @url = "http://data.gov.uk/dataset/defence-infrastructure-organisation-disposals-database-house-of-commons-report"
7
+ end
8
+
9
+ it "generates the correct body" do
10
+ certificate = CertificateFactory::Certificate.new(@url)
11
+
12
+ expect(JSON.parse(certificate.send(:body))).to eq({
13
+ "jurisdiction" => "gb",
14
+ "create_user" => true,
15
+ "dataset" => {
16
+ "documentationUrl" => @url
17
+ }
18
+ })
19
+ end
20
+
21
+ it "generates the correct body when applying a campaign tag" do
22
+ certificate = CertificateFactory::Certificate.new(@url, campaign: "ckan")
23
+
24
+ expect(JSON.parse(certificate.send(:body))).to eq({
25
+ "jurisdiction" => "gb",
26
+ "create_user" => true,
27
+ "dataset" => {
28
+ "documentationUrl" => @url
29
+ },
30
+ "campaign" => "ckan"
31
+ })
32
+ end
33
+
34
+
35
+ it "requests certificate creation", :vcr do
36
+ certificate = CertificateFactory::Certificate.new(@url)
37
+ result = certificate.generate
38
+
39
+ expect(result[:success]).to eq("pending")
40
+ expect(result[:dataset_url]).to match /http:\/\/open-data-certificate.dev\/datasets\/[0-9]+.json/
41
+ end
42
+
43
+ it "returns an error if dataset already exists", :vcr do
44
+ stub_request(:post, "http://#{ENV['ODC_USERNAME']}:#{ENV['ODC_API_KEY']}@open-data-certificate.dev/datasets")
45
+ .to_return(body: {success: "false", errors: ["Dataset already exists"]}.to_json,
46
+ status: 422,
47
+ headers: {content_type: "application/json"})
48
+
49
+ certificate = CertificateFactory::Certificate.new(@url)
50
+
51
+ result = certificate.generate
52
+ expect(result[:success]).to eq("false")
53
+ expect(result[:error]).to eq("Dataset already exists")
54
+ end
55
+
56
+ it "returns an error if the authentication fails" do
57
+ stub_request(:post, "http://#{ENV['ODC_USERNAME']}:#{ENV['ODC_API_KEY']}@open-data-certificate.dev/datasets")
58
+ .to_return(body: "", status: 401)
59
+
60
+ certificate = CertificateFactory::Certificate.new(@url)
61
+
62
+ result = certificate.generate
63
+ expect(result[:success]).to eq("false")
64
+ expect(result[:error]).to eq("Username and / or API key not recognised")
65
+ end
66
+
67
+ it "keeps trying for a result until it gets one", :vcr do
68
+ certificate = CertificateFactory::Certificate.new(@url)
69
+ dataset_url = "http://open-data-certificate.dev/datasets/1.json"
70
+
71
+ allow(CertificateFactory::Certificate).to receive(:get)
72
+ .and_return({"success" => "pending"}, {"success" => "pending"}, {"success" => "true"})
73
+
74
+ result = certificate.send(:get_result, dataset_url)
75
+
76
+ expect(CertificateFactory::Certificate).to have_received(:get).exactly(3).times
77
+ expect(result["success"]).to eq("true")
78
+ end
79
+
80
+ it "requests and gets a certificate", :vcr do
81
+ certificate = CertificateFactory::Certificate.new(@url)
82
+
83
+ result = certificate.result
84
+
85
+ expect(result[:success]).to eq(true)
86
+ expect(result[:published]).to eq(true)
87
+ expect(result[:documentation_url]).to eq(@url)
88
+ expect(result[:certificate_url]).to match /http:\/\/open-data-certificate.dev\/datasets\/[0-9]+\/certificates\/[0-9]+/
89
+ expect(result[:user]).to eq(ENV['ODC_USERNAME'])
90
+ end
91
+
92
+
93
+ end
@@ -0,0 +1,88 @@
1
+ require 'spec_helper'
2
+
3
+ describe CertificateFactory::Factory do
4
+
5
+ it "parses the Atom feed correctly" do
6
+ stub_request(:get, "http://data.gov.uk/feeds/custom.atom")
7
+ .to_return(body: load_fixture("single-feed.atom"))
8
+
9
+ factory = CertificateFactory::Factory.new(feed: "http://data.gov.uk/feeds/custom.atom")
10
+
11
+ feed_items = factory.feed_items
12
+
13
+ expect(feed_items.count).to eq(1)
14
+ expect(factory.next_page).to eq("http://data.gov.uk/feeds/custom.atom?page=2")
15
+ end
16
+
17
+ it "builds certificates correctly", :vcr do
18
+ stub_request(:get, "http://data.gov.uk/feeds/custom.atom")
19
+ .to_return(body: load_fixture("single-feed.atom"))
20
+
21
+ factory = CertificateFactory::Factory.new(feed: "http://data.gov.uk/feeds/custom.atom", limit: 1)
22
+
23
+ results = []
24
+ called = 0
25
+ factory.build do |generate|
26
+ called += 1
27
+ expect(generate[:success]).to eq("pending")
28
+ expect(generate[:documentation_url]).to eq("http://data.gov.uk/dataset/cambridgeshire-county-council-management-band-pay-scales")
29
+ expect(generate[:dataset_url]).to match(%r{http://open-data-certificate.dev/datasets/\d+\.json})
30
+ end
31
+
32
+ expect(called).to eq(1)
33
+ end
34
+
35
+ it "creates the correct number of certificates when querying a single page", :vcr do
36
+ stub_request(:get, "http://data.gov.uk/feeds/custom.atom")
37
+ .to_return(body: load_fixture("feed.atom"))
38
+
39
+ factory = CertificateFactory::Factory.new(feed: "http://data.gov.uk/feeds/custom.atom", limit: 3)
40
+
41
+ results = []
42
+ factory.build do |result|
43
+ results << result
44
+ end
45
+
46
+ expect(results.count).to eq(3)
47
+
48
+ expect(results[0][:documentation_url]).to eq("http://data.gov.uk/dataset/cambridgeshire-county-council-management-band-pay-scales")
49
+ expect(results[1][:documentation_url]).to eq("http://data.gov.uk/dataset/great_britain_tourism_survey")
50
+ expect(results[2][:documentation_url]).to eq("http://data.gov.uk/dataset/childrens_centres_inspections_and_outcomes")
51
+ end
52
+
53
+ it "creates the correct number of certificates going over multiple pages", :vcr do
54
+ stub_request(:get, "http://data.gov.uk/feeds/custom.atom")
55
+ .to_return(body: load_fixture("single-feed.atom"))
56
+ stub_request(:get, "http://data.gov.uk/feeds/custom.atom?page=2")
57
+ .to_return(body: load_fixture("single-feed-1.atom"))
58
+ stub_request(:get, "http://data.gov.uk/feeds/custom.atom?page=3")
59
+ .to_return(body: load_fixture("single-feed-2.atom"))
60
+
61
+ factory = CertificateFactory::Factory.new(feed: "http://data.gov.uk/feeds/custom.atom", limit: 3)
62
+
63
+ results = []
64
+ factory.build do |result|
65
+ results << result
66
+ end
67
+
68
+ expect(results.count).to eq(3)
69
+ expect(results[0][:documentation_url]).to eq("http://data.gov.uk/dataset/cambridgeshire-county-council-management-band-pay-scales")
70
+ expect(results[1][:documentation_url]).to eq("http://data.gov.uk/dataset/national-coach-services")
71
+ expect(results[2][:documentation_url]).to eq("http://data.gov.uk/dataset/gp_earnings_and_expenses")
72
+ end
73
+
74
+ it "stops when it gets to the end of a feed", :vcr do
75
+ stub_request(:get, "http://data.gov.uk/feeds/custom.atom")
76
+ .to_return(body: load_fixture("one-page.atom"))
77
+
78
+ factory = CertificateFactory::Factory.new(feed: "http://data.gov.uk/feeds/custom.atom", limit: 5)
79
+
80
+ results = []
81
+ factory.build do |result|
82
+ results << result
83
+ end
84
+
85
+ expect(results.count).to eq(1)
86
+ end
87
+
88
+ end
@@ -0,0 +1 @@
1
+ {"success":true,"dataset_id":2589,"published":true,"owner_email":"api@example.com","errors":["The question 'webpage' is mandatory","The question 'thirdPartyOrigin' is mandatory","The question 'thirdPartyOpen' is mandatory","The question 'reference' is mandatory","The question 'currentDatasetUrl' is mandatory","The question 'versionsTemplateUrl' is mandatory","The question 'crowdsourced' is mandatory","The question 'serviceType' is mandatory","The question 'crowdsourcedContent' is mandatory","The question 'claUrl' is mandatory","The question 'cldsRecorded' is mandatory","The question 'seriesType' is mandatory","The question 'currentDumpUrl' is mandatory","The question 'dumpsTemplateUrl' is mandatory","The question 'dumpsUrl' is mandatory","The question 'changeFeedUrl' is mandatory","The question 'dataNotApplicable' is mandatory","The question 'dataWaiver' is mandatory","The question 'dataOtherWaiver' is mandatory","The question 'otherDataLicenceName' is mandatory","The question 'otherDataLicenceURL' is mandatory","The question 'otherDataLicenceOpen' is mandatory","The question 'contentNotApplicable' is mandatory","The question 'contentWaiver' is mandatory","The question 'contentOtherWaiver' is mandatory","The question 'account' is mandatory","The question 'otherContentLicenceName' is mandatory","The question 'otherContentLicenceURL' is mandatory","The question 'otherContentLicenceOpen' is mandatory","The question 'contentRightsURL' is mandatory","The question 'engagementTeamUrl' is mandatory","The question 'existingExternalUrls' is mandatory","The question 'reliableExternalUrls' is mandatory","The question 'appliedAnon' is mandatory","The question 'dpStaff' is mandatory"]}
@@ -0,0 +1,97 @@
1
+ <feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom">
2
+ <title>DGU - Custom query</title>
3
+ <link href="http://data.gov.uk/data/search" rel="alternate"/>
4
+ <link href="http://data.gov.uk/feeds/custom.atom" rel="self"/>
5
+ <id>tag:data.gov.uk,2012:/feeds/custom.atom?core_dataset=false&amp;unpublished=false&amp;license_id-is-ogl=true</id>
6
+ <updated>2014-09-11T09:21:30Z</updated>
7
+ <author>
8
+ <name>co-prod3.dh.bytemark.co.uk</name>
9
+ <uri>http://data.gov.uk</uri>
10
+ </author>
11
+ <subtitle>Recently created or updated datasets on DGU. Custom query: ''</subtitle>
12
+ <link href="http://data.gov.uk/feeds/custom.atom?page=2" rel="next"/>
13
+ <link href="http://data.gov.uk/feeds/custom.atom" rel="first"/>
14
+ <link href="http://data.gov.uk/feeds/custom.atom?page=563" rel="last"/>
15
+ <entry>
16
+ <title>Cambridgeshire County Council Management Band pay scales</title>
17
+ <link href="http://data.gov.uk/dataset/4820b7ee-e960-4d65-9bbd-bf05fdd5dd26" rel="alternate"/>
18
+ <id>tag:data.gov.uk,2012:/dataset/4820b7ee-e960-4d65-9bbd-bf05fdd5dd26</id>
19
+ <summary type="html">This dataset contains the pay scale for Management Band roles within Cambridgeshire County Council.</summary>
20
+ <link length="13307" href="http://data.gov.uk/api/2/rest/package/cambridgeshire-county-council-management-band-pay-scales" type="application/json" rel="enclosure"/>
21
+ <updated>2014-09-11T08:45:05Z</updated>
22
+ <published>2014-09-11T08:45:05Z</published>
23
+ </entry>
24
+ <entry>
25
+ <title>Great Britain Tourism Survey</title>
26
+ <link href="http://data.gov.uk/dataset/cae16900-ec34-47cf-adc1-fd8c20930b4f" rel="alternate"/>
27
+ <id>tag:data.gov.uk,2012:/dataset/cae16900-ec34-47cf-adc1-fd8c20930b4f</id>
28
+ <summary type="html">The survey is a national consumer survey measuring the volume and value of overnight trips taken by residents of the Great Britain. It is jointly sponsored by the Welsh Government, VisitEngland and VisitScotland. Results of the survey are published annually in the GB Tourist, with quarterly updates at a Wales level.Source agency: Welsh GovernmentDesignation: Official Statistics not designated as National StatisticsLanguage: EnglishAlternative title: Great Britain Tourism Survey - Results for Wales</summary>
29
+ <link length="22855" href="http://data.gov.uk/api/2/rest/package/great_britain_tourism_survey" type="application/json" rel="enclosure"/>
30
+ <category term="holidays-tourism"/>
31
+ <category term="leisure-and-culture"/>
32
+ <category term="people-and-places"/>
33
+ <category term="tourism"/>
34
+ <category term="travel-tourism"/>
35
+ <updated>2014-09-11T08:40:14Z</updated>
36
+ <published>2014-08-11T11:00:05Z</published>
37
+ </entry>
38
+ <entry>
39
+ <title>Children's centres inspections and outcomes</title>
40
+ <link href="http://data.gov.uk/dataset/eb9bd647-7366-4fed-8368-4c7df007f95a" rel="alternate"/>
41
+ <author>
42
+ <name>Office for Standards in Education, Children's Services and Skills</name>
43
+ </author>
44
+ <id>tag:data.gov.uk,2012:/dataset/eb9bd647-7366-4fed-8368-4c7df007f95a</id>
45
+ <summary type="html">This is the publication of 'Children's centres inspections and outcomes'Source agency: Office for Standards in Education, Children's Services and SkillsDesignation: Official Statistics not designated as National StatisticsLanguage: EnglishAlternative title: Children's centres inspections and outcomes</summary>
46
+ <link length="30317" href="http://data.gov.uk/api/2/rest/package/childrens_centres_inspections_and_outcomes" type="application/json" rel="enclosure"/>
47
+ <category term="child"/>
48
+ <category term="children"/>
49
+ <category term="children-education-and-skills"/>
50
+ <category term="education"/>
51
+ <category term="ofsted"/>
52
+ <category term="statistical-analysis"/>
53
+ <updated>2014-09-11T08:40:14Z</updated>
54
+ <published>2011-12-11T12:59:13Z</published>
55
+ </entry>
56
+ <entry>
57
+ <title>Vehicle Licensing Statistics Great Britain</title>
58
+ <link href="http://data.gov.uk/dataset/7f06a77b-444e-490a-a505-8fc8ed62268f" rel="alternate"/>
59
+ <author>
60
+ <name>Department for Transport</name>
61
+ </author>
62
+ <id>tag:data.gov.uk,2012:/dataset/7f06a77b-444e-490a-a505-8fc8ed62268f</id>
63
+ <summary type="html">This publication provides monthly new registrations of vehicles and quarterly licenced vehicle numbers in Great BritainSource agency: TransportDesignation: National StatisticsLanguage: EnglishAlternative title: VLS GB</summary>
64
+ <link length="177441" href="http://data.gov.uk/api/2/rest/package/vehicle_licensing_statistics_great_britain" type="application/json" rel="enclosure"/>
65
+ <category term="licensed-vehicles"/>
66
+ <category term="road-transport"/>
67
+ <category term="roads"/>
68
+ <category term="transport"/>
69
+ <category term="transport-and-infrastructure"/>
70
+ <category term="travel-and-transport"/>
71
+ <category term="vehicles"/>
72
+ <category term="veicle-registration"/>
73
+ <updated>2014-09-11T08:40:16Z</updated>
74
+ <published>2011-12-11T02:26:50Z</published>
75
+ </entry>
76
+ <entry>
77
+ <title>Driver and rider tests and instructor statistics</title>
78
+ <link href="http://data.gov.uk/dataset/14562744-5cf3-4c76-99c1-0ffc1bce6b52" rel="alternate"/>
79
+ <author>
80
+ <name>Department for Transport</name>
81
+ </author>
82
+ <id>tag:data.gov.uk,2012:/dataset/14562744-5cf3-4c76-99c1-0ffc1bce6b52</id>
83
+ <summary type="html">This release provides statistics about the number of practical driver and rider tests undertaken as well as approved driving instructor statistics. Based on data from the Driving Standards Agency.Source agency: TransportDesignation: Official Statistics not designated as National StatisticsLanguage: EnglishAlternative title: Driver and rider tests and instructor statistics</summary>
84
+ <link length="59721" href="http://data.gov.uk/api/2/rest/package/driver_and_rider_tests_and_instructor_statistics" type="application/json" rel="enclosure"/>
85
+ <category term="driver"/>
86
+ <category term="instructor-statistics"/>
87
+ <category term="rider"/>
88
+ <category term="road-transport"/>
89
+ <category term="roads"/>
90
+ <category term="tests"/>
91
+ <category term="transport"/>
92
+ <category term="transport-and-infrastructure"/>
93
+ <category term="travel-and-transport"/>
94
+ <updated>2014-09-11T08:40:18Z</updated>
95
+ <published>2012-02-23T12:01:33Z</published>
96
+ </entry>
97
+ </feed>
@@ -0,0 +1,23 @@
1
+ <feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom">
2
+ <title>DGU - Custom query</title>
3
+ <link href="http://data.gov.uk/data/search" rel="alternate"/>
4
+ <link href="http://data.gov.uk/feeds/custom.atom" rel="self"/>
5
+ <id>tag:data.gov.uk,2012:/feeds/custom.atom?core_dataset=false&amp;unpublished=false&amp;license_id-is-ogl=true</id>
6
+ <updated>2014-09-11T09:21:30Z</updated>
7
+ <author>
8
+ <name>co-prod3.dh.bytemark.co.uk</name>
9
+ <uri>http://data.gov.uk</uri>
10
+ </author>
11
+ <subtitle>Recently created or updated datasets on DGU. Custom query: ''</subtitle>
12
+ <link href="http://data.gov.uk/feeds/custom.atom" rel="first"/>
13
+ <link href="http://data.gov.uk/feeds/custom.atom" rel="last"/>
14
+ <entry>
15
+ <title>Cambridgeshire County Council Management Band pay scales</title>
16
+ <link href="http://data.gov.uk/dataset/4820b7ee-e960-4d65-9bbd-bf05fdd5dd26" rel="alternate"/>
17
+ <id>tag:data.gov.uk,2012:/dataset/4820b7ee-e960-4d65-9bbd-bf05fdd5dd26</id>
18
+ <summary type="html">This dataset contains the pay scale for Management Band roles within Cambridgeshire County Council.</summary>
19
+ <link length="13307" href="http://data.gov.uk/api/2/rest/package/cambridgeshire-county-council-management-band-pay-scales" type="application/json" rel="enclosure"/>
20
+ <updated>2014-09-11T08:45:05Z</updated>
21
+ <published>2014-09-11T08:45:05Z</published>
22
+ </entry>
23
+ </feed>
@@ -0,0 +1,26 @@
1
+ <feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom">
2
+ <title>DGU - Custom query</title>
3
+ <link href="http://data.gov.uk/data/search" rel="alternate"/>
4
+ <link href="http://data.gov.uk/feeds/custom.atom" rel="self"/>
5
+ <id>tag:data.gov.uk,2012:/feeds/custom.atom?core_dataset=false&amp;unpublished=false&amp;license_id-is-ogl=true</id>
6
+ <updated>2014-09-11T09:21:30Z</updated>
7
+ <author>
8
+ <name>co-prod3.dh.bytemark.co.uk</name>
9
+ <uri>http://data.gov.uk</uri>
10
+ </author>
11
+ <subtitle>Recently created or updated datasets on DGU. Custom query: ''</subtitle>
12
+ <link href="http://data.gov.uk/feeds/custom.atom?page=3" rel="next"/>
13
+ <link href="http://data.gov.uk/feeds/custom.atom" rel="first"/>
14
+ <link href="http://data.gov.uk/feeds/custom.atom?page=563" rel="last"/>
15
+ <entry>
16
+ <title>National Coach Services</title>
17
+ <link href="http://data.gov.uk/dataset/3a3b32f3-d727-4623-aa17-daa2f39aaf92" rel="alternate"/>
18
+ <id>tag:data.gov.uk,2012:/dataset/3a3b32f3-d727-4623-aa17-daa2f39aaf92</id>
19
+ <summary type="html">The National Coach Services Database (NCSD) was commissioned by Transport Direct to collect schedules for coach and strategic bus services across Great Britain. The data is is used by both Transport Direct and traveline for journey planning purposes. </summary>
20
+ <link length="22153" href="http://data.gov.uk/api/2/rest/package/national-coach-services" type="application/json" rel="enclosure"/>
21
+ <category term="Transportation"/>
22
+ <category term="coach service schedules"/>
23
+ <updated>2014-09-19T10:28:31Z</updated>
24
+ <published>2013-04-22T12:21:49Z</published>
25
+ </entry>
26
+ </feed>