1// Copyright 2016-2020 The Libsacloud Authors 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package api 16 17import ( 18 "encoding/json" 19 20 "github.com/sacloud/libsacloud/sacloud" 21) 22 23// NewsFeedAPI フィード(障害/メンテナンス情報)API 24type NewsFeedAPI struct { 25 client *Client 26} 27 28// NewsFeedURL フィード取得URL 29var NewsFeedURL = "https://secure.sakura.ad.jp/rss/sakuranews/getfeeds.php?service=cloud&format=json" 30 31// NewNewsFeedAPI フィード(障害/メンテナンス情報)API 32func NewNewsFeedAPI(client *Client) *NewsFeedAPI { 33 return &NewsFeedAPI{ 34 client: client, 35 } 36} 37 38// GetFeed フィード全件取得 39func (api *NewsFeedAPI) GetFeed() ([]sacloud.NewsFeed, error) { 40 41 var res = []sacloud.NewsFeed{} 42 data, err := api.client.newRequest("GET", NewsFeedURL, nil) 43 if err != nil { 44 return res, err 45 } 46 47 if err := json.Unmarshal(data, &res); err != nil { 48 return nil, err 49 } 50 return res, nil 51} 52 53// GetFeedByURL 指定のURLを持つフィードを取得 54func (api *NewsFeedAPI) GetFeedByURL(url string) (*sacloud.NewsFeed, error) { 55 res, err := api.GetFeed() 56 if err != nil { 57 return nil, err 58 } 59 for _, r := range res { 60 if r.URL == url { 61 return &r, nil 62 } 63 } 64 return nil, nil 65} 66