hubble_observatory 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27650ed552aa23d7948ec0ffc6d28252bf691d9c
4
- data.tar.gz: af1c410a1aad8a0c7251028bfa7d4de083321c21
3
+ metadata.gz: 6f06b9d11add7467d2c7e71ef80ec058425eab3e
4
+ data.tar.gz: 87f023ed808ea3c9b7251a7d72d8b6472491751f
5
5
  SHA512:
6
- metadata.gz: 4d3af169ab0f4e11347538f9bda08abc04141365532bf6b81ff2f5148e82f7c488b6beccb54a11ebbb56d9c9c0ca2b132b6453feeedf3d46250499e6959f989a
7
- data.tar.gz: cbb848f023f738c390240af16159aaea02d5a91b8ecbe4181ad0070c6d3704251e0e370f34f7bac85408a36e1ce8afbd3bac9e93a24c9af382e826b9b04c04a6
6
+ metadata.gz: 8903f5084cbf6394de3f63dd90d0885f976fcfc7e6a6f172ca1f254780f78092ebea987855fb00fad3f728cc64c009e7fa2e6618a5dd1cc2929a41e3e238f7e3
7
+ data.tar.gz: 665e0b018980a3271e652fb45e92f5264b5e8f5cb2b5b71e6001da48d9e84591788a5a35786f829c21cbfa5540ce82654e5cace509c780c42f05ce1105b45816
data/CHANGELOG.md CHANGED
@@ -6,7 +6,11 @@ For more information about changelogs, check
6
6
  [Keep a Changelog](http://keepachangelog.com) and
7
7
  [Vandamme](http://tech-angels.github.io/vandamme).
8
8
 
9
- ## 0.1.0 - 2017-06-02
9
+ ## 1.1.0 - 2017-06-02
10
+
11
+ * [FEATURE] Add `FsEmployee#create`
12
+
13
+ ## 1.0.0 - 2017-06-02
10
14
 
11
15
  * [FEATURE] Add `TalentAccount#create`
12
16
  * [FEATURE] Add `TalentAccount#update`
data/README.md CHANGED
@@ -69,6 +69,14 @@ talent_account = HubbleObservatory::TalentAccount.new id: '123456'
69
69
  talent_account.update email: 'newuser@example.com'
70
70
  # => '123456'
71
71
  ```
72
+ ### FsEmployee#create
73
+
74
+ Obtain the token of a employee given the appropriate access token:
75
+
76
+ ```ruby
77
+ HubbleObservatory::FsEmployee.create access_token: 'ya.29defg'
78
+ # => 'hb.484562'
79
+ ```
72
80
 
73
81
  ## How to develop and contribute
74
82
 
@@ -6,8 +6,8 @@ require 'hubble_observatory/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "hubble_observatory"
8
8
  spec.version = HubbleObservatory::VERSION
9
- spec.authors = ["Bruce Park"]
10
- spec.email = ["bruce.park@fullscreen.net"]
9
+ spec.authors = ["Bruce Park", "Claudio Baccigalupo"]
10
+ spec.email = ["bruce.park@fullscreen.net", "claudio@fullscreen.net"]
11
11
 
12
12
  spec.summary = %q{A client gem for the Hubble API}
13
13
  spec.description = %q{A client gem for the Hubble API}
@@ -0,0 +1,14 @@
1
+ module HubbleObservatory
2
+ # Provides methods to interact with the Hubble API fs-employees endpoint
3
+ # @see https://hubble.fullscreen.net/api/docs#fsemployees-getting-jwt-token
4
+ class FsEmployee
5
+ # @return [String] the token associated with the employee
6
+ def self.create(access_token:)
7
+ request = HubbleObservatory::Request.new(attrs: {request_type: :get, route: "fs-employees/jwt-token", query_params: { access_token: access_token}, include_auth_header: false} )
8
+ response= request.run_request
9
+ if response && response[:data]
10
+ response[:data][:attributes][:jwt_token]
11
+ end
12
+ end
13
+ end
14
+ end
@@ -12,16 +12,17 @@ module HubbleObservatory
12
12
  def initialize(attrs: {})
13
13
  @request_type = attrs.fetch :request_type, :get
14
14
  @route = attrs.fetch :route, "talent-accounts"
15
+ @query_params = attrs.fetch :query_params, {}
15
16
  @body_attrs = attrs.fetch :body_attrs, nil
16
- @error_message = attrs.fetch :error_message, ->(body) {"Error: #{body}"}
17
+ @request_format = attrs.fetch :request_format, :json
18
+ @auth_header = attrs.fetch :auth_header, false
17
19
  end
18
20
 
19
21
  # Sends the request and returns the response
20
22
  def run_request
21
- net_http_class = Object.const_get("Net::HTTP::#{@request_type.capitalize}")
22
- request = net_http_class.new uri
23
- request.body = serialize_attributes(attributes: @body_attrs).to_json
24
- response_for(assign_headers(request), uri)
23
+ if response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPUnprocessableEntity)
24
+ parse(response)
25
+ end
25
26
  end
26
27
 
27
28
  # parse the JSON response body
@@ -41,27 +42,48 @@ module HubbleObservatory
41
42
  end
42
43
 
43
44
  def uri
44
- @uri ||= URI::HTTPS.build host: host, path: "/api/v1/#{@route}"
45
+ @uri ||= URI::HTTPS.build host: host, path: "/api/v1/#{@route}", query: URI.encode_www_form(@query_params)
45
46
  end
46
47
 
47
- def response_for(http_request, uri)
48
+ def response
48
49
  Net::HTTP.start(uri.host, 443, use_ssl: true) do |http|
49
- http.request http_request
50
+ http.request create_http_request
50
51
  end
51
52
  rescue *ConnectionError.errors => e
52
53
  raise ConnectionError, e.message
53
54
  end
54
55
 
55
- def assign_headers(request)
56
- headers.each_key do |header|
57
- request[header] = headers[header]
56
+ def create_http_request
57
+ net_http_class = Object.const_get("Net::HTTP::#{@request_type.capitalize}")
58
+ @http_request ||= net_http_class.new(uri.request_uri).tap do |request|
59
+ assign_request_body request
60
+ assign_request_headers request
61
+ end
62
+ end
63
+
64
+ def assign_request_body(request)
65
+ if @body_attrs
66
+ request.body = serialize_attributes(attributes: @body_attrs).to_json
67
+ end
68
+ end
69
+
70
+ def assign_request_headers(request)
71
+ http_headers = default_headers
72
+ if @auth_header
73
+ http_headers.merge!(authorization_header)
74
+ end
75
+ http_headers.each_key do |header|
76
+ request[header] = http_headers[header]
58
77
  end
59
78
  request
60
79
  end
61
80
 
62
- def headers
63
- {"Authorization" => "Bearer #{ENV['HUBBLE_APP_TOKEN']}",
64
- "Content-Type" => "application/vnd.api+json"}
81
+ def default_headers
82
+ {"Content-Type" => "application/vnd.api+json"}
83
+ end
84
+
85
+ def authorization_header
86
+ {"Authorization" => "Bearer #{ENV['HUBBLE_APP_TOKEN']}"}
65
87
  end
66
88
 
67
89
  def host
@@ -9,24 +9,24 @@ module HubbleObservatory
9
9
 
10
10
  # @return [String] the hubble uuid associated with the email
11
11
  def self.create(email:)
12
- request = HubbleObservatory::Request.new(attrs: {body_attrs: {email: email}, request_type: :post})
13
- @response= request.run_request
14
- data = request.parse(@response)
15
- process_account_data(data)
12
+ request = HubbleObservatory::Request.new(attrs: {body_attrs: {email: email}, request_type: :post, auth_header: true})
13
+ @response = request.run_request
14
+ process_account_data(@response)
16
15
  end
17
16
 
18
17
  # @return [String] the hubble uuid associated with the email
19
18
  def update(email:)
20
- request = HubbleObservatory::Request.new(attrs: {body_attrs: {email: email}, route: "talent-accounts/#{@hubble_uuid}", request_type: :put})
19
+ request = HubbleObservatory::Request.new(attrs: {body_attrs: {email: email}, route: "talent-accounts/#{@hubble_uuid}", request_type: :put, auth_header: true})
21
20
  @response = request.run_request
22
- data = request.parse(@response)
23
- self.class.process_account_data(data)
21
+ self.class.process_account_data(@response)
24
22
  end
25
23
 
26
24
  private
27
25
 
28
26
  def self.process_account_data(account_data)
29
- extract_attribute_from_data(data: account_data, attribute: :id) || extract_uuid_from_errors(data: account_data)
27
+ if account_data
28
+ extract_attribute_from_data(data: account_data, attribute: :id) || extract_uuid_from_errors(data: account_data)
29
+ end
30
30
  end
31
31
 
32
32
  def self.extract_attribute_from_data(data:, attribute:)
@@ -1,4 +1,4 @@
1
1
  module HubbleObservatory
2
2
  # current version of gem
3
- VERSION = '1.0.0'
3
+ VERSION = '1.1.0'
4
4
  end
@@ -3,4 +3,5 @@ require "json"
3
3
  require "openssl"
4
4
  require "hubble_observatory/request"
5
5
  require "hubble_observatory/talent_account"
6
+ require "hubble_observatory/fs_employee"
6
7
  require "hubble_observatory/errors"
metadata CHANGED
@@ -1,10 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hubble_observatory
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruce Park
8
+ - Claudio Baccigalupo
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
@@ -97,6 +98,7 @@ dependencies:
97
98
  description: A client gem for the Hubble API
98
99
  email:
99
100
  - bruce.park@fullscreen.net
101
+ - claudio@fullscreen.net
100
102
  executables: []
101
103
  extensions: []
102
104
  extra_rdoc_files: []
@@ -115,6 +117,7 @@ files:
115
117
  - hubble_observatory.gemspec
116
118
  - lib/hubble_observatory.rb
117
119
  - lib/hubble_observatory/errors.rb
120
+ - lib/hubble_observatory/fs_employee.rb
118
121
  - lib/hubble_observatory/request.rb
119
122
  - lib/hubble_observatory/talent_account.rb
120
123
  - lib/hubble_observatory/version.rb