Module: InstagramConnect

Defined in:
lib/instagram_connect.rb,
lib/instagram_connect/cli.rb,
lib/instagram_connect/auth.rb,
lib/instagram_connect/usage.rb,
lib/instagram_connect/client.rb,
lib/instagram_connect/doctor.rb,
lib/instagram_connect/engine.rb,
lib/instagram_connect/errors.rb,
lib/instagram_connect/ingest.rb,
lib/instagram_connect/result.rb,
lib/instagram_connect/connect.rb,
lib/instagram_connect/railtie.rb,
lib/instagram_connect/version.rb,
lib/instagram_connect/media/limits.rb,
lib/instagram_connect/rate_limiter.rb,
lib/instagram_connect/auth/strategy.rb,
lib/instagram_connect/configuration.rb,
lib/instagram_connect/text_splitter.rb,
app/models/instagram_connect/account.rb,
app/models/instagram_connect/comment.rb,
app/models/instagram_connect/mention.rb,
app/models/instagram_connect/message.rb,
lib/instagram_connect/ingest/summary.rb,
app/jobs/instagram_connect/ingest_job.rb,
lib/instagram_connect/ingest/envelope.rb,
lib/instagram_connect/ingest/registry.rb,
lib/instagram_connect/media/attaching.rb,
lib/instagram_connect/messaging_window.rb,
app/models/instagram_connect/api_budget.rb,
app/models/instagram_connect/media_item.rb,
lib/instagram_connect/ingest/dispatcher.rb,
lib/instagram_connect/signature_verifier.rb,
app/models/instagram_connect/conversation.rb,
lib/instagram_connect/auth/facebook_login.rb,
app/jobs/instagram_connect/application_job.rb,
app/jobs/instagram_connect/fetch_media_job.rb,
app/models/instagram_connect/webhook_event.rb,
lib/instagram_connect/auth/instagram_login.rb,
lib/instagram_connect/ingest/handlers/base.rb,
app/jobs/instagram_connect/profile_sync_job.rb,
app/jobs/instagram_connect/send_message_job.rb,
app/jobs/instagram_connect/replay_events_job.rb,
app/models/instagram_connect/inbound_message.rb,
app/jobs/instagram_connect/refresh_tokens_job.rb,
app/models/instagram_connect/insight_snapshot.rb,
app/models/instagram_connect/message_reaction.rb,
lib/instagram_connect/ingest/handlers/unknown.rb,
lib/instagram_connect/ingest/handlers/comments.rb,
lib/instagram_connect/ingest/handlers/mentions.rb,
lib/instagram_connect/ingest/handlers/messages.rb,
app/models/instagram_connect/application_record.rb,
app/models/instagram_connect/message_attachment.rb,
app/helpers/instagram_connect/application_helper.rb,
app/jobs/instagram_connect/account_readiness_job.rb,
lib/generators/instagram_connect/views_generator.rb,
app/jobs/instagram_connect/sync_conversations_job.rb,
app/controllers/instagram_connect/oauth_controller.rb,
app/controllers/instagram_connect/posts_controller.rb,
lib/instagram_connect/ingest/handlers/messaging_seen.rb,
lib/instagram_connect/ingest/handlers/story_insights.rb,
app/controllers/instagram_connect/comments_controller.rb,
app/controllers/instagram_connect/messages_controller.rb,
app/controllers/instagram_connect/webhooks_controller.rb,
lib/generators/instagram_connect/controllers_generator.rb,
lib/instagram_connect/ingest/handlers/messaging_optins.rb,
lib/instagram_connect/ingest/handlers/message_reactions.rb,
app/controllers/instagram_connect/application_controller.rb,
lib/instagram_connect/ingest/handlers/messaging_handover.rb,
lib/instagram_connect/ingest/handlers/messaging_referral.rb,
lib/instagram_connect/ingest/handlers/messaging_postbacks.rb,
app/controllers/instagram_connect/conversations_controller.rb,
lib/generators/instagram_connect/install/install_generator.rb

Overview

InstagramConnect connects a Rails app to Instagram over the official Meta Graph API: receive and reply to DMs and comments in real time via HMAC-verified webhooks, publish posts, and manage OAuth tokens.

InstagramConnect.configure do |c|
c.auth_path   = :facebook_login
c.app_id      = Rails.application.credentials.dig(:instagram_connect, :app_id)
c.app_secret  = Rails.application.credentials.dig(:instagram_connect, :app_secret)
c.verify_token = Rails.application.credentials.dig(:instagram_connect, :verify_token)
end

Defined Under Namespace

Modules: ApplicationHelper, Auth, Generators, Media, RateLimiter, SignatureVerifier, TextSplitter Classes: Account, AccountReadinessJob, ApiBudget, ApiError, ApplicationController, ApplicationJob, ApplicationRecord, CLI, Client, Comment, CommentsController, Configuration, ConfigurationError, Connect, Conversation, ConversationsController, Doctor, Engine, Error, FetchMediaJob, InboundMessage, Ingest, IngestJob, InsightSnapshot, MediaItem, Mention, Message, MessageAttachment, MessageReaction, MessagesController, MessagingWindow, OauthController, PostsController, ProfileSyncJob, Railtie, RefreshTokensJob, ReplayEventsJob, Result, SendMessageJob, SignatureError, SyncConversationsJob, Usage, WebhookEvent, WebhooksController

Constant Summary collapse

TABLES =

Every table the gem's migrations own, in dependency order (parents first). Hosts use it to audit what the engine added to their schema; the suite uses it to assert the migrations actually built what the models expect.

%w[
  instagram_connect_accounts
  instagram_connect_conversations
  instagram_connect_messages
  instagram_connect_inbound_messages
  instagram_connect_comments
  instagram_connect_webhook_events
  instagram_connect_message_reactions
  instagram_connect_message_attachments
  instagram_connect_media
  instagram_connect_mentions
  instagram_connect_insight_snapshots
  instagram_connect_api_budgets
].freeze
VERSION =
"0.3.2"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject



52
53
54
# File 'lib/instagram_connect.rb', line 52

def configuration
  @configuration ||= Configuration.new
end

Class Method Details

.base_cssObject

The gem's base stylesheet, inlined into its layout so the UI is styled with no host asset-pipeline setup required.



70
71
72
73
74
# File 'lib/instagram_connect.rb', line 70

def base_css
  @base_css ||= File.read(
    File.expand_path("../app/assets/stylesheets/instagram_connect/application.css", __dir__)
  )
end

.configure {|configuration| ... } ⇒ Object

Yields:



58
59
60
61
62
# File 'lib/instagram_connect.rb', line 58

def configure
  yield(configuration)
  configuration.validate!
  configuration
end

.reset!Object



64
65
66
# File 'lib/instagram_connect.rb', line 64

def reset!
  @configuration = Configuration.new
end