frameio 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c82ca404c2e6aad48ce1c3a827b9b5f697779c4419994f2d139ce854114484d3
4
+ data.tar.gz: 2170b585dc62fce437a66ebf080df32faa2296f8ca647476e8aa69bc92557cd9
5
+ SHA512:
6
+ metadata.gz: 3525b2a2d07abc7517b91c152fdcf31c123b565ad6451e19ebf9d152e26b02cb9c3df5f50331747c4849ac98299960e7b890506129a9d7985867a2775f2579c0
7
+ data.tar.gz: 5f58f0cf46f7726ac26d3db0b2f19c143645d6112e0b99c47c6efcb9c8d6411158df160d46ad9f1ec7311975309d4bc44257cb634270673d5c310f0d843420be
@@ -0,0 +1,37 @@
1
+ require "httparty"
2
+ require "addressable/uri"
3
+ require "uri"
4
+ require "ostruct"
5
+ # require "frameio/client"
6
+
7
+ # client_id = "e0ec793d-2b70-41b9-b038-762d22b76eb8"
8
+ # client_secret = "lsqRmdegl0_d"
9
+ module Frameio
10
+ # Call this method to modify defaults in your initializers.
11
+ #
12
+ # @example
13
+ # Frameio.configure do |config|
14
+ # config.client_id = "abc123"
15
+ # config.client_secret = "abc123"
16
+ # config.auth_redirect_url = "abc123"
17
+ # config.scope = "abc123"
18
+ # end
19
+ #
20
+ class << self
21
+ attr_accessor :configuration
22
+ end
23
+
24
+ def self.welcome
25
+ "Welcome to the Frameio ruby gem"
26
+ end
27
+
28
+ def self.configure
29
+ yield(configuration)
30
+ end
31
+ def self.configuration
32
+ @configuration ||= OpenStruct.new
33
+ end
34
+ end
35
+
36
+ require "frameio/auth"
37
+ require "frameio/client"
@@ -0,0 +1,57 @@
1
+ module Frameio
2
+ class Auth
3
+ include HTTParty
4
+ format :json
5
+
6
+ AUTH_URL = "https://applications.frame.io/oauth2/auth".freeze
7
+
8
+ def initialize
9
+ end
10
+
11
+ def create_auth_url(state: "default_state")
12
+ uri = Addressable::URI.new
13
+ uri.query_values = {
14
+ response_type: 'code',
15
+ redirect_uri: Frameio.configuration.auth_redirect_uri,
16
+ client_id: Frameio.configuration.client_id,
17
+ scope: Frameio.configuration.scope,
18
+ state: state
19
+ }
20
+ "#{AUTH_URL}?#{uri.query}"
21
+ end
22
+
23
+ def create_auth_token(auth_code:)
24
+ body = {
25
+ code: auth_code,
26
+ grant_type: "authorization_code",
27
+ redirect_uri: Frameio.configuration.auth_redirect_uri,
28
+ }
29
+ request(body)
30
+ end
31
+
32
+ def refresh_auth_token(frameio_token:)
33
+ body = {
34
+ grant_type: "refresh_token",
35
+ refresh_token: frameio_token.refresh_token
36
+ }
37
+ request(body)
38
+ end
39
+
40
+ private
41
+
42
+ def encoded_secret
43
+ client_id = Frameio.configuration.client_id
44
+ client_secret = Frameio.configuration.client_secret
45
+ Base64.strict_encode64("#{client_id}:#{client_secret}")
46
+ end
47
+
48
+ def request(body)
49
+ HTTParty.send(
50
+ :post,
51
+ "https://applications.frame.io/oauth2/token",
52
+ headers: { Authorization: "Basic #{encoded_secret}" },
53
+ body: body,
54
+ )
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,71 @@
1
+ require "json"
2
+ module Frameio
3
+ class Client
4
+ include HTTParty
5
+ format :json
6
+
7
+ attr_reader :token
8
+
9
+ def initialize(token)
10
+ @token = token
11
+ end
12
+
13
+ def create(request_path, body:)
14
+ request(:post, request_path, body)
15
+ end
16
+
17
+ def delete(request_path)
18
+ request(:delete, request_path)
19
+ end
20
+
21
+ def get(request_path)
22
+ request(:get, request_path)
23
+ end
24
+
25
+ def update(request_path, body:)
26
+ request(:put, request_path, body)
27
+ end
28
+
29
+ def to_query_string(query_values: {})
30
+ uri = Addressable::URI.new
31
+ uri.query_values = query_values
32
+ uri.query
33
+ end
34
+
35
+ def to_ostruct(hash)
36
+ OpenStruct.new(hash.each_with_object({}) do |(key, val), memo|
37
+ memo[key] = val.is_a?(Hash) ? to_ostruct(val) : val
38
+ end)
39
+ end
40
+
41
+ def auth_headers
42
+ {
43
+ Authorization: "Bearer #{access_token}"
44
+ }
45
+ end
46
+
47
+ private
48
+
49
+ def access_token
50
+ access_token = @token[:token]&.access_token if @token.methods.include? :access_token
51
+ access_token = @token[:token][:access_token] if @token.class.to_s == "Hash"
52
+ return access_token
53
+ if access_token.empty?
54
+ raise "Please supply a valid frameio token with an access_token attribute or method"
55
+ end
56
+ end
57
+
58
+ def base_url
59
+ "https://api.frame.io/v2"
60
+ end
61
+
62
+ def request(method, path, body: {})
63
+ if body.empty?
64
+ HTTParty.send(method, "#{base_url}""#{path}", headers: auth_headers)
65
+ else
66
+ HTTParty.send(method, "#{base_url}""#{path}", headers: auth_headers, body: body)
67
+ end
68
+ end
69
+
70
+ end
71
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: frameio
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Taylor Preston
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-06-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Frameio Ruby is a simple gem that wraps HTTParty and makes it easy to
14
+ hit the Frameio API.
15
+ email: taylor.preston.dev@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/frameio.rb
21
+ - lib/frameio/auth.rb
22
+ - lib/frameio/client.rb
23
+ homepage: http://rubygems.org/gems/frameio
24
+ licenses:
25
+ - MIT
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubygems_version: 3.0.8
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: A small ruby gem to help with your Frameio integration
46
+ test_files: []