Gramophone 1.1

Gramophone 1.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2017年10月
SwiftSwift 版本4.0
SPM支持 SPM

Jared Verdi 维护。



 
依赖关系
结果~> 3.2
Decodable~> 0.6
 







Gramophone是一个用于与Instagram REST API交互的框架,用Swift编写。

它包括通过OAuth进行认证,以及异步调用Instagram全部公开API端点的功能。

响应将被解析为具体的模型对象和错误。

用法

设置客户端,提供您的Instagram的客户端ID和重定向URI,以及任何需要的权限

import Gramophone

let configuration = ClientConfiguration(
    clientID: "{YOUR_INSTAGRAM_CLIENT_ID}", 
    redirectURI: "{YOUR_INSTAGRAM_REDIRECT_URI}", 
    scopes: [.basic, .publicContent, .comments]
)
let gramophone = Gramophone(configuration: configuration)

使用OAuth(使用内置的WKWebView控制器)进行认证

gramophone.client.authenticate(from: presentingViewController) { result in
    switch result {
    case .success(let response):
        print("Authenticated")

    case .failure(let error):
        print("Failed to authenticate: \(error.localizedDescription)")
    }
}

使用API包装器方法请求数据

gramophone.client.myRecentMedia(options: nil) { mediaResult in
    switch mediaResult {
    case .success(let response):
        let mediaItems = response.data.items
        for media in mediaItems {
	    if let images = media.images, let rendition = images[.thumbnail] {
	        print("Media [ID: \(media.ID), url: \(rendition.url)]")
	    }
        }
    case .failure(let error):
        print("Failed to load media: \(error.localizedDescription)")
    }
}

有关可用的API方法的全列表,请参阅资源目录

API包装器 方法 Instagram文档
认证
  • authenticate(from:) => String
文档
评论
  • comments(mediaID:) => Array<Comment>
  • postComment(_:mediaID:) => NoData
  • deleteComment(mediaID:commentID:) => NoData
文档
点赞
  • likes(mediaID:) => <Array<Like>>
  • like(mediaID:) => NoData
  • unlike(mediaID:) => NoData
文档
位置
  • location(ID:) => Location
  • locationRecentMedia(ID:options:) => Array<Media>
  • locations(latitude:longitude:distanceInMeters:) => Array<Location>
文档
媒体
  • media(withID:) => Media
  • media(withShortcode:) => Media
  • media(latitude:longitude:distanceInMeters:) => Array<Media>
文档
OEmbed
  • oembed(url:) => EmbedMedia
文档
关系
  • myFollows() => Array<User>
  • myFollowers() => Array<User>
  • myRequests() => Array<User>
  • relationship(withUserID:) => IncomingRelationship
  • followUser(withID:) => OutgoingRelationship
  • unfollowUser(withID:) => OutgoingRelationship
  • approveUser(withID:) => IncomingRelationship
  • ignoreUser(withID:) => IncomingRelationship
文档
标签
  • tag(name:) => Tag
  • tagRecentMedia(name:options:) => Array<Media>
  • tags(query:options:) => Array<Tag>
文档
用户
  • me() => User
  • user(withID:) => User
  • myRecentMedia(options:) => Array<Media>
  • userRecentMedia(withID:options:) => Array<Media>
  • myLikedMedia(options:) => Array<Media>
  • users(query:options:) => Array<User>
文档

依赖关系

Gramophone利用了DecodableResult库。

许可证

Gramophone采用MIT许可证发布。有关详细信息,请参阅LICENSE

图标由Gan Khoon Lay从Noun Project创建