Sha256: 1bbdb0fa00e469e331868edcbd7bc7ce986f6bcc427e58d1190d9d0900e43fe9

Contents?: true

Size: 1.55 KB

Versions: 4

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

module Pinata
  class Client
    API_VERSION = "v3"
    BASE_DOMAIN = "pinata.cloud"
    API_BASE_URL = "https://api.#{BASE_DOMAIN}/"
    API_URL = "#{API_BASE_URL}#{API_VERSION}/"
    UPLOADS_URL = "https://uploads.#{BASE_DOMAIN}/#{API_VERSION}/"

    attr_reader :pinata_jwt, :adapter

    def initialize(pinata_jwt:, adapter: Faraday.default_adapter, stubs: nil)
      @pinata_jwt = pinata_jwt
      @adapter = adapter

      # Test stubs for requests
      @stubs = stubs
    end

    def authentication
      AuthenticationResource.new(self)
    end

    def files
      FilesResource.new(self)
    end

    def test_connection
      @test_connection ||= Faraday.new(url: API_BASE_URL) do |conn|
        conn.request :authorization, :Bearer, pinata_jwt
        conn.response :json, content_type: "application/json"
        conn.adapter adapter, @stubs
      end
    end

    def upload_connection
      @upload_connection ||= Faraday.new(url: UPLOADS_URL) do |conn|
        conn.request :authorization, :Bearer, pinata_jwt
        conn.request :multipart
        conn.request :json
        conn.response :json, content_type: "application/json"
        conn.adapter adapter, @stubs
      end
    end

    def api_connection
      @api_connection ||= Faraday.new(url: API_URL) do |conn|
        conn.request :authorization, :Bearer, pinata_jwt
        conn.request :json
        conn.response :json, content_type: "application/json"
        conn.adapter adapter, @stubs
      end
    end

    def inspect
      "#<Pinata::Client>"
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pinata-1.0.3 lib/pinata/client.rb
pinata-1.0.2 lib/pinata/client.rb
pinata-1.0.1 lib/pinata/client.rb
pinata-1.0.0 lib/pinata/client.rb