Sha256: 91ed8ab7db01dea435d7dff02d4b93ad87a4ddbf504e3a7b29330cb360d0ce51

Contents?: true

Size: 1.5 KB

Versions: 2

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

require 'addressable/uri'
require 'faraday'

module Spearly
  module Auth
    class User
      attr_reader :data

      def initialize(token)
        @token = token
      end

      def method_missing(name, *_args)
        @data[name.to_s]
      end

      def respond_to_missing?(_name, *_args)
        true
      end

      def find
        user_profile_uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/profile"
        url = Addressable::URI.parse(user_profile_uri).normalize.to_s
        client = Faraday.default_connection

        res = client.get(url,
                         nil,
                         'Accept' => 'application/vnd.spearly.v2+json',
                         'Authorization' => @token)

        return unless res.status == 200

        @data = JSON.parse(res.body)['data']
      end

      def teams
        teams_uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams"
        url = Addressable::URI.parse(teams_uri).normalize.to_s
        client = Faraday.default_connection

        res = client.get(url,
                         nil,
                         'Accept' => 'application/vnd.spearly.v2+json',
                         'Authorization' => @token)

        return [] unless res.status == 200

        team_hashes = JSON.parse(res.body)['data']

        team_hashes.map do |team_hash|
          Spearly::Auth::Team.new(team_hash)
        end
      end

      def to_json(*_args)
        @data.to_json
      end

      def as_json
        @data.as_json
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
spearly-sdk-ruby-0.10.0 lib/spearly/auth/user.rb
spearly-sdk-ruby-0.9.0 lib/spearly/auth/user.rb