class Specular::Integration::GitHub
Public Class Methods
new(github_token:, repo:)
click to toggle source
# File lib/specular/integration/github.rb, line 9 def initialize(github_token:, repo:) @https = GraphQL::Client::HTTP.new('https://api.github.com/graphql') do define_method(:headers) do |_context| { "User-Agent": "Specular/#{Specular.version}", "Authorization": "Bearer #{github_token}" } end end @repo = repo @schema = GraphQL::Client.load_schema(@https) @client = GraphQL::Client.new(schema: @schema, execute: @https) @client.allow_dynamic_queries = true end
Public Instance Methods
create_issue!(title:, body:)
click to toggle source
# File lib/specular/integration/github.rb, line 63 def create_issue!(title:, body:) result = @client.query( self.issue_mutation, variables: { input: { title: title, body: body, repositoryId: self.repository_id } } ) { url: result.data.create_issue.issue.url } end
issue_mutation()
click to toggle source
# File lib/specular/integration/github.rb, line 37 def issue_mutation @issue_mutation ||= @client.parse <<-'GRAPHQL' mutation ($input: CreateIssueInput!) { createIssue(input: $input) { issue { url } } } GRAPHQL end
repository_id()
click to toggle source
# File lib/specular/integration/github.rb, line 49 def repository_id owner, name = URI.parse(@repo).path.split('/')[1,2] result = @client.query( self.repository_query, variables: { name: name, owner: owner } ) result.data.repository.id end
repository_query()
click to toggle source
# File lib/specular/integration/github.rb, line 27 def repository_query @repository_query ||= @client.parse <<-'GRAPHQL' query ($name: String!, $owner: String!) { repository(name: $name, owner: $owner) { id } } GRAPHQL end