openstax_exchange 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +15 -0
- data/.rspec +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +8 -0
- data/Gemfile +4 -0
- data/MIT-LICENSE +3 -1
- data/README.md +58 -20
- data/Rakefile +5 -13
- data/exchange-client.gemspec +30 -0
- data/lib/openstax/exchange/client_instance.rb +23 -0
- data/lib/openstax/exchange/configuration.rb +12 -0
- data/lib/openstax/exchange/exceptions.rb +21 -0
- data/lib/openstax/exchange/exchange.rb +65 -0
- data/lib/openstax/exchange/fake_client/configuration.rb +13 -0
- data/lib/openstax/exchange/fake_client/fake_client.rb +71 -0
- data/lib/openstax/exchange/real_client/real_client.rb +76 -0
- data/lib/openstax/exchange/version.rb +1 -1
- data/lib/openstax_exchange.rb +8 -112
- data/spec/cassettes/OpenStax_Exchange/client_instance_configuration/can_be_configured_to_use_a_real_exchange_client.yml +48 -0
- data/spec/cassettes/OpenStax_Exchange/internal_client_instance/_client_defaults_to_a_real_exchange_client.yml +48 -0
- data/spec/cassettes/OpenStax_Exchange/internal_client_instance/_reset_causes_a_new_client_object_to_be_returned_by_client.yml +48 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_create_identifier/success/creates_a_distinct_identifer_per_invokation.yml +146 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_create_identifier/success/creates_and_returns_a_new_identifier.yml +97 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_initialize/invalid_platform_id/raises_an_exception.yml +52 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_initialize/invalid_platform_secret/raises_an_exception.yml +52 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_initialize/success/initializes_the_authentication_token.yml +48 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_record_multiple_choice_answer/duplicate_identifer_resource_trial_triplet/raises_an_exception.yml +194 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_record_multiple_choice_answer/invalid_resource_string/raises_an_exception.yml +145 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_record_multiple_choice_answer/success/allows_answers_with_distinct_identifiers_to_be_saved.yml +244 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_record_multiple_choice_answer/success/allows_answers_with_distinct_resources_to_be_saved.yml +195 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_record_multiple_choice_answer/success/allows_answers_with_distinct_trials_to_be_saved.yml +195 -0
- data/spec/cassettes/OpenStax_Exchange_RealClient/behaves_like_exchange_client_api_v1/_record_multiple_choice_answer/success/creates_a_multiple_choice_answer_associated_with_the_given_identifier.yml +146 -0
- data/spec/lib/openstax/exchange/client_configuration_spec.rb +58 -0
- data/spec/lib/openstax/exchange/fake_client_v1_spec.rb +14 -0
- data/spec/lib/openstax/exchange/real_client_v1_spec.rb +9 -0
- data/spec/lib/openstax/exchange/shared_examples_for_exchange_client_v1.rb +208 -0
- data/spec/spec_helper.rb +52 -38
- metadata +97 -100
- checksums.yaml +0 -15
- data/spec/dummy/README.md +0 -1
- data/spec/dummy/Rakefile +0 -7
- data/spec/dummy/app/assets/javascripts/application.js +0 -15
- data/spec/dummy/app/assets/stylesheets/application.css +0 -13
- data/spec/dummy/app/controllers/api/dummy_controller.rb +0 -11
- data/spec/dummy/app/controllers/api/events_controller.rb +0 -7
- data/spec/dummy/app/controllers/application_controller.rb +0 -7
- data/spec/dummy/app/controllers/oauth_controller.rb +0 -8
- data/spec/dummy/app/helpers/application_helper.rb +0 -2
- data/spec/dummy/config.ru +0 -4
- data/spec/dummy/config/application.rb +0 -55
- data/spec/dummy/config/boot.rb +0 -10
- data/spec/dummy/config/database.yml +0 -25
- data/spec/dummy/config/environment.rb +0 -5
- data/spec/dummy/config/environments/development.rb +0 -29
- data/spec/dummy/config/environments/production.rb +0 -69
- data/spec/dummy/config/environments/test.rb +0 -35
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/dummy/config/initializers/inflections.rb +0 -15
- data/spec/dummy/config/initializers/mime_types.rb +0 -5
- data/spec/dummy/config/initializers/openstax_exchange.rb +0 -10
- data/spec/dummy/config/initializers/secret_token.rb +0 -7
- data/spec/dummy/config/initializers/session_store.rb +0 -8
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/spec/dummy/config/locales/en.yml +0 -5
- data/spec/dummy/config/routes.rb +0 -11
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +0 -16
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +0 -929
- data/spec/dummy/log/test.log +0 -46753
- data/spec/dummy/public/404.html +0 -26
- data/spec/dummy/public/422.html +0 -26
- data/spec/dummy/public/500.html +0 -25
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +0 -6
- data/spec/lib/openstax_exchange_spec.rb +0 -23
data/lib/openstax_exchange.rb
CHANGED
@@ -1,112 +1,8 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
DEFAULT_API_VERSION = :v1
|
10
|
-
|
11
|
-
class << self
|
12
|
-
|
13
|
-
###########################################################################
|
14
|
-
#
|
15
|
-
# Configuration machinery.
|
16
|
-
#
|
17
|
-
# To configure OpenStax Exchange, put the following code in your
|
18
|
-
# application's initialization logic
|
19
|
-
# (eg. in the config/initializers in a Rails app)
|
20
|
-
#
|
21
|
-
# OpenStax::Exchange.configure do |config|
|
22
|
-
# config.<parameter name> = <parameter value>
|
23
|
-
# ...
|
24
|
-
# end
|
25
|
-
#
|
26
|
-
|
27
|
-
def configure
|
28
|
-
yield configuration
|
29
|
-
end
|
30
|
-
|
31
|
-
def configuration
|
32
|
-
@configuration ||= Configuration.new
|
33
|
-
end
|
34
|
-
|
35
|
-
class Configuration
|
36
|
-
# openstax_exchange_url
|
37
|
-
# Base URL for OpenStax Exchange
|
38
|
-
attr_reader :openstax_exchange_url
|
39
|
-
|
40
|
-
# openstax_exchange_platform_id
|
41
|
-
# OAuth client_id received from OpenStax Exchange
|
42
|
-
attr_accessor :openstax_exchange_platform_id
|
43
|
-
|
44
|
-
# openstax_exchange_platform_secret
|
45
|
-
# OAuth client_secret received from OpenStax Exchange
|
46
|
-
attr_accessor :openstax_exchange_platform_secret
|
47
|
-
|
48
|
-
def openstax_exchange_url=(url)
|
49
|
-
url.gsub!(/https|http/,'https') if !(url =~ /localhost/)
|
50
|
-
url = url + "/" if url[url.size-1] != '/'
|
51
|
-
@openstax_exchange_url = url
|
52
|
-
end
|
53
|
-
|
54
|
-
def initialize
|
55
|
-
@openstax_exchange_platform_id = 'SET ME!'
|
56
|
-
@openstax_exchange_platform_secret = 'SET ME!'
|
57
|
-
@openstax_exchange_url = 'https://exchange.openstax.org/'
|
58
|
-
super
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
# Executes an OpenStax Exchange API call, using the given HTTP method,
|
63
|
-
# API url and request options.
|
64
|
-
# Any options accepted by OAuth2 requests can be used, such as
|
65
|
-
# :params, :body, :headers, etc, plus the :access_token option, which can
|
66
|
-
# be used to manually specify an OAuth access token.
|
67
|
-
# On failure, it can throw Faraday::ConnectionFailed for connection errors
|
68
|
-
# or OAuth2::Error if Exchange returns an HTTP 400 error,
|
69
|
-
# such as 422 Unprocessable Entity.
|
70
|
-
# On success, returns an OAuth2::Response object.
|
71
|
-
def api_call(http_method, url, options = {})
|
72
|
-
version = options.delete(:api_version)
|
73
|
-
unless version.blank?
|
74
|
-
options[:headers] ||= {}
|
75
|
-
options[:headers].merge!({
|
76
|
-
'Accept' => "application/vnd.exchange.openstax.#{version.to_s}"
|
77
|
-
})
|
78
|
-
end
|
79
|
-
|
80
|
-
token_string = options.delete(:access_token)
|
81
|
-
token = token_string.blank? ? client.client_credentials.get_token :
|
82
|
-
OAuth2::AccessToken.new(client, token_string)
|
83
|
-
|
84
|
-
api_url = URI.join(configuration.openstax_exchange_url, 'api/', url)
|
85
|
-
|
86
|
-
token.request(http_method, api_url, options)
|
87
|
-
end
|
88
|
-
|
89
|
-
# Performs an event search in the Exchange server.
|
90
|
-
# Results are limited to events created by this app.
|
91
|
-
# Takes a query parameter and an optional API version parameter.
|
92
|
-
# API version currently defaults to :v1 (may change in the future).
|
93
|
-
# On failure, throws an Exception, just like api_call.
|
94
|
-
# On success, returns an OAuth2::Response object.
|
95
|
-
def search_events(query, version = DEFAULT_API_VERSION)
|
96
|
-
options = {:params => {:q => query},
|
97
|
-
:api_version => version}
|
98
|
-
api_call(:get, 'events', options)
|
99
|
-
end
|
100
|
-
|
101
|
-
protected
|
102
|
-
|
103
|
-
def client
|
104
|
-
@client ||= OAuth2::Client.new(configuration.openstax_exchange_platform_id,
|
105
|
-
configuration.openstax_exchange_platform_secret,
|
106
|
-
:site => configuration.openstax_exchange_url)
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
end
|
112
|
-
end
|
1
|
+
require "openstax/exchange/version"
|
2
|
+
require "openstax/exchange/exchange"
|
3
|
+
require "openstax/exchange/configuration"
|
4
|
+
require "openstax/exchange/client_instance"
|
5
|
+
require "openstax/exchange/real_client/real_client"
|
6
|
+
require "openstax/exchange/fake_client/fake_client"
|
7
|
+
require "openstax/exchange/fake_client/configuration"
|
8
|
+
require "openstax/exchange/exceptions"
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://123:abc@localhost:3003/oauth/token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: grant_type=client_credentials
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept:
|
15
|
+
- ! '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
X-Frame-Options:
|
22
|
+
- SAMEORIGIN
|
23
|
+
X-Xss-Protection:
|
24
|
+
- 1; mode=block
|
25
|
+
X-Content-Type-Options:
|
26
|
+
- nosniff
|
27
|
+
Cache-Control:
|
28
|
+
- no-store
|
29
|
+
Pragma:
|
30
|
+
- no-cache
|
31
|
+
Content-Type:
|
32
|
+
- application/json; charset=utf-8
|
33
|
+
Etag:
|
34
|
+
- W/"030ffc34c73241d72d05aca483ddd03f"
|
35
|
+
X-Request-Id:
|
36
|
+
- f9eeabfc-3bbc-4194-9f5e-5933e57c1220
|
37
|
+
X-Runtime:
|
38
|
+
- '0.015146'
|
39
|
+
Connection:
|
40
|
+
- close
|
41
|
+
Server:
|
42
|
+
- thin
|
43
|
+
body:
|
44
|
+
encoding: US-ASCII
|
45
|
+
string: ! '{"access_token":"42ad7558a7079e5ffe21572066a090693e5da796fcd64c762ef24c74de196f82","token_type":"bearer"}'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Mon, 12 Jan 2015 21:08:51 GMT
|
48
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://123:abc@localhost:3003/oauth/token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: grant_type=client_credentials
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept:
|
15
|
+
- ! '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
X-Frame-Options:
|
22
|
+
- SAMEORIGIN
|
23
|
+
X-Xss-Protection:
|
24
|
+
- 1; mode=block
|
25
|
+
X-Content-Type-Options:
|
26
|
+
- nosniff
|
27
|
+
Cache-Control:
|
28
|
+
- no-store
|
29
|
+
Pragma:
|
30
|
+
- no-cache
|
31
|
+
Content-Type:
|
32
|
+
- application/json; charset=utf-8
|
33
|
+
Etag:
|
34
|
+
- W/"57e1ddda4cd18e6de20628d2f695579f"
|
35
|
+
X-Request-Id:
|
36
|
+
- 849eb09a-9f9f-4c4b-86bc-91ee21d1788c
|
37
|
+
X-Runtime:
|
38
|
+
- '0.016357'
|
39
|
+
Connection:
|
40
|
+
- close
|
41
|
+
Server:
|
42
|
+
- thin
|
43
|
+
body:
|
44
|
+
encoding: US-ASCII
|
45
|
+
string: ! '{"access_token":"3540d986644ae0492996b05dc584a1ec545b66f14099d70a12e8914fad30651a","token_type":"bearer"}'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Mon, 12 Jan 2015 21:08:51 GMT
|
48
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://123:abc@localhost:3003/oauth/token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: grant_type=client_credentials
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept:
|
15
|
+
- ! '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
X-Frame-Options:
|
22
|
+
- SAMEORIGIN
|
23
|
+
X-Xss-Protection:
|
24
|
+
- 1; mode=block
|
25
|
+
X-Content-Type-Options:
|
26
|
+
- nosniff
|
27
|
+
Cache-Control:
|
28
|
+
- no-store
|
29
|
+
Pragma:
|
30
|
+
- no-cache
|
31
|
+
Content-Type:
|
32
|
+
- application/json; charset=utf-8
|
33
|
+
Etag:
|
34
|
+
- W/"8224c57e32a05bf41b410f079e81d6dd"
|
35
|
+
X-Request-Id:
|
36
|
+
- 1a70559c-c97b-4c33-9c33-e0ad700bfee7
|
37
|
+
X-Runtime:
|
38
|
+
- '0.015211'
|
39
|
+
Connection:
|
40
|
+
- close
|
41
|
+
Server:
|
42
|
+
- thin
|
43
|
+
body:
|
44
|
+
encoding: US-ASCII
|
45
|
+
string: ! '{"access_token":"46e1d7f015769193cfb7a5f5691ae601282010d0cfb540b745a810bd9749868f","token_type":"bearer"}'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Mon, 12 Jan 2015 21:08:51 GMT
|
48
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,146 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://123:abc@localhost:3003/oauth/token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: grant_type=client_credentials
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept:
|
15
|
+
- ! '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
X-Frame-Options:
|
22
|
+
- SAMEORIGIN
|
23
|
+
X-Xss-Protection:
|
24
|
+
- 1; mode=block
|
25
|
+
X-Content-Type-Options:
|
26
|
+
- nosniff
|
27
|
+
Cache-Control:
|
28
|
+
- no-store
|
29
|
+
Pragma:
|
30
|
+
- no-cache
|
31
|
+
Content-Type:
|
32
|
+
- application/json; charset=utf-8
|
33
|
+
Etag:
|
34
|
+
- W/"78a764ea7b6f5c5a842411f5857c9fca"
|
35
|
+
X-Request-Id:
|
36
|
+
- 167f3bf7-4087-4a93-a227-e9402d4f10e1
|
37
|
+
X-Runtime:
|
38
|
+
- '0.014904'
|
39
|
+
Connection:
|
40
|
+
- close
|
41
|
+
Server:
|
42
|
+
- thin
|
43
|
+
body:
|
44
|
+
encoding: US-ASCII
|
45
|
+
string: ! '{"access_token":"4b75ee3427beb3b486def357c3d7e6aa97ca948a8bfb7528c0a09913525795d9","token_type":"bearer"}'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Mon, 12 Jan 2015 21:08:52 GMT
|
48
|
+
- request:
|
49
|
+
method: post
|
50
|
+
uri: http://localhost:3003/api/identifiers
|
51
|
+
body:
|
52
|
+
encoding: US-ASCII
|
53
|
+
string: ''
|
54
|
+
headers:
|
55
|
+
User-Agent:
|
56
|
+
- Faraday v0.9.0
|
57
|
+
Accept:
|
58
|
+
- application/vnd.exchange.openstax.v1
|
59
|
+
Authorization:
|
60
|
+
- Bearer 4b75ee3427beb3b486def357c3d7e6aa97ca948a8bfb7528c0a09913525795d9
|
61
|
+
Content-Length:
|
62
|
+
- '0'
|
63
|
+
response:
|
64
|
+
status:
|
65
|
+
code: 201
|
66
|
+
message: Created
|
67
|
+
headers:
|
68
|
+
X-Frame-Options:
|
69
|
+
- SAMEORIGIN
|
70
|
+
X-Xss-Protection:
|
71
|
+
- 1; mode=block
|
72
|
+
X-Content-Type-Options:
|
73
|
+
- nosniff
|
74
|
+
Content-Type:
|
75
|
+
- application/json; charset=utf-8
|
76
|
+
Etag:
|
77
|
+
- W/"827945503ecf81b1c4c910bee932d933"
|
78
|
+
Cache-Control:
|
79
|
+
- max-age=0, private, must-revalidate
|
80
|
+
Set-Cookie:
|
81
|
+
- _exercises_session=c0cyWnNJeUZSUVQ1MVJ6QUdYUjJKakNSbFRweFQwdnovVms3dm42dDRqMFdSSTJwM2dVTU5GelFPNjhSRXdRVkQxYUlNN0Jpek5Nd2RtenlkNUV0VlE9PS0tdkxMWVV4dUgvVFd3YzFTZzJkNUFXQT09--10f51958af22134ccfe27073cd381c0faf434a35;
|
82
|
+
path=/; HttpOnly
|
83
|
+
- request_method=POST; path=/
|
84
|
+
X-Request-Id:
|
85
|
+
- 4911b91c-7fb5-49ec-9f91-0772d50ef84c
|
86
|
+
X-Runtime:
|
87
|
+
- '0.078438'
|
88
|
+
Connection:
|
89
|
+
- close
|
90
|
+
Server:
|
91
|
+
- thin
|
92
|
+
body:
|
93
|
+
encoding: US-ASCII
|
94
|
+
string: ! '{"identifier":"d8626248d8781ea4a079810bbc2414194335fdab7658b7ba2fab8986b80b7b05"}'
|
95
|
+
http_version:
|
96
|
+
recorded_at: Mon, 12 Jan 2015 21:08:52 GMT
|
97
|
+
- request:
|
98
|
+
method: post
|
99
|
+
uri: http://localhost:3003/api/identifiers
|
100
|
+
body:
|
101
|
+
encoding: US-ASCII
|
102
|
+
string: ''
|
103
|
+
headers:
|
104
|
+
User-Agent:
|
105
|
+
- Faraday v0.9.0
|
106
|
+
Accept:
|
107
|
+
- application/vnd.exchange.openstax.v1
|
108
|
+
Authorization:
|
109
|
+
- Bearer 4b75ee3427beb3b486def357c3d7e6aa97ca948a8bfb7528c0a09913525795d9
|
110
|
+
Content-Length:
|
111
|
+
- '0'
|
112
|
+
response:
|
113
|
+
status:
|
114
|
+
code: 201
|
115
|
+
message: Created
|
116
|
+
headers:
|
117
|
+
X-Frame-Options:
|
118
|
+
- SAMEORIGIN
|
119
|
+
X-Xss-Protection:
|
120
|
+
- 1; mode=block
|
121
|
+
X-Content-Type-Options:
|
122
|
+
- nosniff
|
123
|
+
Content-Type:
|
124
|
+
- application/json; charset=utf-8
|
125
|
+
Etag:
|
126
|
+
- W/"8d46bbfacc4812d2aafea6655fc6ea42"
|
127
|
+
Cache-Control:
|
128
|
+
- max-age=0, private, must-revalidate
|
129
|
+
Set-Cookie:
|
130
|
+
- _exercises_session=LzR6d09ZRE1CUjZlR2Jac1FpMlkzeDl2VWFNYTJyQ1NGeGkxWjRxVHdVS095ckpwUFZMcytxUFByOXVJOHoxUFR1d3ozSzNycFBYYVUrOEY3TVU3eVE9PS0tb29QaldpV2lkaWZEZHlRblZjQVBjdz09--c93e2fa442d933cb679336585b1670ebf60fdb09;
|
131
|
+
path=/; HttpOnly
|
132
|
+
- request_method=POST; path=/
|
133
|
+
X-Request-Id:
|
134
|
+
- dca250e2-9c45-4f64-b584-a0f8f264a3f3
|
135
|
+
X-Runtime:
|
136
|
+
- '0.040383'
|
137
|
+
Connection:
|
138
|
+
- close
|
139
|
+
Server:
|
140
|
+
- thin
|
141
|
+
body:
|
142
|
+
encoding: US-ASCII
|
143
|
+
string: ! '{"identifier":"c2e144cf2fa6db7fe45015b20fe117293a75d8c778204507095e03e8fa60ebf9"}'
|
144
|
+
http_version:
|
145
|
+
recorded_at: Mon, 12 Jan 2015 21:08:52 GMT
|
146
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,97 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://123:abc@localhost:3003/oauth/token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: grant_type=client_credentials
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept:
|
15
|
+
- ! '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
X-Frame-Options:
|
22
|
+
- SAMEORIGIN
|
23
|
+
X-Xss-Protection:
|
24
|
+
- 1; mode=block
|
25
|
+
X-Content-Type-Options:
|
26
|
+
- nosniff
|
27
|
+
Cache-Control:
|
28
|
+
- no-store
|
29
|
+
Pragma:
|
30
|
+
- no-cache
|
31
|
+
Content-Type:
|
32
|
+
- application/json; charset=utf-8
|
33
|
+
Etag:
|
34
|
+
- W/"f04b2cfc92d51ad3cc0806eeea34ae39"
|
35
|
+
X-Request-Id:
|
36
|
+
- 0ade458e-d6b6-47ff-88af-36a192d55ed4
|
37
|
+
X-Runtime:
|
38
|
+
- '0.029061'
|
39
|
+
Connection:
|
40
|
+
- close
|
41
|
+
Server:
|
42
|
+
- thin
|
43
|
+
body:
|
44
|
+
encoding: US-ASCII
|
45
|
+
string: ! '{"access_token":"bcf348f1e3d1b3422422671a2c940d59351bad44b3b95ed3b2296c16f57675a2","token_type":"bearer"}'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Mon, 12 Jan 2015 21:08:52 GMT
|
48
|
+
- request:
|
49
|
+
method: post
|
50
|
+
uri: http://localhost:3003/api/identifiers
|
51
|
+
body:
|
52
|
+
encoding: US-ASCII
|
53
|
+
string: ''
|
54
|
+
headers:
|
55
|
+
User-Agent:
|
56
|
+
- Faraday v0.9.0
|
57
|
+
Accept:
|
58
|
+
- application/vnd.exchange.openstax.v1
|
59
|
+
Authorization:
|
60
|
+
- Bearer bcf348f1e3d1b3422422671a2c940d59351bad44b3b95ed3b2296c16f57675a2
|
61
|
+
Content-Length:
|
62
|
+
- '0'
|
63
|
+
response:
|
64
|
+
status:
|
65
|
+
code: 201
|
66
|
+
message: Created
|
67
|
+
headers:
|
68
|
+
X-Frame-Options:
|
69
|
+
- SAMEORIGIN
|
70
|
+
X-Xss-Protection:
|
71
|
+
- 1; mode=block
|
72
|
+
X-Content-Type-Options:
|
73
|
+
- nosniff
|
74
|
+
Content-Type:
|
75
|
+
- application/json; charset=utf-8
|
76
|
+
Etag:
|
77
|
+
- W/"0ca26961ce9d51f60f5a467cfe7ba4c2"
|
78
|
+
Cache-Control:
|
79
|
+
- max-age=0, private, must-revalidate
|
80
|
+
Set-Cookie:
|
81
|
+
- _exercises_session=TnZoWHNTaWdjZmJJUXg2VHdOdERvcTA5a2R6WURqQkJub1FMYlZYdEpKZ3hCQjJiekx2ZVdDL2ZBcWMwOW53Y3lFVHYzWHJYTFlhdW02MUVKMXdZY2c9PS0tQ1VnN1EzSmxad1BjY1d5UVNHR29xdz09--e0ce290be622c8641bdc4072f45e8f23b596a233;
|
82
|
+
path=/; HttpOnly
|
83
|
+
- request_method=POST; path=/
|
84
|
+
X-Request-Id:
|
85
|
+
- 15464bd1-b133-4c40-9e36-17a4b3a43ebc
|
86
|
+
X-Runtime:
|
87
|
+
- '0.047932'
|
88
|
+
Connection:
|
89
|
+
- close
|
90
|
+
Server:
|
91
|
+
- thin
|
92
|
+
body:
|
93
|
+
encoding: US-ASCII
|
94
|
+
string: ! '{"identifier":"e4b89fa467a1f56272ab3d4440cd784b9a8eaa377f55997c74a452c3e084bf69"}'
|
95
|
+
http_version:
|
96
|
+
recorded_at: Mon, 12 Jan 2015 21:08:52 GMT
|
97
|
+
recorded_with: VCR 2.9.3
|