Приклади з API на Ruby

Публікуємо приклади додатків, що використовують API і написані на Ruby в академічних цілях.

Ось декілька прикладів додатків, що використовують API і написані на Ruby:

  1. Twitter Bot:

    • Опис: Цей додаток може використовувати API Twitter для автоматизації завдань, таких як твітти, ретвіти, відповіді та інше.
    • Бібліотеки: twitter gem.
    require 'twitter'
    
    client = Twitter::REST::Client.new do |config|
      config.consumer_key        = "YOUR_CONSUMER_KEY"
      config.consumer_secret     = "YOUR_CONSUMER_SECRET"
      config.access_token        = "YOUR_ACCESS_TOKEN"
      config.access_token_secret = "YOUR_ACCESS_SECRET"
    end
    
    client.update('Hello, Twitter!')
    
  2. GitHub Repository Manager:

    • Опис: Додаток для керування репозиторіями на GitHub, включаючи створення, видалення репозиторіїв та інше.
    • Бібліотеки: octokit gem.
    require 'octokit'
    
    client = Octokit::Client.new(:access_token => "YOUR_GITHUB_ACCESS_TOKEN")
    
    user = client.user
    user.login
    
    # Create a new repository
    client.create_repository('new-repo')
    
  3. Weather App:

    • Опис: Додаток для отримання прогнозу погоди за допомогою API OpenWeatherMap.
    • Бібліотеки: httparty gem.
    require 'httparty'
    
    api_key = 'YOUR_API_KEY'
    city = 'Kyiv'
    response = HTTParty.get("http://api.openweathermap.org/data/2.5/weather?q=#{city}&appid=#{api_key}&units=metric")
    
    if response.success?
      weather_data = response.parsed_response
      puts "The weather in #{city} is #{weather_data['weather'][0]['description']} with a temperature of #{weather_data['main']['temp']}°C"
    else
      puts "Failed to retrieve weather data"
    end
    
  4. Slack Notification Bot:

    • Опис: Додаток для відправки повідомлень до каналу Slack через Slack API.
    • Бібліотеки: slack-notifier gem.
    require 'slack-notifier'
    
    notifier = Slack::Notifier.new "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK" do
      defaults channel: "#general",
               username: "notifier"
    end
    
    notifier.ping "Hello, Slack!"
    
  5. Google Sheets Integration:

    • Опис: Додаток для читання та запису даних у Google Sheets за допомогою Google Sheets API.
    • Бібліотеки: google_drive gem.
    require 'google_drive'
    
    # Authorize with Google
    session = GoogleDrive::Session.from_config("config.json")
    
    # Open a spreadsheet by its title
    spreadsheet = session.spreadsheet_by_title("My Spreadsheet")
    worksheet = spreadsheet.worksheets.first
    
    # Read and write data
    worksheet[2, 1] = "Hello, world!"
    worksheet.save
    

Ці приклади демонструють, як можна використовувати різні API за допомогою Ruby, для автоматизації різних завдань, інтеграції з популярними сервісами та роботи з даними.

YouTube Data API

YouTube Data API дозволяє взаємодіяти з YouTube, включаючи отримання інформації про відео, плейлисти та канали.

Встановлення необхідного гема

gem 'google-api-client', '~> 0.53.0'

require 'google/apis/youtube_v3'

# Налаштування клієнта
service = Google::Apis::YoutubeV3::YouTubeService.new
service.key = 'YOUR_API_KEY'

# Виконання запиту
response = service.list_videos('snippet', chart: 'mostPopular', max_results: 5)

response.items.each do |item|
  puts "Title: #{item.snippet.title}, Channel: #{item.snippet.channel_title}"
end

Stripe API

Stripe API дозволяє здійснювати платежі та керувати фінансовими транзакціями.

Встановлення необхідного гема

gem 'stripe', '~> 5.40'

require 'stripe'

Stripe.api_key = 'YOUR_SECRET_KEY'

# Створення клієнта
customer = Stripe::Customer.create({
  email: 'customer@example.com',
  source: 'tok_visa',
})

# Створення платежу
charge = Stripe::Charge.create({
  customer: customer.id,
  amount: 2000,
  currency: 'usd',
  description: 'Example charge',
})

puts "Charge ID: #{charge.id}, Amount: #{charge.amount}"

OpenAI API - дозволяє взаємодіяти з моделями штучного інтелекту, такими як GPT-3.

Встановити гем

gem 'openai'

require 'openai'

client = OpenAI::Client.new(access_token: 'YOUR_API_KEY')

response = client.completions(
  parameters: {
    model: "text-davinci-003",
    prompt: "Write a poem about Ruby programming.",
    max_tokens: 100
  }
)

puts response['choices'].first['text']